1) 博客开头给出自己的基本信息,格式建议如下:

  • 学号2017****7128
  • 姓名:肖文秀
  • 词频统计及其效能分析仓库:https://gitee.com/aichenxi/word_frequency1

2) 程序分析,对程序中的四个函数做简要说明。要求附上每一段代码及对应的说明。

process_file作用:打开文件,读取文件到缓冲区,关闭文件

# 读文件到缓冲区
def process_file(file_name):
    try:
        # 打开文件
        file_read=open(file_name,"r")
    except IOError as s:
        print (s)
        return None
    try:
        # 读文件到缓冲区
        bvffer=file_read.read()
    except:
        print ("Read File Error!")
        return None

    #关闭文件
    file_read.close()
    return bvffer

process_buffer作用:读取文件存入字典,处理读取文件时的大小写、符号问题。统计单词出现频率

#缓冲区字符串分割成带有词频的字典
def process_buffer(bvffer):
    if bvffer:
        word_freq = {}
        # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq

        #将文件大写字母替换为小写 ,解决大小写不同问题
        bvffer=bvffer.lower()

        #将文件中所有替换为标点符号替换为空格
        for i in '.,!?':
            bvffer=bvffer.replace(i, " ")

        #通过空格切分单词,存储类型为列表
        words=bvffer.strip().split()

        #遍历列表中所有单词,设字典中value=0,
        for word in words:
            #判断是否在字典中,若在,value+1,否则,value=0
            if word in word_freq:
                word_freq[word] += 1
            else:
                word_freq[word] = 0

        return word_freq

output_result作用:输出出现频率前10的单词

#将字典按词频排序并输出排名前十的词频对
def output_result(word_freq):
    if word_freq:
        sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
        for item in sorted_word_freq[:10]:  # 输出 Top 10 的单词
            print(item)

main作用:封装主函数,传入文件名称,调用定义函数,并对其传入参数

if __name__ == "__main__":由于使用原本的代码报错,现将原代码改为如下代码

def main():

    #指定文件
    file_name = "Gone_with_the_wind.txt"
    #调用定义函数、传参数
    bvffer = process_file(file_name)
    word_freq = process_buffer(bvffer)
    output_result(word_freq)

if __name__ == "__main__":

    #导入分析Python程序性能监视模块
    import cProfile

    #导入用来分析cProfile输出的文件内容
    import pstats

    # 直接把分析结果打印到控制台
    cProfile.run("main()", "result")

    # 创建Stats对象
    p = pstats.Stats("result")

    # 按照调用的次数排序
    p.strip_dirs().sort_stats("call").print_stats()

    # 按照运行时间和函数名进行排序
    #p.strip_dirs().sort_stats("cumulative", "name").print_stats(0.5)

3) 性能分析结果及改进。

共执行21831次,用时0.657秒

其中执行次数最多的代码:

执行时间最长的代码:

- 给出改进优化方法,根据方法的正确性以及语言描述质量给分,最高2分

问题:输出结果中包含标点符号:”

- 给出改进代码

        #将文件中非字母替换为空格
        for i in [chr(x) for x in range(ord('a'), ord('z') + 1)]:
            if i:
                continue
            else:
                bvffer=bvffer.replace(i, " ")

运行结果:

4) 程序运行命令、运行结果截图以及改进后的程序运行命令及结果截图 。

改进前,运行结果

改进后,运行结果

5) 给出你对此次任务的总结与反思。

反思:在此次任务的中,认识到对字符串的处理有很多遗忘的地方,对字典、列表、数组的使用能力有待加强。

总结:在完成任务的同时,也捧起书,复习了基本数据类型相关的知识,重温了python的文件式启动与运行方法

python词频统计及其效能分析的更多相关文章

  1. Python 词频统计

    利用Python做一个词频统计 GitHub地址:FightingBob [Give me a star , thanks.] 词频统计 对纯英语的文本文件[Eg: 瓦尔登湖(英文版).txt]的英文 ...

  2. python实现四则运算和效能分析

    代码github地址:https://github.com/yiduobaozhi/-1 PSP表格: 预测时间(分钟) planning 计划 15 Estimate 估计这个任务需要多少时间 10 ...

  3. 大数据python词频统计之本地分发-file

    统计某几个词在文章出现的次数 -file参数分发,是从客户端分发到各个执行mapreduce端的机器上 1.找一篇文章The_Man_of_Property.txt如下: He was proud o ...

  4. 大数据python词频统计之hdfs分发-cacheArchive

    -cacheArchive也是从hdfs上进分发,但是分发文件是一个压缩包,压缩包内可能会包含多层目录多个文件 1.The_Man_of_Property.txt文件如下(将其上传至hdfs上) ha ...

  5. 大数据python词频统计之hdfs分发-cacheFile

    -cacheFile 分发,文件事先上传至Hdfs上,分发的是一个文件 1.找一篇文章The_Man_of_Property.txt: He was proud of him! He could no ...

  6. python词频统计

    1.jieba 库 -中文分词库 words = jieba.lcut(str)  --->列表,词语 count = {} for word in words: if len(word)==1 ...

  7. C#词频统计 效能分析

    在邹老师的效能分析的建议下对上次写过的词频统计的程序进行分析改进. 效能分析:个人很浅显的认为就是程序的运行效率,代码的执行效率 1.VS 提供了自带的分析工具:performance tool (性 ...

  8. 效能分析——词频统计的java实现方法的第一次改进

    java效能分析可以使用JProfiler 词频统计处理的文件为WarAndPeace,大小3282KB约3.3MB,输出结果到文件 在程序本身内开始和结束分别加入时间戳,差值平均为480-490ms ...

  9. 《构建之法》教学笔记——Python中的效能分析与几个问题

    <构建之法:现代软件工程>中第2章对效能分析进行了介绍,基于的工具是VSTS.由于我教授的学生中只有部分同学选修了C#,若采用书中例子讲解,学生可能理解起来比较困难.不过所有这些学生都学习 ...

随机推荐

  1. GVIM 设置 vimrc

    set expandtab set nobackup set nosmartindent set noautoindent set ruler au BufRead,BufNewFile *.sv s ...

  2. 03-在tomcat部署网站多个网站

    在Tomcat服务器发布两个项目 CRM  OA server.xml配置文件 <Context docBase="C:\crm" path="/crm" ...

  3. MemCache在网站中的使用

    MemCache安装好后,网站一直没法使用,后来查找资料,发现需要在配置文件里写几行代码,如下所示 <enyim.com> <memcached protocol="Tex ...

  4. (最完美)红米手机4的USB调试模式在哪里开启的经验

    每次我们使用安卓手机通过数据线连接上Pc的时候,或者使用的有些应用比如我们团队营销部门每次使用的应用引号精灵,之前的老版本就需要开启Usb开发者调试模式下使用,现每次新版本不需要了,如果手机没有开启U ...

  5. IDEA 倒入maven项目下载很慢

    1.找到安装maven的路径 2.直接搜索settings.xml文件 <mirror> <!--This sends everything else to /public --&g ...

  6. 详解vuex

    一.vuex的作用: vuex是一个专为Vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式变化. 作用:组件之间的通信,大规模的逻 ...

  7. 【MySQL】5.7 复制

    参考:http://www.cnblogs.com/zhoujinyi/p/5704567.html 参考:http://www.innomysql.com/article/25656.html 参考 ...

  8. wdk1703+vs2015编译的诡异问题

    最近将wdk升级到1703(10.0.15063.0)版本,编译一个新建的minifiter项目居然出现了失败 提示错误为 WindowsDriver.common.targets(460,5): e ...

  9. python读取excel,返回dic列表

    def get_xls_sheets_as_dic(pro_name, xls_name): dic_list = [] xls_path = os.path.join(BASE_PATH, &quo ...

  10. ---rk3288 mipi 整发(适用于新版的kernel 4.4 )

    http://www.pianshen.com/article/7245318143/ 老的Anroid 5.1 下 Linux 3.10 的数据的名字和 处理方式有不少不同 不过rk3128 还在走 ...