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

    作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

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

    列表:

    增:

    1)append()增加到最后

    2)insert()方法:在列表指定的位置上增加一个元素

    3)extend()方法:可迭代,分解成元素添加在末尾

    删:

    1)pop()方法: 按照下标索引删除指定的值

    2)remove()方法:按元素删除指定的值

    3)clear()方法:清空列表内数据

    4)del:删除列表、也可以进行切片删除

    改:

    1)s[  ] = '  '  #元素赋值 

    2)s[0:2] = ‘ ’ #分片赋值

    查:

    1)names = ['mike','mark','candice','laular']

    print(names[2])

    2)names = ['mike','mark','candice','laular'

    print(names[1:3]) #通过切片方式取值,切片是顾头不顾尾,打印结果:['mark', 'candice']

    print(names[1:]) #取下标后面所有的值,打印结果:['mark', 'candice', 'laular']

    print(names[:3]) #取下标前面所有的值,打印结果:['mike', 'mark', 'candice']

    print(names[:]) #取所有的值,打印结果:['mike', 'mark', 'candice', 'laular']

    print(names[-1]) #取最后一个值,打印结果:laular

    print(names[:1:2])#隔几位取一次,默认不写步长为1,即隔一位取一次;结果为取下标为1之前的值,隔2位取一个['mike']

    元组:

    Python的元组与列表类似,不同之处在于元组的元素不能修改。

    元组使用小括号,列表使用方括号。

    元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

    功能:

    tuple1=(1,2,3)

    tuple2=(4,5,6)

    tuple3=tuple1+tuple2

    print(tuple3)

    print(type(tuple3))

    print(tuple1)

    print(tuple2)

    >>>>>>>结果

    (1,2,3,4,5,6)

    <class'tuple'>

    (1,2,3)

    (4,5,6)

    字典:

    增:

    1)dict[key]=value
    通过赋值的方法增加元素

    2)dict.update(dict_i)
    把新的字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict不同的key)

    删:

    1)del dict[key]
    删除单一元素,通过key来指定删除
    del dict
    删除字典

    2)dict.pop(key)
    删除单一元素,通过key来指定删除

    3)dict.clear()
    清空全部内容

    改:

    1)dict[key]=value
    通过对已有的key重新赋值的方法修改

    2)dict.update(dict_i)
    把字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict相同的key)

    查:

    1)dict[key]
    通过key访问value值

    2)dict.items()
    以列表返回可遍历的(键, 值) 元组数组

    3)dict.keys()
    以列表返回一个字典所有键值
    dict.values()
    以列表返回一个字典所有值

    4)dict.get(key)
    返回指定key的对应字典值,没有返回none

    集合:

    1)add()方法:增加一个元素

    2)remove()和pop()方法:删除集合中一个元素

    3)clear()方法:清空集合中的元素

    4)del:删除集合

    5)& | - :集合的交并差

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

    • 括号
    • 有序无序
    • 可变不可变
    • 重复不可重复
    • 存储与查找方式

    (1)列表

         什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示:  

      lst = ['arwen',123]
      print lst[0] 
      print lst[1]

      lst[0] = 'weiwen'

      向list中添加项有两种方法:append和extend。append是向

      如:

      (2)元组

      元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示,如:

      tup = ('arwen',123)
      print tup[0]
      print tup[1]

      (3)集合就是我们数学学的集合,没有什么特殊的定义。集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合,如:

      lst = [ 1, 1, 0]

      lst_set = set( lst )  #lst_set 为1 , 0

      tup = (2, 2, 1)

      tup_set = set( tup) # tup_set为2 , 1

      for item in lst_set:

        print item

      (4)最后一个是字典。字典存储键值对数据,如:

      1:a,2:b,3:c

      字典最外面用大括号,每一组用冒号连起来,然后各组用逗号隔开。

      字典最大的价值是查询,通过键,查找值。

    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.可视化:词云

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

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

    线上工具生成词云:
    https://wordart.com/create
    代码:
    #打开小说文件
    f = open("D:\World.txt", 'r')
    #定义数组
    stop={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','my','myself','we','our','ours','ourelves','about','no','nor'}
    #读取文件
    def gettext():
          sep=",.? ?':' !--!_:"
          text=f.read().lower()
          for c in sep:
                textx=text.replace(c,' ')
          return textx
    #对文件进行分解
    bList=gettext().split()
    print(bList)
    
    #把分解后的词语放在一个集合中
    
    bSet=set(bList)
    print(bSet)
    #把停用词放在集合中
    
    bStop=set(stop)
    #去处停用词
    
    bSet=bSet-bStop
    print(bSet)
    #定义字典对单词进行统计
    
    bDict={}
    for word in bSet:
        bDict[word]=bList.count(word)
    print(bDict)
    print(bDict.items())
    word=list(bDict.items())
    
    #对统计结果进行排序
    
    word.sort(key=lambda  x:x[1],reverse=True)
    print(word)
    
    #输出前20的单词
    for i in range(20):
        print(word[i])
    
    #对结果输出到text.csv中
    import  pandas as pd
    pd.DataFrame(data=word).to_csv("D:\text.csv",encoding='utf-8')

    结果:

  • 相关阅读:
    针对 jQuery Gridly 控件显示多少列的问题。
    网上找的几款拖拽插件
    商品价格加价区间的实现(策略模式)
    【C#】GC和析构函数(Finalize 方法)
    C#微信开发之旅(一):前言
    Opserver配置Redis、SqlServer监控
    线程安全的方式引发事件
    使用SSL的IIS下WCF配置(CSDN手动迁移)
    由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)
    EF Code First(The model backing the '***' context has changed since the database was created.解决方法)(CSDN手动迁移)
  • 原文地址:https://www.cnblogs.com/Tily/p/10538520.html
Copyright © 2011-2022 走看看