【python】用python实现wordcloud大数据词云图分析

【python】用python实现wordcloud大数据词云图分析

    • 一、应用场景
    • 二、工具包安装及代码
    • 三、中文不能正常显示问题
    • 四、关键词重复问题
    • 五、最终结论

一、应用场景

大数据词云(wordcloud)分析常用于在冗长的文本数据中提取最高频、最关键的信息。比如在长篇的电影、小说、剧本中快速提取关键信息和主要角色,比如根据长篇描述快速对一个人物或事物进行画像和打标签等等。词云分析适用的场景远不止这些,它同样可以用于解决一些行业分析的问题。比如这次我们遇到的问题是这样的:现在我们有一批苏州市小企业的数据,包含企业名称、所属行业等信息。我们能很简单地分析出这批小企业主要以批发业、零售业和餐饮业为主。问题是,批发业、零售业都是相对宽泛的描述,我们怎么知道批发业里面具体都是做什么的企业呢?这些企业主要分布在哪些地方呢?批发业和零售业的企业主要有什么区别呢?餐饮业的企业又有什么特征呢?对于这些问题,我们就可以借助大数据词云分析的手段来解决。

二、工具包安装及代码

我们分析的主要思路就是把所有企业名称连接起来,作为一个大的文本文件,然后对这个文本文件进行切词并用词云进行统计。所以首先我们需要用到jieba工具进行切词处理,可以通过pip install jieba来安装jieba工具包。
第二步词云统计,python同样提供了可直接使用的工具包wordcloud,直接pip install wordcloud即可。
当两个工具包都准备好之后,就可以通过运行以下代码来生成我们想要的词云图:

#读入数据,把所有企业名称用空格连接,整合成一个大文本变量t
res = pd.read_csv('data.csv')
t = res.loc[(res['所属行业']=='批发业')&(res['所属城市']=='苏州市'),'企业名称'].tolist()
t =' '.join(t)

#使用jieba工具对变量t进行分词,结果以list形式输出
import jieba
w = jieba.lcut(t)

#可以使用counter方法,看一下每个词的词频
from collections import Counter
c = Counter(w)
print (dict(c))

#把切出来的词用空格连接起来
word_after_cut = ' '.join(w)

#导入wordcloud工具并生成词云变量wd
from wordcloud import WordCloud
wd = WordCloud(background_color='white',random_state=300,width=1000,height=500).generate(word_after_cut)

#画出词云图
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wd, interpolation='bilinear')
plt.axis("off")

结果如下:
【python】用python实现wordcloud大数据词云图分析_第1张图片

三、中文不能正常显示问题

结果很不理想,都是小框框,看来是wordcloud工具不能正确识别处理中文,这个问题解决起来也比较简单,百度并下载一个字体库SimeHei.ttf,并将它放到…\Anaconda3\Lib\site-packages\wordcloud\路径下。
之后,打开该路径下的wordcloud.py文件,定位到第34行左右,将字体路径FONT_PATH做如下更改,保存,退出即可。
在这里插入图片描述

四、关键词重复问题

解决了中文字体不显示的问题后重跑结果如下图。这个结果看似正确,实则还是存在问题,其中最显著的关键字“昆山市”重复出现了好几次,也不是我们想要的理想结果。
【python】用python实现wordcloud大数据词云图分析_第2张图片
这个问题与collocations参数有关,默认collocations=True,会统计搭配词。“昆山市”字符串的子集“昆山”也会被统计。只需要将这个参数改为False即可:

wd = WordCloud(background_color='white',random_state=300,width=1000,height=500,collocations=False).generate(word_after_cut)

五、最终结论

再炫酷的工具最终都是要服务于解决问题,我们来看下最终结果是不是能够回答我们最开始时提出的那些问题呢?
【python】用python实现wordcloud大数据词云图分析_第3张图片
通过对苏州市所有属性为批发业的小企业名称进行词云分析后发现,批发业企业主要聚集在昆山、张家港、太仓等市和吴中、姑苏、高新开发等区。经营范围主要集中在建材、五金、机电等等领域,大多企业名称为某某某经营部。
【python】用python实现wordcloud大数据词云图分析_第4张图片
而通过对零售业公司名称的词云分析发现,零售业企业主要集中在昆山、常熟、张家港、太仓等市和相城、姑苏等区,而企业的经营范围则相对分散,涉及到服装、日用品、家具、电子、食品、蔬菜等,也包括一些搞建材、五金的企业。大多企业名称同样为某某某经营部。
【python】用python实现wordcloud大数据词云图分析_第5张图片
而苏州市的餐饮业则表现出迥异的特征,餐饮业主要聚焦在昆山、张家港、常熟等市和姑苏区;主要是一些小吃店、小饭店或餐饮、快餐店,具体在面馆、火锅、奶茶、羊肉汤等领域有一定聚集性。
由此可见,通过词云分析的手段,我们能够对苏州市不同行业属性企业的聚集区域、具体经营范围有一个相对全面的洞察,便可以为后续客群画像和人群甄别策略给出一定的数据支撑。


参考博客:
https://segmentfault.com/q/1010000014224890
https://blog.csdn.net/vivian_ll/article/details/68067574?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control
https://blog.csdn.net/qq_44331229/article/details/108163642?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242

你可能感兴趣的:(python,python,大数据)