请上传程序文件。 读取”三国人名汇总.txt”中的人物名字,读取“三国演义.txt”的全部内容,先统计所有人物的名字在书本中出现的次数,并对出现次数超过100次的人物绘制一个柱状图,如下图所示。(数据文件下载链接:https://pan.baidu.com/s/1b81lMIx3In-V64vs7bsHkw (Links to an external site.),提取码:jg41),请以python程序解决这个问题
时间: 2024-03-30 13:38:06 浏览: 226
好的,以下是Python程序代码:
```python
import matplotlib.pyplot as plt
# 读取人名汇总文件
with open("三国人名汇总.txt", encoding="utf-8") as f:
names = f.read().splitlines()
# 读取三国演义文件
with open("三国演义.txt", encoding="utf-8") as f:
content = f.read()
# 统计人物出现次数
count = {name: content.count(name) for name in names}
# 绘制柱状图
x = [name for name in count if count[name] > 100]
y = [count[name] for name in x]
plt.bar(x, y)
plt.xticks(rotation=90)
plt.xlabel("人物名字")
plt.ylabel("出现次数")
plt.title("三国演义人物出现次数柱状图")
plt.show()
```
说明:首先读取两个文件,分别为人名汇总文件和三国演义文件,然后统计人物出现次数,最后筛选出现次数超过100次的人物绘制柱状图。
相关问题
#请上传程序文件。 #读取”三国人名汇总.txt”中的人物名字,读取“三国演义.txt”的全部内容 #先统计所有人物的名字在书本中出现的次数 #并对出现次数超过100次的人物绘制一个柱状图
很抱歉,我无法上传程序文件。但是我可以提供一份Python代码来完成你的要求:
```python
import jieba
import matplotlib.pyplot as plt
from collections import Counter
# 读取人名列表
with open('三国人名汇总.txt', 'r', encoding='utf-8') as f:
names = [line.strip() for line in f.readlines()]
# 读取三国演义内容
with open('三国演义.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 使用jieba分词对内容进行处理
words = list(jieba.cut(content))
# 统计人名出现的次数
name_counts = Counter()
for word in words:
if word in names:
name_counts[word] += 1
# 绘制柱状图
top_names = []
name_counts = name_counts.most_common()
for name, count in name_counts:
if count > 100:
top_names.append(name)
plt.bar(name, count)
plt.xticks(rotation=90)
plt.title('Top Characters in Three Kingdoms')
plt.xlabel('Name')
plt.ylabel('Count')
plt.show()
```
请确保在运行代码前已经安装了jieba和matplotlib库。该代码会读取当前目录下的“三国人名汇总.txt”和“三国演义.txt”文件,统计人名出现的次数,并绘制出现次数超过100的人物的柱状图。
使用python读取本地文件"三国演义.txt",并统计出《三国演义》排名前十五的人物以及其出现的次数。使用词云展示出现的人物。
要使用Python读取本地文件“三国演义.txt”,并统计人物及其出现次数,然后制作词云图,可以按照以下步骤操作:
1. 首先,你需要安装必要的库,如`jieba`用于分词,`collections`用于计数,以及`wordcloud`用于生成词云。你可以通过命令行输入以下命令安装它们:
```
pip install jieba collections wordcloud pillow
```
2. 然后,你可以使用下面的代码段读取文件、分词,并统计人物名称:
```python
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文本文件
with open('三国演义.txt', 'r', encoding='utf-8') as file:
content = file.read()
# 分词
tokens = jieba.lcut(content)
# 提取人名,这里假设人名以"(”开头,以“)”结束,实际需要调整
names = [token for token in tokens if '(' in token and ')' in token]
# 统计词频
name_counts = Counter(names)
# 取出频率最高的前15个人物及频率
top_15_names = name_counts.most_common(15)
```
3. 接下来,创建词云图:
```python
# 设置词云样式
def generate_wordcloud(data, width=800, height=600):
wc = WordCloud(font_path='simhei.ttf', background_color='white', width=width, height=height).generate_from_frequencies(data)
# 显示词云
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()
# 生成词云
generate_wordcloud({name[0]: name[1] for name in top_15_names})
```
在这个过程中,我们假设人名是以括号包围的形式出现的。如果实际情况复杂,比如有多种表示人物的方式(如绰号、官职等),你可能需要进一步清洗和处理数据。
阅读全文