J'ai essayé Language processing 100 knock 2020. Vous pouvez voir le lien des autres chapitres d'ici, et le code source de ici. (La confirmation sous UNIX n'a pas été vérifiée.)
Comptez le nombre de lignes. Utilisez la commande wc pour confirmation.
<détails> <détails> J'ai utilisé le bloc Remplacez chaque caractère de tabulation par un caractère d'espace. Utilisez la commande sed, la commande tr ou la commande expand pour confirmation. <détails> <détails> Enregistrez la colonne extraite de chaque ligne sous col1.txt et la colonne extraite 2 sous col2.txt. Utilisez la commande cut pour confirmation. <détails> <détails> Le fonctionnement du fichier est spécifié par Combinez col1.txt et col2.txt créés dans> 12 pour créer un fichier texte dans lequel les première et deuxième colonnes du fichier d'origine sont séparées par des tabulations. Utilisez la commande coller pour confirmation. <détails> <détails> La réponse de l'autre personne a utilisé «zip ()» pour le générer. Avec cette réponse, vous aurez des ennuis quand Recevoir le nombre naturel N au moyen d'un argument de ligne de commande et n'afficher que les N premières lignes de l'entrée. Utilisez la commande head pour confirmation. <détails> Il semble que vous puissiez obtenir une liste avec des arguments de ligne de commande en utilisant la fonction ʻargv Recevoir le nombre naturel N au moyen d'un argument de ligne de commande et n'afficher que les N dernières lignes de l'entrée. Utilisez la commande tail pour confirmation. <détails> Pour ceux qui le connaissent, il semble que ce soit nouveau, mais il semble qu'il existe une bibliothèque appelée pandas qui est pratique pour le traitement des données, j'ai donc essayé de l'utiliser.
Recevez le nombre naturel N au moyen d'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. <détails> Pour la sortie, j'ai utilisé ʻiloc 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. <détails> ʻUnique () 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). <détails> 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. <détails> Opération de base Pandas fréquemment utilisée dans l'analyse des données
upura / nlp100v2020 Résoudre "100 Language Processing Knock 2020" avec Python
Résumé du traitement du langage amateur à 100 coups
Recommended Posts
010.py
path = "popular-names.txt"
with open(path) as file:
print(len(file.readlines()))
# -> 2700
with
car il était fastidieux d'écrire close ()
à la fin de l'opération de fichier.No.11 Convertir les onglets en espaces
011.py
path = "popular-names.txt"
with open(path) as file:
print(file.read().replace("\t", " "), end="")
# -> Mary F 7065 1880
# Anna F 2604 1880
# Emma F 2003 1880 ...
\ t
avec replace ()
.
Si vous sortez tel quel, une ligne vide apparaîtra à «\ n» à la fin de la ligne + ligne de texte de la fonction «impression», mais si vous spécifiez l'option «fin» pour la fonction «impression», «fin» sera inséré à la fin du texte J'ai essayé de l'utiliser.
No.12 Enregistrez la première colonne dans col1.txt et la deuxième colonne dans col2.txt
012.py
path = "popular-names.txt"
path_col1 = "col1_012.txt"
path_col2 = "col2_012.txt"
with open(path) as file:
with open(path_col1, mode="w") as col1:
with open(path_col2, mode="w") as col2:
item_split = [item.split("\t") for item in file.readlines()]
for item in item_split:
col1.write(item[0] + "\n")
col2.write(item[1] + "\n")
# col1.txt
# -> Mary
# Anna...
# col2.txt
# -> F
# F...
mode
de ʻopen (). La valeur par défaut est
mode = 'r'`, mais vous devriez l'écrire correctement sans l'omettre ...?No.13 Fusionner col1.txt et col2.txt
013.py
path_col1 = "col1_012.txt"
path_col2 = "col2_012.txt"
path_merge = "merge.txt"
with open(path_col1) as col1:
col1_list = col1.readlines()
with open(path_col2) as col2:
col2_list = col2.readlines()
with open(path_merge, mode="w") as mrg:
for i in range(len(col1_list)):
mrg.write(col1_list[i].replace("\n", "") + "\t" + col2_list[i])
# merge.txt
# -> Mary F
# Anna F
# Emma F
len (col1_list)> len (col2_list)
, et c'est plus intelligent.N ° 14 Sortie N lignes depuis le début
014.py
import sys
N = int(sys.argv[2])
with open(sys.argv[1]) as file:
for i in range(N):
print(file.readline().replace("\n",""))
# python 014.py popular-names.txt 3
# -> Mary F 7065 1880
# Anna F 2604 1880
# Emma F 2003 1880
du module
sys`.N ° 15 Sortie N lignes à la fin
015.py
import pandas as pd
path = "popular-names.txt"
df = pd.read_table(path, header=None)
print(df.tail())
# -> 0 1 2 3
# 2775 Benjamin M 13381 2018
# 2776 Elijah M 12886 2018
# 2777 Lucas M 12585 2018
# 2778 Mason M 12435 2018
# 2779 Logan M 12352 2018
read_csv (chemin, sep =" \ t ")
était bien, mais read_table
est simple, n'est-ce pas?N ° 16 Diviser le fichier en N
016.py
import pandas as pd
import sys
N = int(sys.argv[1])
path = "popular-names.txt"
df = pd.read_table(path, header=None)
col_n = -(-len(df) // N)
for i in range(N):
print(df.iloc[col_n * i : col_n * (i + 1), :])
# python 016.py 2
# -> 0 1 2 3
# 0 Mary F 7065 1880
# 1 Anna F 2604 1880
# ... ... .. ... ...
# 1389 Sharon F 25711 1949
#
# [1390 rows x 4 columns]
# 0 1 2 3
# 1390 James M 86857 1949
# 1391 Robert M 83872 1949
# ... ... .. ... ...
# 2779 Logan M 12352 2018
#
# [1390 rows x 4 columns]
parce que je veux spécifier plusieurs lignes de
df` par index.N ° 17 Chevauchement de chaînes de caractères dans la première colonne
017.py
import pandas as pd
path = "popular-names.txt"
df = pd.read_table(path, header=None)
print(df[0].unique())
# -> ['Mary' 'Anna' 'Emma' 'Elizabeth' 'Minnie' 'Margaret' 'Ida' 'Alice'...
renvoie la valeur d'un élément unique en tant que type
ndarrayde NumPy. Le nombre d'éléments uniques peut être obtenu par
df [0] .nunique ()en plus de
len (df [0] .unique ())`.N ° 18 Trier chaque ligne par ordre décroissant des valeurs numériques de la troisième colonne
018.py
import pandas as pd
path = "popular-names.txt"
df = pd.read_table(path, header=None)
print(df.sort_values(2, ascending=False))
# -> 0 1 2 3
# 1340 Linda F 99689 1947
# 1360 Linda F 96211 1948
# 1350 James M 94757 1947...
N ° 19 Trouvez la fréquence d'apparition des chaînes de caractères dans la première colonne de chaque ligne et organisez-les par ordre décroissant de fréquence d'apparition.
019.py
import pandas as pd
path = "popular-names.txt"
df = pd.read_table(path, header=None)
print(df[0].value_counts())
# -> James 118
# William 111
# John 108
value_counts
renvoie les éléments uniques et leur nombre sous la forme pandas.Series
.
Il est déroutant que ʻunique () affiche une liste d'éléments uniques,
nunique () montre le nombre total d'éléments uniques et
value_counts () `montre la fréquence d'occurrence de chaque élément.référence