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 = {"将军", "却说", "不能", "后主", "上马", "不知", "天子", "大叫", "众将", "不可",

"主公", "蜀兵", "只见", "如何", "商议", "都督", "一人", "汉中", "人马",

"陛下", "魏兵", "天下", "今日", "左右", "东吴", "于是", "荆州", "不能", "如此",

"大喜", "引兵", "次日", "军士", "军马","二人","不敢"} # 这些文字是要排出掉的,多次运行程序所得到的

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

for word in remove:

del counts[word] #匹配文字相等就删除

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 = {"将军", "却说", "不能", "后主", "上马", "不知", "天子", "大叫", "众将", "不可",

"主公", "蜀兵", "只见", "如何", "商议", "都督", "一人", "汉中", "人马",

"陛下", "魏兵", "天下", "今日", "左右", "东吴", "于是", "荆州", "不能", "如此",

"大喜", "引兵", "次日", "军士", "军马","二人","不敢"} # 这些文字是要排出掉的,多次运行程序所得到的

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

for word in remove:

del counts[word] #匹配文字相等就删除

items = list(counts.items())

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

#导出数据

fo = open("三国人物出场次数.txt", "a", encoding='utf-8')

for i in range(10):

word, count=items[i]

word = str(word)

count = str(count)

fo.write(word)

fo.write(':') #使用冒号分开

fo.write(count)

fo.write('\n') #换行

fo.close() #关闭文件

现在咱们运行看是否导出,运行结果如下图。

可以看到已经生成一个名为三国人物出场次数.txt的文件,而文件里的内容就是咱们刚才的数据。

三、数据可视化

想要可视化首先咱们要有数据,咱们把刚才导出的数据转换为字典形式。代码如下

#将txt文本里的数据转换为字典形式

fr = open('三国人物出场次数.txt', 'r', encoding='utf-8')

dic = {}

keys = [] # 用来存储读取的顺序

for line in fr:

v = line.strip().split(':')

dic[v[0]] = v[1]

keys.append(v[0])

fr.close()

print(dic)

-运行结果如下

使用pyecharts绘图

先倒入模块

from pyecharts import options as opts

from pyecharts.charts import Bar

代码如下

# 绘图

list1=list(dic.keys())

list2=list(dic.values()) #提取字典里的数据作为绘图数据

c = (

Bar()

.add_xaxis(list1)

.add_yaxis("人物出场次数",list2)

.set_global_opts(

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),

)

.render("人物出场次数可视化图.html")

)

运行程序看到目录下会生成一个名为人物出场次数可视化图.html的文件,如下图

使用浏览器打开,就可以看到数据以图形的方式呈现出来。

三、全部代码呈现

#《三国演义》的人物出场次数Python代码:

import jieba #导入库

import os

from pyecharts import options as opts

from pyecharts.charts import Bar

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

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

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

"主公", "蜀兵", "只见", "如何", "商议", "都督", "一人", "汉中", "人马",

"陛下", "魏兵", "天下", "今日", "左右", "东吴", "于是", "荆州", "不能", "如此",

"大喜", "引兵", "次日", "军士", "军马","二人","不敢"} # 这些文字是要排出掉的,多次运行程序所得到的

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

for word in remove:

del counts[word] #匹配文字相等就删除

items = list(counts.items())

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

#导出数据

fo = open("三国人物出场次数.txt", "a", encoding='utf-8')

for i in range(10):

word, count=items[i]

word = str(word)

count = str(count)

fo.write(word)

fo.write(':') #使用冒号分开

fo.write(count)

fo.write('\n') #换行

fo.close() #关闭文件

#将txt文本里的数据转换为字典形式

fr = open('三国人物出场次数.txt', 'r',encoding='utf-8' )

dic = {}

keys = [] # 用来存储读取的顺序

for line in fr:

v = line.strip().split(':')

dic[v[0]] = v[1]

keys.append(v[0])

fr.close()

print(dic)

# 绘图

list1=list(dic.keys())

list2=list(dic.values()) #提取字典里的数据作为绘图数据

c = (

Bar()

.add_xaxis(list1)

.add_yaxis("人物出场次数",list2)

.set_global_opts(

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),

)

.render("人物出场次数可视化图.html")

)

标签:elif,rword,word,python,items,可视化,counts,txt,前十名

来源: https://www.cnblogs.com/ke-wu-a/p/14026658.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

沈航计算机考研上岸,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼再写一下我的初试经验。今天晚上有时间再更初试政治:政治切忌开始太早,战线过长,我是从9月开始,跟着肖秀荣的视频课看了一遍精讲精练,做了一遍1000题,一遍真题…

你真的了解盒模型么

说到前端, 大家第一反应是不是都是vue、react、webpack等这些大大小小的框架或者工具, 但其实这些都是和js相关的, 真正的样式会被大家忽略。其实真正呈现给大家看到华丽的页面, 都是样式才让他们多了那份色彩。那么大家觉得简单的css样式, 真的简单么? 让我们一起来看下, 开启…

ios10前台收到推送_iOS 13 beta 2 推送 | iOS 13 热门疑问解答

朋友们周二早,今天这期分享主要是给大家解答几个 iOS 13 相关的热门问题。今天的头条推送的是 HFP 的面膜,靠谱产品,有需求的朋友可以去他们的天猫旗舰店或者小程序商场看下。是否可以直接升级 ?今天苹果正式推送了 iOS 13 beta 2…

认知科学顶刊:挑战过去50年神经科学观点,人类智力的优势或来自于记忆储存方式...

来源:brainnews莱斯特大学的神经科学专家发表了一篇文章,打破了过去50年神经科学的观点,认为人类储存记忆的方式是其智力优于动物的关键因素。该文章发表在Trends in Cognitive Sciences杂志。先前的研究认为,海马体(大…

专业文化计算机艺考生,专业课和文化课都优秀?那艺考生的你不知道这个就损失大了...

原标题:专业课和文化课都优秀?那艺考生的你不知道这个就损失大了高水平艺术团招生作为高考特殊类型招生中的一种,很多人一直把它和艺术类招生傻傻分不清楚。简单来说,高水平艺术团招生和艺术类招生是两种不同的招生类别。详细说&a…

linux发送邮件的功能总结

使用linux系统服务器发送邮件的功能在平时工作中也是经常需要用到的,在这里总结一下,供以后参考: 1、直接使用管道发送邮件 echo "hello,this is the content of mail.welcome to www.mzone.cc" | mail -s "Hello from mzone.…

雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统

三坐标测量机控制原理三坐标测量机获取测头触碰点相对于系统原点的三坐标值,然后经特定算法处理,得到尺寸公差或形位公差。测头在X、Y,Z三个相互垂直的导轨上进行复合运动,实现逐点测量;或按一定运动轨迹,实…

计算机综合应用实验,计算机综合应用实验二WORD应用.doc

文档介绍:第二章 WORD 应用设置文档打印为“横向”文档的“纵向”和“横向”可以满足不通纸张, 和不同用户的不同需求。在打印时可以根据情况进行调整选择, 方法如下: 点击菜单“文件”→“页面设置”命令, 在页边距选项卡中的“方向”选择“横向”,如图: 如何将网页…

如何结合因果与强化学习?看最新《因果强化学习:动机,概念,挑战与应用》报告,85页ppt...

来源:专知强化学习(RL)[17]和因果推理[10]都是机器学习不可缺少的组成部分,在人工智能中都发挥着至关重要的作用。最初促使我整合这两者的是机器学习在医疗保健和医学领域的最新发展。回顾过去,人类自出生以来就不可避免地伴随着疾病&#xf…

Leetcode--75. 颜色分类

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码…

boot druid 长时间不连接 异常_Spring Boot学习:如何使用Druid数据源

Druid概述Druid是阿里巴巴开源的一款非常优秀的数据库连接池。在Java应用程序开发中,常用的连接池还有DBCP、C3P0、Proxool等。SpringBoot2.X 版本开始默认的是HikariCP(号称性能最好的数据库连接池),Druid性能好而且监控也比较方便。刚兴趣的同学可以读一下,GitHub…

演讲实录丨中科大陈小平教授《从封闭性到非封闭性:2020到2035年智能机器的机遇和挑战》...

来源:中国人工智能学会陈小平中国科学技术大学机器人实验室主任、教授以下是陈小平教授的演讲实录:非常高兴有这个机会进行中、新学术交流。本报告包括四方面内容。第一,关于人工智能(简称AI)的两种类型,一…

充电电流用软件测试准吗,实验:1A与2.1A对手机充电电流一样的,小伙伴再也不用担心咯...

新福克斯舒适,USB在手套箱(不方便啊,郁闷),插U盘放MP3,一个行车记录仪,插在点烟器里,平时没事也够用,要跑一次长途,用iPhone 5C高德导航,靠,问题来&#…

关于线性代数的理解

自从大学学了线性代数以来, 对线性代数的概念一直很迷惑. 感觉中间像是隔了一层布一样, 怎么都理解不了线性代数是个什么东西. 读了人工智能以后, 发现没有线性代数的扎实基础根本学不了人工智能, 特别是在图像处理还是自然语言处理的过程中, 线性代数是 一个非常重要的基础, 可…

Leetcode--31. 下一个排列

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是…

python 结尾回车_理解不了Python正则表达式?我帮你搞定

点击蓝字“python教程”关注我们哟!在学习Python的过程中,我们难免会遇到比较晦涩、难以理解的内容,比如Python中的正则表达式、面向对象等内容,为了更好地帮助大家理解,我们今天就先为大家详细解读Python正则表达式&a…

怎么设置班级文件服务器,如何开设论坛如题下学期老师组织学生开一个班级论坛有专用服务器接下 爱问知识人...

很多朋友都希望有一个自己的论坛,但是做论坛又谈何容易?这个问题很大,如果自己编程开发的话,至少需要半个月不睡觉甚至好几个月、好几年的时间。一个好的论坛,便于网友浏览、占用服务器资源少、运行速度快是最重要的。…

陈左宁院士:人工智能模型和算法的七大发展趋势

来源:C114通信网、北京物联网智能技术应用协会在近日举行的“第十六届CCF全过高性能计算学术年会”上,中国工程院副院长、中国科协副主席、中国工程院院士陈左宁发表了题为《人工智能进展对算力需求分析》的演讲。在演讲中,她阐述了人工智能模…

ABAP术语-World Wide Web

World Wide Web原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/21/1115728.htmlInternet service. The World Wide Web generates documents and presents them to Internet users in a standard format known as HTML. These documents can be linked to…

Leetcode--169. 求众数

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 排序之后遍历一次即可 …