2017-02-12 2 views
1

ich eine CSV-Datei haben mit zwei Spalten (Datenrahmen) Spalte 1 enthält einen Satz, den ich liebe BananenWordcloud für eine CSV-Datei in Python

und Spalte 2 enthält eine classe ich habe 5 classes

i a brauchen wordcloud für jede Klasse in der Tat jeder alle Sätze entsprechend jeder Klasse es möglich ist, es zu tun? es diesen Code versuchen, aber id nicht funktioniert nicht

import matplotlib.pyplot as plt 
cloud = WordCloud(background_color="white", max_words=20, stopwords=stopwords) 
tuples = tuple([tuple(x) for x in df.Phrase.value_counts().reset_index().values]) 
a = cloud.generate_from_frequencies(tuples) 

plt.imshow(a) 
plt.axis("off") 
plt.title("a") 
plt.show() 

Beispiel für Datensätze

text       classe 
i love banana     positive 
i hate banana     negetive 
maybe i love maybe no   neutral 
bit yes bit no    not_sure 
wooooooooooow     like_it 
+1

@MaxU yes i ändern sich die Beschreibung –

+0

@MaxU ja i modifiziert die Beschreibung –

+0

Ja, bemerkte ich, dass. Ich lerne gerade, wie 'wordcloud' funktioniert ...;) – MaxU

Antwort

2

Hier ist ein Beispiel für eine Klasse: positive.

Angenommen, wir haben die folgenden DF:

In [79]: df 
Out[79]: 
        text classe 
0   i love banana positive 
1    love apple positive 
2  love, love, love positive 
3   i hate banana negative 
4    it sucks negative 
5 maybe i love maybe no neutral 
6   bit yes bit no not_sure 
7   wooooooooooow like_it 

Lösung:

In [80]: %paste 
from wordcloud import WordCloud 
from nltk.corpus import stopwords 

cloud = WordCloud(background_color="white", max_words=20, stopwords=stopwords.words('english')) 

positive_cloud = cloud.generate(df.loc[df.classe == 'positive', 'text'].str.cat(sep='\n')) 
plt.figure() 
plt.imshow(positive_cloud) 
plt.axis("off") 
plt.show() 
## -- End pasted text -- 

Ergebnis:

enter image description here

Einige Erklärungen:

erzeugt Text für eine einzelne class:

In [81]: df.loc[df.classe == 'positive', 'text'].str.cat(sep='\n') 
Out[81]: 'i love banana\nlove apple\nlove, love, love'