python大数据之简易词云图

python实现简易词云图

参考自大数据文摘

0b01:环境准备

  • 推荐使用Anaconda 它包含了(numpy,codecs,pandas,matplotlib),当然也可以自行安装这些包。
  • 此外还要安装jieba(分词包),WordCloud(词云包)
    直接pip install jieba,pip install WordCloud即可
  • 用来生成词云的txt文件 (比如,聊天记录,影视剧本,台词等等)
  • 词云背景图(形状)。(默认为矩形)
  • 素材获取百度云盘分享密码: kbw7

0b10: 代码实现

  • 测试环境 Anaconda2(python2.7 64bit) on win10
# -*- coding:utf-8 -*-
import jieba  # 分词包
import numpy  # numpy计算包
import codecs  # codecs提供open方法指定打开的文件的语言编码,它会在读取时自动转换为内部的unicode
import pandas  # 统计学工具包
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator    # 词云包
from scipy.misc import imread

# 导入文本,分词处理
file = codecs.open(u'大话西游.txt', 'r')
content = file.read()
file.close()
segment = []
segs = jieba.cut(content)   # 使用jieba分词
for seg in segs:
    if len(seg) > 1 and seg != '\r\n':
        segment.append(seg)

# 去停用词(文本去噪)
words_df = pandas.DataFrame({'segment': segment})
# 字典中的keys就是DataFrame里面的columns,但是没有index的值,所以需要自己设定,不设定默认是从零开始计数。
words_df.head()
stopwords = pandas.read_csv("stopwords.txt", index_col=False,
                            quoting=3, sep='\t', names=['stopword'], encoding="utf8")
words_df = words_df[~words_df.segment.isin(stopwords.stopword)]

# 词汇频率表
words_stat = words_df.groupby(by=['segment'])['segment'].agg({"count": numpy.size})
words_stat = words_stat.reset_index().sort_values(by="count", ascending=False)

# 自定义词云背景
bimg = imread('heart.jpeg')
wordcloud = WordCloud(background_color="white", mask=bimg, font_path='simhei.ttf')
wordcloud = wordcloud.fit_words(words_stat.head(4000).itertuples(index=False))
bimgColors = ImageColorGenerator(bimg)
plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))
plt.show()

0b11: 测试实例

python大数据之简易词云图_第1张图片
大话西游词云图

你可能感兴趣的:(python大数据之简易词云图)