Language processing 100 knock 2020 a été publié, je vais donc l'essayer immédiatement. Le chapitre 1 est exactement le même que 2015 (et je faisais exactement cela), je vais donc commencer par le chapitre 2.
Certains articles ont déjà été publiés dans Qiita, mais en plus de pouvoir apprendre un aperçu du traitement du langage naturel, je pense que le début est utile non seulement pour le traitement du langage mais aussi pour les débutants Linux et les débutants professionnels.
popular-names.txt est un fichier qui stocke le «nom», le «sexe», le «nombre de personnes» et «l'année» d'un bébé né aux États-Unis dans un format délimité par des tabulations. Créez un programme qui effectue le traitement suivant et exécutez popular-names.txt en tant que fichier d'entrée. De plus, exécutez le même processus avec une commande UNIX et vérifiez le résultat de l'exécution du programme.
Comptez le nombre de lignes. Utilisez la commande wc pour confirmation.
code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(len(df.index))
commander
wc -l popular-names.txt
Remplacez chaque onglet par un espace. Utilisez la commande sed, la commande tr ou la commande expand pour confirmation.
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)
commander
sed -e $'s/\t/ /g' popular-names.txt > popular-names-space.txt
Enregistrez la version extraite de la première colonne de chaque ligne uniquement sous col1.txt et la version extraite de la deuxième colonne uniquement sous col2.txt. Utilisez la commande cut pour confirmation.
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)
commander
cut -f 1 popular-names.txt > col1.txt
cut -f 2 popular-names.txt > col2.txt
Combinez col1.txt et col2.txt créés dans 12 et créez un fichier texte dans lequel les première et deuxième colonnes du fichier d'origine sont organisées par des délimiteurs de tabulation. Utilisez la commande coller pour confirmation.
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)
commander
paste col1.txt col2.txt > col3.txt
Recevez le nombre naturel N au moyen d'un argument de ligne de commande, et affichez uniquement les N premières lignes de l'entrée. Utilisez la commande head pour confirmation.
code
import pandas as pd
n = int(input())
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df.head(n))
commander
head -5 popular-names.txt
Recevez le nombre naturel N au moyen d'un argument de ligne de commande, et affichez uniquement les N dernières lignes de l'entrée. Utilisez la commande tail pour confirmation.
code
import pandas as pd
n = int(input())
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df.tail(n))
commander
tail -5 popular-names.txt
Recevez le nombre naturel N par des moyens tels que des arguments de ligne de commande et divisez le fichier d'entrée en N ligne par ligne. Réalisez le même traitement avec la commande de fractionnement.
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)
Ce n'est pas très beau ici, mais cela ne semblait pas être un moyen concis de diviser le DataFrame ligne par ligne.
commander
split -l 200 popular-names.txt popular-names-
Recherchez le type de chaîne de caractères dans la première colonne (un ensemble de chaînes de caractères différentes). Utilisez les commandes cut, sort et uniq pour confirmation.
code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(set(list(df[0])))
commander
cut -f 1 popular-names.txt | sort | uniq
ʻUniq` doit être trié à l'avance.
Disposez chaque ligne dans l'ordre inverse des nombres de la troisième colonne (Remarque: réorganisez le contenu de chaque ligne sans les changer). Utilisez la commande sort pour confirmation (ce problème ne doit pas nécessairement correspondre au résultat de l'exécution de la commande).
code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df.sort_values(2, ascending=False))
commander
sort -n -r -k 3 popular-names.txt | head -10
head -10
.Trouvez la fréquence d'apparition de la première colonne de chaque ligne et affichez-les par ordre décroissant. Utilisez les commandes cut, uniq et sort pour confirmation.
code
import pandas as pd
df = pd.read_csv('popular-names.txt', delimiter='\t', header=None)
print(df[0].value_counts())
commander
cut -f 1 popular-names.txt | sort | uniq -c | sort -n -r -k 1 | head -10
head -10
.Ce que vous pouvez apprendre au chapitre 2
Recommended Posts