zoukankan      html  css  js  c++  java
  • 公开课 之 心蓝 数据分析 (课堂笔记)

    用最基本知识对英文小说进行统计单词个数,出现次数,

    # 心蓝之数据分析
    '''
    统计小说单词个数,出现次数,
    '''
    import string # 输出所有标点箱号
    from matplotlib import pyplot as plt # 第三方画图库存,
    w = []
    with open('1.txt','r') as f:
    # c = f.read() # 消耗内存,
    for line in f: # 一行一行的处理,
    line = line.replace( '-', '' ) # 把 - 替换为空格,
    for i in line.split (): #
    i = i.strip ( string.punctuation + string.whitespace ) # # 去标点,+ 去空格
    i = i.lower() # 统一大小写
    w.append( i ) ## 每次生成加进这个列表中,

    print( w )
    print( '该小说有%s个单词。' % len(w) )
    print( '该小说用了%s个不同单词。' % len (set(w)) ) ## 用集合的方法去重,

    ## 用字典 dict 实现统计每个单词出现的次,(词频)
    di = {} # 创建空字典
    for n in w:
    if n in di: # 如果单词在字典中,
    di[n] += 1 # 那么这个单词对应的值+1,
    else:
    di[n] = 1 # 否则 这个单词对应的值 = 1
    print( di )

    ## 用列表实现词频由大到小的排列,
    di_li = [] # 创建空列表
    for k,v in di.items(): # 一个个取出 键值
    di_li.append( [v,k] )
    print( di_li ) ## 出现次数在前面,单词在后面,
    di_li.sort( reverse=True )
    print( di_li ) ## 自动排序 reverse=True 从大到小

    # 画图,画出前10 个,
    for i in range(10):
    plt.bar( di_li[i][:-1],di_li[i][1:] )
    plt.legend() ## 结束
    plt.xlabel('单词')
    plt.ylabel('次数')
    plt.title('该小说的单词直方图')
    plt.show()




    # print(c) # 文件读取的内容,
    # print( type(c) ) # 数据类型为 <class 'str'> 字条串
    # li = c.split(' ') # 用空格做分割,
    # print(li) #
    # print(type(li)) # 数据类型为 <class 'list'> 列表
    # print(len(li)) # 列表长度
    # c = c.strip(',.') # 对字符串处理,按要求去除
    # c = c.strip( string.punctuation + string.whitespace ) # 去标点,+ 去空格
    # ## 1 去掉单词首尾不可见字条,
    # ## 2 去标点,
    # print(li)
    #
    # for i in range( len(li) ):
    # li[i] = li[i].strip ( string.punctuation + string.whitespace ) # 做循环处理,
    # print( li )
    # print( len(li) )





    #   函数式

    import string # 输出所有标点箱号
    from matplotlib import pyplot as plt # 第三方画图库存,
    w = [] # 创建个空列表,用做计算单词个数,之后转为集合再计算用了几种单词,
    def clmyh(line, di):
    '''#处理每一行'''
    line = line.replace('-', '') # 把 - 替换为空格,
    for i in line.split(): # 去空格
    i = i.strip( string.punctuation + string.whitespace ) # 去标点,+ 去空格
    i.lower() # 统一大小写
    w.append(i)
    # # 统计词频
    # if i in di: # 如果单词在字典中,
    # di[i] += 1 # 那么这个单证对应的值+1,
    # else:
    # di[i] = 1 # 否则 这个单证对应的值 = 1
    '''用 gdt 方法,用 i 代表的键取其值,如果没有返回 0'''
    di[i] = di.get(i, 0) + 1



    def clwj( filename ):
    '''处理文件,生成直方图'''
    di = {}
    with open( filename, 'r' ) as f:
    for line in f: # 处理每一行
    clmyh( line, di )
    print('该小说有%s个单词。' % len(w))
    print('该小说用了%s个不同单词。' % len(set(w)))
    ## 用集合的方法去重,
    return di

    def pai_xu( di ):
    '''由大到小排序'''
    px = []
    for k ,v in di.items():
    # 将文件处理得到的字典中的键,值一个个的取出,
    px.append( [v,k] )
    # 形成一个新列表,放进 px 列表中,
    px.sort( reverse=True )
    ## 自动排序 reverse=True 从大到小
    return px

    if __name__ == '__main__':
    di = clwj( '1.txt' )
    dao_dao_xiao = pai_xu( di )
    print( dao_dao_xiao[:10] )


    ## 画图
    for i in range(10):
    plt.bar( dao_dao_xiao[i][:-1], dao_dao_xiao[i][1:])
    plt.legend() ## 结束
    plt.xlabel('单词')
    plt.ylabel('次数')
    plt.title('该小说的单词直方图')
    plt.show()




  • 相关阅读:
    GridView加ObjectDataSource做删除事件(ObjectDataSourceStatusEventHandler 委托)
    非常酷的三级下拉菜单!!(javascript)
    sql事务处理(转)
    首页头部下拉广告设计(javascript)
    JavaScript 强行弹出窗口 与 无提示关闭页面
    androd之绘制文本(FontMetrics)[转]
    Android 字 成 圆
    python写的二分插入算法
    Loading效果 UIActivityIndicatorView
    ios6.0 调用系统api 分享到 twitter facebook weibo
  • 原文地址:https://www.cnblogs.com/gdwz922/p/9098319.html
Copyright © 2011-2022 走看看