Sprachverarbeitung 100 Knock 2020 wurde veröffentlicht, daher werde ich es sofort versuchen. Kapitel 1 ist genau das gleiche wie 2015 (und genau das habe ich getan), also beginne ich mit Kapitel 2.
Einige Artikel wurden bereits in Qiita veröffentlicht, aber ich denke, dass der Anfang nicht nur für die Sprachverarbeitung nützlich ist, sondern auch für Linux-Anfänger und professionelle Anfänger.
popular-names.txt ist eine Datei, in der "Name", "Geschlecht", "Anzahl der Personen" und "Jahr" eines in den USA geborenen Babys in einem durch Tabulatoren getrennten Format gespeichert werden. Erstellen Sie ein Programm, das die folgende Verarbeitung ausführt, und führen Sie popular-names.txt als Eingabedatei aus. Führen Sie außerdem denselben Prozess mit einem UNIX-Befehl aus und überprüfen Sie das Ausführungsergebnis des Programms.
Zählen Sie die Anzahl der Zeilen. Verwenden Sie zur Bestätigung den Befehl wc.
Code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(len(df.index))
Befehl
wc -l popular-names.txt
Ersetzen Sie jede Registerkarte durch ein Leerzeichen. Verwenden Sie zur Bestätigung den Befehl sed, den Befehl tr oder den Befehl expand.
Code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
df.to_csv('popular-names-space.txt', sep=' ', index=False, header=None)
Befehl
sed -e $'s/\t/ /g' popular-names.txt > popular-names-space.txt
Speichern Sie nur die erste Spalte jeder Zeile als col1.txt und die zweite Spalte als col2.txt. Verwenden Sie zur Bestätigung den Befehl cut.
Code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
df[0].to_csv('col1.txt', index=False, header=None)
df[1].to_csv('col2.txt', index=False, header=None)
Befehl
cut -f 1 popular-names.txt > col1.txt
cut -f 2 popular-names.txt > col2.txt
Kombinieren Sie die in 12 erstellten Spalten col1.txt und col2.txt und erstellen Sie eine Textdatei, in der die erste und die zweite Spalte der Originaldatei durch Tabulatortrennzeichen angeordnet sind. Verwenden Sie zur Bestätigung den Befehl Einfügen.
Code
import pandas as pd
df1 = pd.read_csv('col1.txt', header=None)
df2 = pd.read_csv('col2.txt', header=None)
df_concat = pd.concat([df1, df2], axis=1)
df_concat.to_csv('col3.txt', sep='\t', index=False, header=None)
Befehl
paste col1.txt col2.txt > col3.txt
Empfangen Sie die natürliche Zahl N beispielsweise über ein Befehlszeilenargument und zeigen Sie nur die ersten N Zeilen der Eingabe an. Verwenden Sie zur Bestätigung den Befehl head.
Code
import pandas as pd
n = int(input())
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df.head(n))
Befehl
head -5 popular-names.txt
Empfangen Sie die natürliche Zahl N beispielsweise über ein Befehlszeilenargument und zeigen Sie nur die letzten N Zeilen der Eingabe an. Verwenden Sie zur Bestätigung den Befehl tail.
Code
import pandas as pd
n = int(input())
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df.tail(n))
Befehl
tail -5 popular-names.txt
Empfangen Sie die natürliche Zahl N mithilfe von Befehlszeilenargumenten und teilen Sie die Eingabedatei zeilenweise in N. Erzielen Sie die gleiche Verarbeitung mit dem Befehl split.
Code
import pandas as pd
n = int(input())
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
for i in range(1, len(df) // n + 1):
df[n*i:n*i+n:].to_csv('popular-names' + str(i) + '.txt', index=False, header=None)
Es ist hier nicht sehr schön, aber es schien keine prägnante Möglichkeit zu sein, den DataFrame Zeile für Zeile aufzuteilen.
Befehl
split -l 200 popular-names.txt popular-names-
Suchen Sie den Typ der Zeichenfolge in der ersten Spalte (eine Reihe verschiedener Zeichenfolgen). Verwenden Sie zur Bestätigung die Befehle cut, sort und uniq.
Code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(set(list(df[0])))
Befehl
cut -f 1 popular-names.txt | sort | uniq
uniq
muss im Voraus sortiert werden.
Ordnen Sie jede Zeile in umgekehrter Reihenfolge der Zahlen in der dritten Spalte an (Hinweis: Ordnen Sie den Inhalt jeder Zeile neu an, ohne ihn zu ändern). Verwenden Sie den Befehl sort zur Bestätigung (dieses Problem muss nicht mit dem Ergebnis der Ausführung des Befehls übereinstimmen).
Code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df.sort_values(2, ascending=False))
Befehl
sort -n -r -k 3 popular-names.txt | head -10
head -10
auf 10 Zeilen eingegrenzt.Ermitteln Sie die Häufigkeit des Auftretens der ersten Spalte jeder Zeile und zeigen Sie sie in absteigender Reihenfolge an. Verwenden Sie zur Bestätigung die Befehle cut, uniq und sort.
Code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df[0].value_counts())
Befehl
cut -f 1 popular-names.txt | sort | uniq -c | sort -n -r -k 1 | head -10
head -10
auf 10 Zeilen eingegrenzt.Was Sie in Kapitel 2 lernen können
Recommended Posts