Contamos con tu ayuda para difundir nuestros posts sobre las ciencias de la computación.
Solución:
El problema es que el WordCloud.generate
método que está utilizando espera un string en el que contará las instancias de la palabra pero proporciona un pd.Series
.
Dependiendo de lo que desee que genere la nube de palabras, puede hacer lo siguiente:
-
wordcloud2 = WordCloud().generate(' '.join(text2['Crime Type']))
que concatenaría todas las palabras en la columna de su marco de datos y luego contaría todas las instancias. -
Utilizar
WordCloud.generate_from_frequencies
para pasar manualmente las frecuencias calculadas de las palabras.
Puede generar una nube de palabras mientras elimina todas las palabras seleccionadas de una sola columna. Digamos que su marco de datos es df y el nombre de la columna es un comentario, entonces el siguiente código puede ayudar:
#Final word cloud after all the cleaning and pre-processing
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
comment_words = ' '
stopwords = set(STOPWORDS)
# iterate through the csv file
for val in df.comment:
# typecaste each val to string
val = str(val)
# split the value
tokens = val.split()
# Converts each token into lowercase
for i in range(len(tokens)):
tokens[i] = tokens[i].lower()
for words in tokens:
comment_words = comment_words + words + ' '
wordcloud = WordCloud(width = 800, height = 800,
background_color ='white',
stopwords = stopwords,
min_font_size = 10).generate(comment_words)
# plot the WordCloud image
plt.figure(figsize = (8, 8), facecolor = None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad = 0)
plt.show()
df = pd.read_csv('allCrime.csv', usecols=fields)
text = df['Crime type'].values
wordcloud = WordCloud().generate(str(text))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
Si te animas, tienes la opción de dejar una reseña acerca de qué le añadirías a esta división.