Python数据分析——谁才是《三体》的主角?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python数据分析——谁才是《三体》的主角?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4032字,纯文字阅读大概需要6分钟。
内容图文
![Python数据分析——谁才是《三体》的主角?](/upload/InfoBanner/zyjiaocheng/845/5eeb71f51cda4ef08a6685dc2615f4b1.jpg)
准备工作
matplotlib库
三体.txt(utf-8编码)
三体主要人物.txt(utf-8编码)
大纲
导入matplotlib.pyplot方法,创建1个Novel类,包含2个属性和4个方法。
import matplotlib.pyplot as plt class Novel(): """创建一个小说的类""" def __init__(self, novel_name, roles_name): """初始化类的属性"""
def one_role_nums(self, role_name): """统计一个人物名字出现的次数"""
def main_roles_nums(self): """统计主要人物名字出现的次数"""
def show_datas(self): """输出人物名字及出现次数"""
def draw_picture(self, title = ""): """可视化数据"""
初始化
def __init__(self, novel_name, roles_name): """初始化类的属性""" self.novel_name = novel_name self.roles_name = roles_name
one_role_nums方法
def one_role_nums(self, role_name): """统计一个人物名字出现的次数""" with open(self.novel_name, encoding = 'utf-8') as f: content = f.read() count = 0 if len(role_name) < 2 or len(role_name) > 4: return 0 if len(role_name) == 2: for i in range(len(content) - 1): if content[i] + content[i + 1] == role_name: count += 1 if len(role_name) == 3: for i in range(len(content) - 2): if content[i] + content[i + 1] + content[i + 2]== role_name: count += 1 if len(role_name) == 4: for i in range(len(content) - 3): if content[i] + content[i + 1] + content[i + 2] + content[i + 3] == role_name: count += 1 return count
main_roles_nums方法
def main_roles_nums(self): """统计主要人物名字出现的次数""" with open(self.roles_name, encoding = 'utf-8') as f: names = [line.strip() for line in f.readlines()] dic = {} for name in names: num = self.one_role_nums(name) if num: dic[name] = num dic = sorted(dic.items(), key = lambda k : k[1], reverse = True) return dic
show_datas方法
def show_datas(self): """输出人物名字及出现次数""" dic = self.main_roles_nums() for x in dic: print(x[0], x[1])
draw_picture方法
def draw_picture(self, title = ""): """可视化数据""" dic = self.main_roles_nums() names, nums = [], [] for x in dic: names.append(x[0]) nums.append(x[1]) n = list(range(len(names))) plt.figure(figsize=(12, 9)) plt.bar(n, nums, alpha=0.5) plt.xlim((0, len(names))) plt.xticks(n, names, rotation = 30, fontproperties = "SimHei", fontsize = 24) plt.title(title, fontproperties = "SimHei", fontsize = 40) plt.show()
创建对象并调用方法
novel = Novel("三体.txt", "三体主要人物.txt") novel.show_datas() novel.draw_picture("三体主要人物名字出现次数")
全部代码
import matplotlib.pyplot as plt class Novel(): """创建一个小说的类""" def __init__(self, novel_name, roles_name): """初始化类的属性""" self.novel_name = novel_name self.roles_name = roles_name def one_role_nums(self, role_name): """统计一个人物名字出现的次数""" with open(self.novel_name, encoding = 'utf-8') as f: content = f.read() count = 0 if len(role_name) < 2 or len(role_name) > 4: return 0 if len(role_name) == 2: for i in range(len(content) - 1): if content[i] + content[i + 1] == role_name: count += 1 if len(role_name) == 3: for i in range(len(content) - 2): if content[i] + content[i + 1] + content[i + 2]== role_name: count += 1 if len(role_name) == 4: for i in range(len(content) - 3): if content[i] + content[i + 1] + content[i + 2] + content[i + 3] == role_name: count += 1 return count def main_roles_nums(self): """统计主要人物名字出现的次数""" with open(self.roles_name, encoding = 'utf-8') as f: names = [line.strip() for line in f.readlines()] dic = {} for name in names: num = self.one_role_nums(name) if num: dic[name] = num dic = sorted(dic.items(), key = lambda k : k[1], reverse = True) return dic def show_datas(self): """输出人物名字及出现次数""" dic = self.main_roles_nums() for x in dic: print(x[0], x[1]) def draw_picture(self, title = ""): """可视化数据""" dic = self.main_roles_nums() names, nums = [], [] for x in dic: names.append(x[0]) nums.append(x[1]) n = list(range(len(names))) plt.figure(figsize=(12, 9)) plt.bar(n, nums, alpha=0.5) plt.xlim((0, len(names))) plt.xticks(n, names, rotation = 30, fontproperties = "SimHei", fontsize = 24) plt.title(title, fontproperties = "SimHei", fontsize = 40) plt.show() novel = Novel("三体.txt", "三体主要人物.txt") novel.show_datas() novel.draw_picture("三体主要人物名字出现次数")
内容总结
以上是互联网集市为您收集整理的Python数据分析——谁才是《三体》的主角?全部内容,希望文章能够帮你解决Python数据分析——谁才是《三体》的主角?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。