python三国演义人物 统计分析前20个_使用python统计《三国演义》小说里人物出现次数前十名,并实现可视化。...

一、安装所需要的第三方库

jieba (jieba是优秀的中文分词第三分库)

pyecharts (一个优秀的数据可视化库)

使用pycharm安装库

打开Pycharm选择【File】下的Settings

出现下面页面,

选择右边的【+】出现下面页面,在此页面顶端搜索想要的库,然后安装就可以了

二、编写代码

import jieba #导入库

import os

print("人物出现次数前十名:")

txt = open('三国演义.txt', 'r' ,encoding='gb18030').read()

words = jieba.lcut(txt)

counts = {}

for word in words:

if len(word) == 1:

continue

elif word == "诸葛亮" or word == "孔明曰":

rword = "孔明"

elif word == "关公" or word == "云长":

rword = "关羽"

elif word == "玄德" or word == "玄德曰":

rword = "刘备"

elif word == "孟德" or word == "丞相":

rword = "曹操" # 把相同意思的名字归为一个人

else:

rword = word

counts[rword] = counts.get(rword, 0) + 1

items = list(counts.items())

items.sort(key=lambda x: x[1], reverse=True)

for i in range(10):

word, count=items[i]

print("{}:{}".format(word, count)) # 打印前十名名单

结果如下图:

可以看到这里面有很多不是人物的名字,所以咱们要把这些删掉。更改代码如下

import jieba #导入库

import os

print("人物出现次数前十名:")

txt = open('三国演义.txt', 'r' ,encoding='gb18030').read()

remove = {"将军", "却说", "不能", "后主", "上马", "不知", "天子", "大叫", "众将", "不

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你实现这个功能。首先,我们需要先获取《三国演义》的文本数据。这使用的是从 Project Gutenberg 上下载的《三国演义》的文本文件。你可以从这个链接上下载:https://www.gutenberg.org/ebooks/4367 接下来,我们可以使用 Python 的 re 模块和 collections 模块来实现人物出场次数统计。具体实现代码如下: ```python import re from collections import Counter # 读取文本文件 with open('sgyy.txt', 'r', encoding='utf-8') as f: text = f.read() # 使用正则表达式匹配人物名称 pattern = re.compile('[\u4e00-\u9fa5]{2,5}(?:·[\u4e00-\u9fa5]{2,5})*') names = pattern.findall(text) # 统计人物出现次数 name_counts = Counter(names) # 获取出现次数最多的10个人物 top_10 = name_counts.most_common(10) # 输出结果 print('出现次数最多的10个人物:') for i, (name, count) in enumerate(top_10): print(f"{i+1}. {name}: {count}") ``` 运行这段代码,就可以得到出现次数最多的10个人物的名称和出现次数了。 对于可视化,我们可以使用 Python 的 matplotlib 库来实现。我们可以将10个人物的名称和出现次数绘制成一个柱状图。具体实现代码如下: ```python import matplotlib.pyplot as plt # 绘制柱状图 plt.bar([name for name, count in top_10], [count for name, count in top_10]) # 设置图表标题和横纵坐标标签 plt.title('出现次数最多的10个人物') plt.xlabel('人物名称') plt.ylabel('出现次数') # 显示图表 plt.show() ``` 运行这段代码,就可以得到一个柱状图,显示出现次数最多的10个人物出现次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值