小编在日常生活工作中学习到的点,在此记录一下,希望能够帮助有需要的小伙伴。
对文本数据内容有个直观的感受,如小说哪些内容出现的最多,主要讲述什么事情等等
提示:以下是本篇文章正文内容,下面案例可供参考
# coding: utf-8
import codecs
import matplotlib.pyplot as plt #绘图库
import jieba #分词库
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.tick_params(labelsize=9) #刻度字体大小9
plt.xticks(rotation=45) #横坐标字体倾斜45度
stopword=[u'。',u',',u',',u'(',u')',u'"',u':',u';',u'、',u',',u',',u'”',u'“',u';',u':',u'的',u'有',u'也']
word = []
counter = {}
with codecs.open('result.txt',encoding='utf-8') as f:
for line in f:
line = line.strip()
if len(line) == 0:
continue
line = jieba.cut(line, cut_all = False)
for w in line:
if ( w in stopword) or len(w)==1: continue
if not w in word :
word.append(w)
if not w in counter:
counter[w] = 0
else:
counter[w] += 1
counter_list = sorted(counter.items(), key=lambda x: x[1], reverse=True)
print(counter_list[:20])
label = list(map(lambda x: x[0], counter_list[:20]))
value = list(map(lambda y: y[1], counter_list[:20]))
plt.bar(range(len(value)), value, tick_label=label)
plt.savefig('shuzu.jpg')
plt.show()
总结:读取txt文档中的数据,对数据进行分词,排序生成数组图。