如何使用 Python 从 CSV 文件制作词云
How to make a word cloud from CSV file using Python
我有以下 CSV 文件:
Emoji,CNT,Common
369,3988,yes
sosad,2820,yes
agree,1481,no
clown,1273,yes
dead,753,yes
angry,561,no
good,404,yes
agger/dead,317,no
cry,305,yes
smile,300,yes
我搜索相关资料时,只有1栏。但是,我有一个CSV文件,必须制作词云图。更重要的是,我需要使用上面的文件来制作更多信息。如果“Common”栏是“yes”,它会显示红色。否则显示黑色。
我查了很多资料。他们只有 1 列。然后他们只有一种颜色或随机颜色。
因此,我不能做出我的尊重结果。
首先你需要正确读取这个 csv 文件,你可以简单地使用 python 的 pandas 库来做到这一点,如下所示:Reading csv file in python
然后你就可以使用python的wordcloud库,安装为
pip 安装 wordcloud
有关 wordcloud 的一些很好的示例,请遵循 https://github.com/amueller/word_cloud#examples
为了补充上一个答案,这是一个示例代码,可以使用 wordcloud 库执行您要求的操作。您需要将 CSV 分成两个字典,一个用于主要数据,另一个用于颜色。
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# Load data as pandas dataframe
df = pd.read_csv(csv_file_location)
# Create dictionaries out of the dataframe
records = df.to_dict(orient='records')
data = {x['Emoji']: x['CNT'] for x in records}
colors = {x['Emoji']: x['Common'] for x in records}
# Generate word cloud from frequencies
wc = WordCloud(background_color="white", max_words=1000)
wc.generate_from_frequencies(data)
# Color words depending on the colors dictionary
def color_func(word, **kwargs):
if colors.get(word) == 'yes':
return "rgb(0, 255, 0)"
else:
return "rgb(255, 0, 0)"
wc.recolor(color_func=color_func)
# Show final result
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()
这会给你一张看起来像这样的图片:
我有以下 CSV 文件:
Emoji,CNT,Common
369,3988,yes
sosad,2820,yes
agree,1481,no
clown,1273,yes
dead,753,yes
angry,561,no
good,404,yes
agger/dead,317,no
cry,305,yes
smile,300,yes
我搜索相关资料时,只有1栏。但是,我有一个CSV文件,必须制作词云图。更重要的是,我需要使用上面的文件来制作更多信息。如果“Common”栏是“yes”,它会显示红色。否则显示黑色。
我查了很多资料。他们只有 1 列。然后他们只有一种颜色或随机颜色。
因此,我不能做出我的尊重结果。
首先你需要正确读取这个 csv 文件,你可以简单地使用 python 的 pandas 库来做到这一点,如下所示:Reading csv file in python
然后你就可以使用python的wordcloud库,安装为
pip 安装 wordcloud
有关 wordcloud 的一些很好的示例,请遵循 https://github.com/amueller/word_cloud#examples
为了补充上一个答案,这是一个示例代码,可以使用 wordcloud 库执行您要求的操作。您需要将 CSV 分成两个字典,一个用于主要数据,另一个用于颜色。
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# Load data as pandas dataframe
df = pd.read_csv(csv_file_location)
# Create dictionaries out of the dataframe
records = df.to_dict(orient='records')
data = {x['Emoji']: x['CNT'] for x in records}
colors = {x['Emoji']: x['Common'] for x in records}
# Generate word cloud from frequencies
wc = WordCloud(background_color="white", max_words=1000)
wc.generate_from_frequencies(data)
# Color words depending on the colors dictionary
def color_func(word, **kwargs):
if colors.get(word) == 'yes':
return "rgb(0, 255, 0)"
else:
return "rgb(255, 0, 0)"
wc.recolor(color_func=color_func)
# Show final result
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()
这会给你一张看起来像这样的图片: