#创作挑战赛#
小时候夏天最高兴的事,就是一群小伙伴等待着夜幕的降临、围在黑白电视机前等待着《天龙八部》的播出,这是童年最开心的事,还记得萧峰的豪爽、段誉的风流和虚竹的诚实以及神秘莫测的逍遥子,这些都是童年的偶像。
那么,如何快速分析出谁是《天龙八部》的主角呢?要想分析出谁是《天龙八部》的主角,可以采用数据分析三部曲来做?
数据分析三部曲乘风破浪原数据的准备、原数据可以采用爬虫的方式去抓取《天龙八部的》的全部章节、要不分析的结果会有偏差,或者直接百度一下“天龙八部 txt”点击回车就出来了,懂得都会懂。本文只讲数据分析、不讲爬虫后期会讲如何抓取《天龙八部》并保存成txt文档、或者参考我写的使用golang结合goquery抓取数据的爬虫 只需要修改下就可以用。
只待东风数据已准备好,接下来就是准备工作了,开发语言我们采用python语言版本是3..系列、还需要安装jieba和pandas这两个库php install pandans和pip install jieba,下载完之后,shell中输入pip list,如果看到
jieba 0.42.1
pandas 1.3.3
那么恭喜你、你可以快乐地造起来了~
傲游太虚- 读取数据、通过分词切割出来、主要人物出现的次数,按照次数的大小转换成表格数据。保存到csv文件中,以便图表分析展示使用
import jieba
import pandas as pd
with open('天龙八部.txt',encoding='utf-8') as file:
text = file.read()
words = jieba.lcut(text) # 全部
names = ["萧峰","段誉","虚竹","鸠摩智","天山童姥","阿紫",
"王语嫣","段正淳","阿朱","慕容复","段延庆","叶二娘",
"康敏","南海鳄神","云中鹤","游坦之"] # 主要人物统计,不是这几个人物不需要,主要原因是考虑本地磁盘不足的问题~
counts = {}
for word in words:
if word not in names:
continue
counts[word] = counts.get(word,0) 1
dataname=sorted(counts.items(), key=lambda a: a[1], reverse=True) #按高到低顺序,按照列表中第二个元素排序,以字典形式储存
list_log = []
for d in dataname:
list_log.append([d[0],d[1]]) # 不要思考太多,简单转换方法
df = pd.DataFrame(list_log,columns=['人物','统计数'])
df.to_csv('天龙八部-Data.csv')
print("基础分析保存成功~")
基础分析保存成功~
如果出现“基础分析保存成功~”的提示、那恭喜你,你已经走出了万里长征路上的第一步
- 数据有了,我们通过分析数据,来一点一点的证明谁是主角吧~
import pandas as pd
from pyecharts.charts import Bar,Grid
import pyecharts.options as opts
read = pd.read_csv('天龙八部-Data.csv',index_col=[0])
x = []
y = []
for r_name in read["人物"]:
x.append(r_name)
for r in read["统计数"]:
y.append(r)br
bar = (Bar()
.add_xaxis(x)
.add_yaxis("出镜次数:",y)
.set_global_opts(title_opts=opts.TitleOpts(title="《天龙八部》出镜最多的人物")))
grid = (Grid(init_opts=opts.InitOpts(width="985px",height="800px"))
.add(bar,grid_opts=opts.GridOpts(is_show=False,pos_right="0",pos_left="0")))
grid.render_notebook()
通过柱形图可以看出出镜最多的是1881次的段誉、最少的是1次的康敏,很明显《天龙八部》的主角是段誉。
- 词云图分析出镜最多的角色~
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = pd.read_csv('天龙八部-Data.csv',index_col=[0])
x = []
y = []
for r_name in read["人物"]:
x.append(r_name)
for r in read["统计数"]:
y.append(r)
name = x
value = y
data1 = [z for z in zip(name,value)]
chart = WordCloud()
chart.add('《天龙八部》谁是主角 ?',data_pair=data1,shape='star',word_size_range=[6,66])
chart.set_global_opts(
title_opts=opts.TitleOpts(title='《天龙八部》谁是主角 ?',
title_textstyle_opts=opts.TextStyleOpts(font_size=23)),
tooltip_opts=opts.TooltipOpts(is_show=True))
chart.render_notebook()
通过数据分析三部曲我们可以看出来谁是《天龙八部》的主角了,接下来的章节我们可以通过对人物更加深层次的解读来讲解分析他们的情感分析以及人物关系。
,