zoukankan      html  css  js  c++  java
  • 复合数据类型,英文词频统计

    本次作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

    1.列表,元组,字典,集合分别如何增删改查及遍历。

    • 列表:

             对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项;可以使用 del 语句来删除列表的的元素;

           

    (1)增

           

         

    (2)删

        

    (3)改

       

    (4)查

     (5)遍历

    • 元组:

             元组可以使用下标索引来访问元组中的值;元组中的元素值是不允许修改的,但我们可以对元组进行连接组合;元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组;

    (1)查

    • 字典:

            把相应的键放入到方括号中;向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对;能删单一的元素也能清空字典,清空只需一项操作,显示删除一个字典用del命令;

    (1)增

    (2)删

    (3)改

    (4)查

    • 集合:

            将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作;clear()清空集合 s;remove()移除元素;集合不能进行修改和查找

    (1)增

    (2)删

    (3)遍历

    2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:

    1. 括号
    2. 有序无序
    3. 可变不可变
    4. 重复不可重复
    5. 存储与查找方式
    • 列表

             list:是一种有序的序列,可以随时添加和删除,没有长度限制等;

    • 元组

             tuple:和list非常相似;

    • 字典

             dict:使用键-值key-value储存,有极快的查找速度,其中的key必须是不可变对象,和list相比dict查找和插入的速度极快,不会因key的增加而变慢但是要占用大量的内存造成浪费,是一种用空间换取时间的方法;

    • 集合

              set:是一组key的集合,不储存value,没有重复的key,创建一个set需要提供一个list作为输入集合,不一定是有序的。

      列表 元组 字典

    集合

    名称 list tuple dict

    set

    括号 []  ()  {}  {}或set() 
    有序无序  有序  有序  无序   无序,自动正序 
     可变不可变  可变  不可变   可变   不可变 
    重复不重复   是  是  否  是 
    存储方式   值  值  键(不可重复)

     键值对(键不能重复)

    3.词频统计

    • 1.下载一长篇小说,存成utf-8编码的文本文件 file

      2.通过文件读取字符串 str

      3.对文本进行预处理

      4.分解提取单词 list

      5.单词计数字典 set , dict

      6.按词频排序 list.sort(key=lambda),turple

      7.排除语法型词汇,代词、冠词、连词等无语义词

      • 自定义停用词表
      • 或用stops.txt

           8.输出TOP(20)

    • 9.可视化:词云
    # -*- coding=utf-8 -*-
    exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','is','was','that','he','this','are','it','be','as','at','on','if','has','have','so','or'}  #定义数组#
    #读取Harry Potter.txt文件中的英文内容#
    def gettxt():
        sep=".,:;?!-_'"
        txt=open(r'F:ig.txt','r',encoding='UTF-8').read().lower()
        for ch in sep :
            txt=txt.replace(ch,' ')
        return txt
    #分解提取单词#
    bigList=gettxt().split()
    print(bigList);
    print('big:',bigList.count('big'))
    bigSet=set(bigList)
    #过滤单词,包括一些冠词和连词等#
    bigSet=bigSet-exclude
    print(bigSet)
    #单词计数#
    bigDict={}
    for word in bigSet:
        bigDict[word]=bigList.count(word)
    print(bigDict)
    
    print(bigDict.items())
    word=list(bigDict.items())
    #按词频排序#
    word.sort(key=lambda x:x[1],reverse=True)
    print(word)
    #输出频率较高的词语top20#
    for i in range(20):
        print(word[i])
    

      

     排序好的单词列表word保存成csv文件

    import pandas as pd
    pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')

    线上工具生成词云:
    https://wordart.com/create

  • 相关阅读:
    FastReport3.18使用心得
    FastReport问题整理
    SQL server 2005基于已存在的表创建分区
    SQL Server 2005对海量数据处理
    SQL SERVER2005加密解密数据
    Linux/Unix环境下的make和makefile详解 
    我想要的书
    全面提升BIND DNS服务器安全华江
    NOR和NAND Flash存储器的区别
    两个应届生找工作的好网站
  • 原文地址:https://www.cnblogs.com/hycolins/p/10538585.html
Copyright © 2011-2022 走看看