数据分析程序员

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

2018-09-17  本文已影响70人  喝醉酒的咖喱鸡

前言

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

后记

上一篇 下一篇

猜你喜欢

热点阅读