python数据工程师养成(1)--小说字频统计

简介

最近看到了一本好书,名字叫《Python全栈数据工程师养成攻略》,随便翻翻感觉对个人学习颇有裨益,故打算跟着书上的实例学完它。本书采用Python2.7和Subline编辑器,不过由于个人做数据科学经常用的是Anaconda里面的几款编辑器,所以本次实例采用Python3.5和Spyder编辑器,并且对原项目的语法上进行了一些修改。

本次实例比较基础,就不做过多说明了。

数据源

本项目中采用读取txt文件的方式进行字频统计,所以选择了知名网文《雪中悍刀行》进行读取,从小说网站上下载得到txt文件,并重新保存至utf8格式,得到我们接下来要使用的"xzutf8.txt"文件,大小为13.5MB,字数还是非常多的。

目标

  1. 统计共出现了几个不同的汉字(分类)。
  2. 每个汉字共出现了几次(频数)。
  3. 哪些汉字出现的最频繁(排序)。

步骤

第一步:读取准备好的"xzutf8.txt"文件,并创建一个list()和一个dict{}存放相关内容。

# -*- coding: utf-8 -*-
'''
由于读取写入都有中文,本次案例统一采用utf8编码
'''                                        
fr = open('xzutf8.txt','r',encoding ="utf8")   #读取雪中悍刀行小说文件 
characters = []                                #存放出现的汉字                                              
stat = {}                                      #存放每个汉字的出现次数

第二步:对每一行进行遍历并统计文字。

'''
for循环遍历每一行文字
对于文件中每一行用strip方法去掉空格
如果那行为空则用continue跳过
'''               
for line in fr:
    line = line.strip()
    if len(line) == 0:
        continue
    for x in range(0,len(line)):        #对每一行内文字进行扫描
        if line[x] in [' ','\t','\n','。',',',
               '(',')','(',')',':',':','-','?',
               '!','《','》','、',';','“','”','□','……']:
            continue                    #跳过标点符号
        if not line[x] in characters: 
            characters.append(line[x])  #出现新字符添加进list
        if not line[x] in stat:         #出现新字符添加进字典
            stat[line[x]] = 0
        stat[line[x]] += 1              #相同字符次数+1
print(len(characters))                  #不同字符数结果显示
fr.close()                              #读取完成退出

第三步,把字典转化为list进行排序,并将结果写入新的txt文件中。

'''
接下来对结果进行字数频数的排序
调用sort方法,对字典的值进行排序,True表示降序排序
将结果写入txt文件中
'''
stat = sorted(stat.items(),key = lambda d:d[1],reverse = True) 
                                            #d[1]即字典第二个属性值,文字出现次数
fw = open('result.txt','w',encoding="utf8")
for item in stat:
    fw.write(item[0]+','+str(item[1])+'\n') #读取字典的两个属性并换行
fw.close()                                  #写入完成退出

总结

result
以上是最后的结果,没想到""竟然是用的最多的,达到10万次…

sword
还有这里的剑竟然有14000次,这个作者是有多喜欢剑啊,明明这本书主角是用刀的,所以不过瘾写了下一本主角用剑的小说《剑来》是吗,哈哈哈。

本次实例中涵盖了许多知识点,其中最容易出错的就是Python的中文编码问题,做项目时要格外小心,读者也可以去参考一下其他的资料来加深理解。

参考书目

[1]Python全栈数据工程师养成攻略(2017).张宏伦.人民邮电出版社.北京.

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值