Je veux compter le nombre de fois qu'un mot est répété dans la chaîne de relecture
Je suis en train de lire le fichier csv et de le stocker dans un fichier de données python à l'aide de la ligne ci-dessous
reviews = pd.read_csv("Amazon_baby.csv")
Le code dans les lignes ci-dessous fonctionne lorsque je l'applique à une seule révision.
print reviews["review"][1]
a = reviews["review"][1].split("disappointed")
print a
b = len(a)
print b
La sortie pour les lignes ci-dessus était
it came early and was not disappointed. i love planet wise bags and now my wipe holder. it keps my osocozy wipes moist and does not leak. highly recommend it.
['it came early and was not ', '. i love planet wise bags and now my wipe holder. it keps my osocozy wipes moist and does not leak. highly recommend it.']
2
Lorsque j'applique la même logique à l'ensemble du cadre de données à l'aide de la ligne ci-dessous. Je reçois un message d'erreur
reviews['disappointed'] = len(reviews["review"].split("disappointed"))-1
Message d'erreur:
Traceback (most recent call last):
File "C:/Users/gouta/PycharmProjects/MLCourse1/Classifier.py", line 12, in <module>
reviews['disappointed'] = len(reviews["review"].split("disappointed"))-1
File "C:\Users\gouta\Anaconda2\lib\site-packages\pandas\core\generic.py", line 2360, in __getattr__
(type(self).__name__, name))
AttributeError: 'Series' object has no attribute 'split'
Vous essayez de scinder la colonne de révision complète du bloc de données (qui correspond à la série mentionnée dans le message d'erreur). Ce que vous voulez faire est d'appliquer une fonction à chaque ligne du bloc de données, ce que vous pouvez faire en appelant apply sur le bloc de données:
f = lambda x: len(x["review"].split("disappointed")) -1
reviews["disappointed"] = reviews.apply(f, axis=1)
pandas 0.20.3 a pandas.Series.str.split () qui agit sur chaque chaîne de la série et effectue la scission. Donc, vous pouvez simplement diviser et ensuite compter le nombre de scissions effectuées
len(reviews['review'].str.split('disappointed')) - 1
Eh bien le problème est,
reviews["review"]
est une série. Dans votre premier extrait, vous le faites,
reviews["review"][1].split("disappointed")
Mettre un index pour la revue. Vous pouvez essayer de boucler sur toutes les lignes de la colonne et effectuer l'action souhaitée. Par exemple,
for index, row in reviews.iterrows():
print len(row['review'].split("disappointed"))
Vous pouvez utiliser .str
pour utiliser des méthodes de chaîne sur une série de chaînes:
reviews["review"].str.split("disappointed")