Word Cloud 在单词中显示几个 ' 并且不确定为什么

Word Cloud showing several ' amongst words and not sure why

我试图用“'”排除它们,但失败了。不确定他们从哪里拉,因为他们不在文件中。感谢您的帮助

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np 

url = 'https://raw.githubusercontent.com/Imme21/WordCloud/main/StockData3.csv'
df = pd.read_csv(url, error_bad_lines=False)
df.dropna(inplace = True)
text = df['Stock'].values

wordcloud = WordCloud(background_color = 'white',
            stopwords = ['Date','Stock', 'Tickers', 
                         'Open','Close', 'High', 
                         'Low', 'IV', 'under',
                         'over', 'price', 'change', 
                         '%', 'null']).generate(str(text))


plt.imshow(wordcloud) 
plt.axis("off")
plt.show()

发生这种情况是因为您有一个字符串数组,其中每个字符串都包含一个引号。 Wordcloud 假定尾随的撇号可以是单词的一部分(因此它可以像 can't aren't 这样处理单词)。有关详细信息,请参阅 this post

您可以通过使用 space 分隔的单词字符串而不是列表来解决此问题。 ' '.join(text) 应该可以解决您的问题

# You read a sring from file and converted it to array
text = df['Stock'].values
>>> text
array(['GME', 'SPY', 'TSLA', 'PLTR', 'AAPL', 'AMC', 'RKT', 'NIO', 'DIS',
.....

text = ' '.join(text)
>>> text
'GME SPY TSLA PLTR AAPL AMC RKT NIO.....

这应该在您的词云中处理正确的尾随引号或撇号。

问题与如何从数据框列中的值获取字符串有关。具体来说,text = df['Stock'].values.generate(str(text).

使用 pandas.Series.str.cat 将生成“正确”的字符串并为您提供所需的结果:

...
>>> text = df['Stock'].str.cat(sep=' ')
...
>>> wordcloud = WordCloud(background_color = 'white',
            stopwords = ['Date','Stock', 'Tickers', 
                         'Open','Close', 'High', 
                         'Low', 'IV', 'under',
                         'over', 'price', 'change', 
                         '%', 'null']).generate(text)
...