[PYTHON] 100 Language Processing Knock 2020 Chapitre 2

introduction

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.

Chapitre 2: Commandes UNIX

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.

10. Compter le nombre de lignes

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

11. Remplacez les onglets par des espaces

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

12. Enregistrez la première colonne dans col1.txt et la deuxième colonne dans col2.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

13. Fusionnez col1.txt et 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

14. Sortie de N lignes depuis le début

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

15. Sortez les N dernières lignes

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

16. Divisez le fichier en N

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-

17. Différence dans la chaîne de caractères dans la première colonne

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.

18. Triez chaque ligne par ordre décroissant des nombres dans la troisième colonne

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

19. Recherchez la fréquence d'apparition de la chaîne de caractères dans la première colonne de chaque ligne et organisez-les par ordre décroissant de fréquence d'apparition.

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

en conclusion

Ce que vous pouvez apprendre au chapitre 2

Recommended Posts

100 Traitement du langage Knock Chapitre 1
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
100 coups de traitement linguistique (2020): 28
100 coups de traitement linguistique (2020): 38
100 traitement de la langue frapper 00 ~ 02
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
100 Language Processing Knock 2020 Chapitre 9: RNN, CNN
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 3
100 traitements de langage avec Python (chapitre 3)
100 Language Processing Knock 2020 Chapitre 6: Apprentissage automatique
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 Language Processing Knock 2020 Chapitre 8: Neural Net
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 1
100 Language Processing Knock 2020 Chapitre 1: Mouvement préparatoire
100 Language Processing Knock Chapitre 1 par Python
100 Language Processing Knock 2020 Chapitre 3: Expressions régulières
100 Language Processing Knock 2015 Chapitre 4 Analyse morphologique (30-39)
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 2
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 4
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 coups de traitement du langage amateur: 17
100 traitements linguistiques Knock 2020 [00 ~ 49 réponse]
100 Traitement du langage Knock-52: Stemming
100 coups de traitement du langage ~ Chapitre 1
100 coups de langue amateur: 07
Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 coups de traitement du langage amateur: 67
J'ai fait 100 traitements linguistiques Knock 2020 avec GiNZA v3.1 Chapitre 4
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
[Programmeur nouveau venu "100 language processing knock 2020"] Résoudre le chapitre 1
100 coups de traitement du langage avec Python 2015
100 traitement du langage Knock-51: découpage de mots
100 Language Processing Knock-58: Extraction de Taple
100 Language Processing Knock-57: Analyse des dépendances
100 Language Processing Knock-25: Extraction de modèles
Traitement du langage 100 Knock-87: similitude des mots
J'ai essayé 100 traitements linguistiques Knock 2020
100 Language Processing Knock-56: analyse de co-référence
Résolution de 100 traitements linguistiques Knock 2020 (01. "Patatokukashi")
100 coups de traitement du langage amateur: Résumé
[Programmer newcomer "100 language processing knock 2020"] Résoudre le chapitre 2 [Première moitié: 10 ~ 15]
[Traitement du langage 100 coups 2020] Chapitre 3: Expressions régulières
100 traitements du langage naturel frappent le chapitre 4 Commentaire
[Traitement du langage 100 coups 2020] Chapitre 6: Machine learning