数据可视化中的词云技术

自从开始从事数据可视化工作以来,就深深地爱上了它。总是喜欢从数据中提取有用的见解。在此之前,只知道一些基本的图表,比如条形图、散点图、直方图等,这些图表在Tableau和Power BI等数据可视化工具中是内置的。通过每天的工作,接触到了许多新的图表类型,比如径向仪表盘图、华夫图等。

最近,出于好奇,在寻找数据可视化中使用的所有图表类型时,一个词云吸引了注意,发现它非常有趣。直到现在,看到这些词云图像,一直以为它们只是随机的图像,其中的文字是随机排列的,但错了,这就是一切的开始。之后,尝试在Tableau和Power BI中仅使用少量数据制作词云。成功尝试之后,想尝试用代码制作词云,就像制作条形图、饼图和其他图表一样。

词云是什么?

定义:词云是一种简单但强大的文本处理视觉表示对象,它以更大、更粗的字母显示最频繁的单词,并使用不同的颜色。单词的大小越小,它的重要性就越低。

词云的用途

1) 社交媒体上的热门标签(Instagram、Twitter):在全球范围内,社交媒体正流行于获取最新更新,因此可以从中获取人们在帖子中使用的最常用标签。

2) 媒体中的热门话题:通过分析新闻文章,可以找到标题中的关键词,并提取出最热门话题,以获得所需的结果,即最热门媒体话题。

3) 电子商务中的搜索词:在电子商务购物网站上,店主可以制作搜索最多的购物项目的词云。这样他就可以了解在特定时期哪些购物项目需求量很大。

让开始用Python编写词云代码

首先,需要在Jupyter笔记本中安装所有库。在Python中,有一个内置的词云库,将安装它。在Anaconda命令提示符中输入以下代码:

pip install wordcloud

如果Anaconda环境支持conda,则输入:

conda install wordcloud

尽管这可以直接在笔记本本身中实现,只需在代码前添加‘!’即可,如下所示:

!pip install wordcloud

现在,将生成任何主题的维基百科文本的词云。因此,需要一个维基百科库来访问维基百科API,这可以通过在Anaconda命令提示符中安装Wikipedia来实现,如下所示:

pip install wikipedia

现在还需要一些其他的库,它们是numpy、matplotlib和pandas。

到目前为止,已经拥有了创建标签云的所有库。

上面的图片是通过检索维基百科上的机器学习页面获得的输出。在那里,还可以看到滚动条,这意味着整个页面都被检索到了。

在这里,还可以通过summary方法获得页面的摘要,如下所示:

result = wikipedia.summary("MachineLearning", sentences=5) print(result)

在这里,有一个句子参数,所以可以使用它来检索特定数量的行。

5个句子的输出

现在让拥有词云

from wordcloud import WordCloud, StopWords import matplotlib.pyplot as plt def plot_cloud(wordcloud): plt.figure(figsize=(10, 10)) plt.imshow(wordcloud) plt.axis("off"); wordcloud = WordCloud(width = 500, height = 500, background_color='pink', random_state=10).generate(final_result) plot_cloud(wordcloud)

停用词是没有意义的词,比如‘is’、‘are’、‘an’、‘I’等。词云自带了一个停用词库,会自动从文本中移除停用词。但有趣的是,可以通过stopwords.add()函数在Python中添加选择的停用词。

词云方法会有宽度和高度设置,将两者都设置为500,背景颜色为粉色。如果不添加一个随机状态,那么每次运行代码时,词云看起来都会不同。它应该设置为一个整数值。

这是从上述代码中获得的期望词云:通过查看上面的图表,可以看到机器学习是最常用的词,还有其他一些经常使用的词是模型、任务、训练、数据。因此,可以得出结论,机器学习是训练数据模型的任务。

还可以通过background_color方法改变背景颜色,通过colormap方法改变字体颜色,并且还可以在background_color中添加颜色的哈希码,但mapcolor自带了特定的颜色。

from wordcloud import WordCloud, StopWords import matplotlib.pyplot as plt def plot_cloud(wordcloud): plt.figure(figsize=(10, 10)) plt.imshow(wordcloud) plt.axis("off"); wordcloud = WordCloud(width = 500, height = 500, background_color='#40E0D0', colormap="ocean", random_state=10).generate(final_result) plot_cloud(wordcloud)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485