关于我们
作者:python爱好者、自学ing
个人网站 :到哪儿找导航 欢迎访问!
联系交流:QQ群726693257
背景说明
本篇文章是上一篇【python爬虫】豆瓣小组成员列表信息的后续数据分析处理篇。
数据来源:豆瓣小组成员信息
核心模块:python-wordcloud
运行环境:Anaconda python3.6
安装
说明:wordcloud不是python3和anaconda的默认模块,需要自行安装
step1:
pip install worldcloud
失败……官方源
step2:
conda install worldcloud
失败……清华镜像源
step3:
- 从Gitub 下载word_cloud原文件到桌面
cd desktop
conda install word_cloud-master.zip
安装进行……突然decode解码错误,无视。
step4:
搜索worldcloud官网,找官方下载包。发现刚才那个Github地址就是唯一的官方地址。
- 看看说明:
If you are using conda, you can install from the conda-forge channel:
conda install -c conda-forge wordcloud
满足条件,试了试,确实可以安装,但下载速度太慢……放弃了
- 再找发现:
##### Windows
If you're having trouble with pip installation on windows, you can find a .whl file at:
[http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud](http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud)
进入这个地址,下载wordcloud‑1.4.1‑cp36‑cp36m‑win_amd64.whl
pip install wordcloud‑1.4.1‑cp36‑cp36m‑win_amd64.whl
没报错!
pip list
已经有了wordcloud‑1.4.1,安装成功!
临时笔记:找到一个对pip、conda的解释,先码再看。Conda:误解与迷思
词云生成
初识源数据
此次数据是从豆瓣某读书小组爬取的成员名单,仅爬取了600+人。
目的也很简单,生成该读书小组成员的昵称词云
代码
- 文件读取
p = Path(r'C:\Users\****\Desktop\scrapy\douban_group\douban_group_names.xls')
print("--" * 50)
print("找到根目录:", str(p))
data_df = pd.read_excel(str(p), usecols=["names"])
----固执地沿用pathlib文件路径+pandas方法读取文件,推荐大家还是用with open() as
----wordcloud的data数据文件必须为str型,不能是list,下面需要将pandas读取的数据转换为一个超长的str
- 数据转换+分词
data = ""
for i in data_df.names: #data_df是dataframe,data_df.names是series
data = data + str(i) #将names转换为str
data_jieba = jieba.cut(data, cut_all=False) # 使用jieba模块进行分词处理
data_space = ' '.join(data_jieba)
----这里用jieba进行分词处理
- 生成词云
font = "C:\Windows\Fonts\FZSTK.TTF"
# wordcloud不支持中文字体,需要自行从C盘找一个中文字体文件
mask = imread("D:\我的照片,my life\敦煌.png")
# 指定背景图片,
wordcloud = WordCloud(
background_color='white',
mask=mask, # 该如果参数为空,则使用二维遮罩绘制词云。如果 mask有值,设置的宽高值将被忽略,背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。
font_path=font,
# max_words=2000, #要显示的词的最大个数
max_font_size=500, # 显示的最大字体大小
# relative_scaling: float# 词频和字体大小的关联性,(default=.5)
# colormap: string or matplotlib colormap, default =”viridis”#给每个单词随机分配颜色,若指定color_func,则忽略该方法。
width=100,
# height=400,
# prefer_horizontal: float(default=0.90), / # 词语水平方向排版出现的频率,默认0.9(所以词语垂直方向排版出现频率为0.1
# scale: float(default=1) # 按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5 倍。
stopwords="各位代表" # 设置需要屏蔽的词
# fit_words(frequencies) #根据词频生成词云
# to_file(filename) #输出到文件
).generate(data) # generate(text) #根据文本生成词云
----1)必须从本地电脑引用中文字体;
----2)max_font_size的值越大,越有层次。
(00.00) 看来这个豆瓣小组萌妹子居多…………
参考
Python wordcloud之中文词云
Windows环境下Python中wordcloud的使用——自己踩过的坑 2017.08.08
利用jieba和wordcloud生成词云