关键词不能为空

位置:云林新闻励志网 > 经典语录 > 云图台词-《每天5分钟学Python可视化》|第6天:活用词云图,发掘热点

云图台词-《每天5分钟学Python可视化》|第6天:活用词云图,发掘热点

作者:车型网
日期:2020-02-14 13:29:00
阅读:

还记得我们曾经抓取过豆瓣电影TOP250的详细信息吗?在二十多个字段中,有一个字段就是每部电影被贴上最多的标签。



想要学习更多可视化知识的话,可以到我的历史文章中查阅更多分享,比如《从零开始学Python可视化》系列、《7天学会Python最佳可视化工具Seaborn》系列、《一天一图学Python可视化》系列等。同时我还会分享许多关于爬虫、数据分析与挖掘、机器学习等的知识,欢迎感兴趣的同学关注我!



当我们想要查看哪些标签最多时(事实上它就是一个分类变量,每个标签是其中的一个分类),一种方法是使用条形图。但是当标签太多时,展示的效果会非常差,我们可以先来看一下。


from collections import Counterimport matplotlib.pyplot as plt## 生成列表tags = reduce(lambda x, y: x + y, df.tags)## 统计词频并拆分键值对counter = Counter(tags)counter_items = counter.items()tag_list = [i[0] for i in counter_items]count_list = [i[1] for i in counter_items]## 条形图plt.figure(figsize=(100, 10))plt.bar(x=tag_list, height=count_list);

看下效果:


完全没有可读性。。四百多个分类挤在一起,什么都看不见。那在遇到这种分类特别多的情况时,我们应该怎么办呢?


一个很好的解决方案,就是使用词云图。那么接下来我们再来看下词云图的效果:


from functools import reducefrom wordcloud import WordCloudtags = reduce(lambda x, y: x + y, df.tags)result = ' '.join(tags)wc = WordCloud( font_path='msyh.ttf', #字体 background_color='white', #背景颜色 width=1000, height=500, max_font_size=100, #字体大小 min_font_size=10, max_words=100)wc.generate(result)plt.figure('豆瓣电影标签', figsize=(16,8))plt.imshow(wc)plt.axis('off')plt.show()

是不是美观了许多?什么标签多什么标签少一目了然。


其实词云图最主要的应用场景并不是用于处理常见的分类变量。顾名思义,用词构成的云图,词云图常常用于展示文章中不同词(文字、单词)的使用频率情况,假如我们的数据是原始的文章字符串的话,那么我们一般需要使用jieba来做一下分词,然后去除停用词(比如的、啊、嗯等语气词),然后再传递给我们的wordcloud对象生成词云图。


接下来我们详细解释下代码:


第一步,我们导入了必要的库。


第二步,我们将数据转换成我们需要的格式。wordcloud需要的是一个字符串,在这个字符串中,每个词之间以空格连接。我们不需要提供词频等统计,只需要将原始的单词以空格分隔后传入即可,它会自动进行必要的统计。由于我们数据的格式是pandas DataFrame,标签是其中的一列,且是列表格式。所以我们将所有列表以追加方式融合成一个列表,然后使用字符串的join方法连接成一整个字符串。


第三步,我们生成一个WordCloud对象,在这里我们指定了中文字体(必需,因为wordcloud默认不支持中文),然后我们设置背景颜色为白色,设定宽高以及字体的大小范围,最后我们还设置仅保留最多的一百个词。然后我们用我们的WordCloud对象去拟合我们的数据。


第四步,我们设置图形大小,然后使用plt.imshow()来读取图片数据,去除坐标轴,展示图片。


在词云图中,我们甚至还可以设置图形的形状(给mask参数指定一个特定形状的图片文件),这会使得我们的图片更加有趣。


你学会了吗?


一直为网友的需求而努力相关推荐