Le calcul de la Fréquence des mots dans une pandas bloc de données
J'ai un tableau comme ci-dessous:
URN Firm_Name
0 104472 R.X. Yah & Co
1 104873 Big Building Society
2 109986 St James's Society
3 114058 The Kensington Society Ltd
4 113438 MMV Oil Associates Ltd
Et je veux compter la fréquence de tous les mots à l'intérieur de la Firm_Name colonne, pour obtenir un résultat comme ci-dessous:
J'ai essayé le code suivant:
import pandas as pd
import nltk
data = pd.read_csv("X:\Firm_Data.csv")
top_N = 20
word_dist = nltk.FreqDist(data['Firm_Name'])
print('All frequencies')
print('='*60)
rslt=pd.DataFrame(word_dist.most_common(top_N),columns=['Word','Frequency'])
print(rslt)
print ('='*60)
Toutefois, le code suivant n'est pas de produire un unique nombre de mots.
OriginalL'auteur J Reza | 2017-10-17
Vous devez vous connecter pour publier un commentaire.
IIUIC, utilisez
value_counts()
Ou,
Ou,
Pour top N, par exemple 3
Détails
.split(expand=True).stack()
est vraiment intelligent option sur les données de petite taille, mais il est vite à court de mémoire sur les données de n'importe quelle taille. Depuis, il développe une matrice pour chaque mot unique dansFirm_Name
, données de faible densité explose matrice de colonnes sans de nombreuses observations.Après l'obtention de top N à l'aide de
pd.Series(' '.join(df.Firm_Name).split()).value_counts()[:3]
Comment puis-je supprimer ces mots de mon dataframe de la colonne?OriginalL'auteur Zero
Vous avez besoin
str.cat
avecbas
première pour concanecate toutes les valeurs d'unstring
, alors besoin d'word_tokenize
et la dernière utilisation de votre solution:Est également possible de supprimer
lower
si nécessaire:Fait merci encore
Ils travaillent tous les deux si
Oui, c'est à vous de savoir quelle réponse est acceptée. Les deux solutions de travail - Zéro solution est de la pure pandas et mon pur ntlk. Et je suppose qu'il devrait y avoir quelques petites différences,
ntlk
un peu changer des données dansword_tokenize
.OriginalL'auteur jezrael