前言
最近在学习python数据统计相关的知识,基于‘实践出真知’以及‘知之者不如好之者,好之者不如乐之者’两大亘古不变的理论,特撰写本文。
统计结果
为了满足部分同学强烈的好奇心,小码哥先将部分统计结果公布出来。若想了解详细操作流程且有一定python基础的同学可以继续阅读。
由上图我们可以知道,西游记中出现最多的字是"道" 出现了11078次
数据分析
数据获取
本次小码哥使用的数据是问度娘要来的,不想麻烦的同学可以直接用小码哥的数据(点击下载)
数据读入
数据下载到本地后,用python内置函数open() 将数据读入
fr = open('数据文件路径','r')
characters = [] #存储所有汉字
stat = {} #存储每个汉字出现的次数
数据处理
由于原数据中含有大量标点符号、空白、换行等,为了不影响分析结果我们应该先把这些杂质剔除。
for line in fr:
# 去掉每一行两边的空白
line = line.strip()
# 如果为空行则跳过该轮循环
if len(line) == 0:
continue
# 将文本转为unicode,便于处理汉字
line = unicode(line)
# 遍历该行的每一个字
for x in xrange(0, len(line)):
# 去掉标点符号和空白符
if line[x] in [' ', '\t', '\n', '。', ',', '(', ')', '(', ')', ':', '□', '?', '!', '《', '》', '、', ' ',']', ';', '“', '”', '……']:
continue
# 尚未记录在characters中
if not line[x] in characters:
characters.append(line[x])
# 尚未记录在stat中
if not stat.has_key(line[x]):
stat[line[x]] = 0
# 汉字出现次数加1
stat[line[x]] += 1
数据输出
为了便于观察,小码哥将结果输出为一个.csv 文件(可导入Excel)
# lambda生成一个临时函数
# d表示字典的每一对键值对,d[0]为key,d[1]为value
# reverse为True表示降序排序
stat = sorted(stat.items(), key=lambda d:d[1], reverse=True)
fw = open('result.csv', 'w')
for item in stat:
# 进行字符串拼接之前,需要将int转为str
fw.write(item[0] + ',' + str(item[1]) + '\n')
后记
- 鉴于有热心同学在评论里建议小码哥生成词云,小码哥很愉快的采纳了这个建议,后续将上传。
- 阅读完本文,你有什么感受或建议都可以写在评论里让小码哥知道,小码哥看到后会第一时间回复。
- 若大家觉得本篇文章还不错,麻烦在右下角给小码哥点个喜欢,鼓励小码哥继续创作!