【频率分析法与Python程序代码实现(三):Docx/Collections/Matplotlib】

本文介绍了如何使用Python库如docx和matplotlib对Word文档进行文本处理,包括读取文档、频率分析,以及解决中文显示问题后,通过collections.Counter和matplotlib绘制出文档中高频词的饼状图。
摘要由CSDN通过智能技术生成

在这里插入图片描述

导入模块

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

在这里插入图片描述

  • 24
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值