导入模块
import matplotlib.pyplot as plt
from collections import Counter
from docx import Document
如果没有库,则需要pip install
对应的库
读取文档
使用docx库读取word文档:
# 读取word文档
doc = Document('example.docx')
# 将文档中所有段落的文本合并为一个字符串
text = ''
for para in doc.paragraphs:
text += para.text
频率分析
这次用新方法collections.Counter()
进行频率分析
# 使用collections库进行频率分析
counter = Counter(text.lower().split())
# 取出前10个出现频率最高的单词
top_words = counter.most_common(10)
制图
解决中文乱码问题
函数 | 功能 |
---|---|
正常显示中文标签 | plt.rcParams['font.sans-serif'] |
用来正常显示负号 | plt.rcParams['axes.unicode_minus'] |
刻度的大小 | plt.rcParams['axes.labelsize'] |
线的粗细 | plt.rcParams['lines.linewidth'] |
x轴的大小 | plt.rcParams['xtick.labelsize'] |
y轴的大小 | plt.rcParams['ytick.labelsize'] |
图例大小 | plt.rcParams['legend.fontsize'] |
图的大小 | plt.rcParams['figure.figsize'] |
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['axes.labelsize'] = 16
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['xtick.labelsize'] = 14
plt.rcParams['ytick.labelsize'] = 14
plt.rcParams['legend.fontsize'] = 14
plt.rcParams['figure.figsize'] = [12,8]
数据合法化
用sorted()
,lambda
, 列表推导将数据符合函数要求
top_words=sorted(dic.items(), key=lambda x: x[1])[-11:-1]
#print(top_words)
labels = [w[0] for w in top_words]
#print(labels)
sizes = [w[1] for w in top_words]
#print(sizes)
绘制饼图
explode = (0.15,0,0,0,0,0,0,0,0,0)
plt.pie(
sizes, labels=labels, autopct='%1.1f%%',
textprops={'fontsize':13,'color':'k'},
explode = explode,
shadow=True,startangle=20,pctdistance = 0.8
)
plt.axis('equal')
plt.show()
#startangle,为起始角度,0表示从0开始逆时针旋转,为第一块。
#pctdistance,百分比的文本离圆心的距离为0.8