西游记中出现最多的字竟然是这个字

前言

最近在学习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')

后记

  • 鉴于有热心同学在评论里建议小码哥生成词云,小码哥很愉快的采纳了这个建议,后续将上传。
  • 阅读完本文,你有什么感受或建议都可以写在评论里让小码哥知道,小码哥看到后会第一时间回复。
  • 若大家觉得本篇文章还不错,麻烦在右下角给小码哥点个喜欢,鼓励小码哥继续创作!

你可能感兴趣的:(西游记中出现最多的字竟然是这个字)