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

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

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

    1.append()增加到最后
    li = ['a','b',123,'你好',1] li.append('abc') print(li) 2.insert()插入,按照索引去增加
    li = ['a','b',123,'你好',1] li.insert(2,'早') print(li) 3.extend ()迭代的去增
    li = ['a','b',123,'你好',1] li.extend('abcdef') print(li) li.extend([1,2,3]) li = ['a', 'b', 123, '你好', 1] 4.pop()按索引进行删除,有返回值 li.pop(1) print(li) li = ['a', 'b', 123, '你好', 1] print(li.pop(1))
    5.remove()按照元素去删除
    li = ['a','b',123,'你好',1] li.remove('你好') print(li) 6.clear()清空列表元素 li = ['a','b',123,'你好',1] li.clear() print(li) li = ['a', 'b', 123, '你好', 1] del li[1:3] print(li)

    7.按照位置去删除,也可切片删除没有返回值。 li = ['a', 'b', 123, '你好', 1] del li[1] print(li) 8.整个列表删除
    li = ['a','b',123,'你好',1]
    
    li[0] = '早'
    
    print(li)
    9.按切片来改 li = ['a','b',123,'你好',1] li[0:3] = 'safsafkf'


    10.按索引来改
    li = ['a','b',123,'你好',1]

    li[0] = '早'

    print(li)

      效果图:

    2.元组

    增:无

    删:无

    改:无

    查:

    tup = ('i','love','u')
    print(tup[0])
    print(tup)

    3.字典增删改查

    dict = {'hupu': 7, '知乎': 16, '微信': 15}
    
    #按相应的键查找
    print(dict['知乎'])
    
    #增加键值对
    dict['淘宝']=20
    print(dict['淘宝'])
    
    #修改键值对
    dict['淘宝']=15.5
    print(dict['淘宝'])
    
    #删除单个键值对或清空字典
    del dict['微信']
    print(dict)
    dict.clear()
    print(dict)
    

     效果图 

    4.集合增删改查


    list=['dog','pig','fish','cat'] set = set(list) print(set) set.add('tiger') print(set) 删 list={'dog','pig','fish','cat'} list.pop() print(list) list.remove('cat') print(list) list.clear() print(list) del list print(list) 改 list={'apple','peace','banana','orange'} list_1={'dog','cat'} list=list|list_1 print(list) list=list&list_1 print(list) 查 list={'dog','cat','pig','tiger'} print(list.__str__())

      

    
    

      效果图:

    总结:
    1. 元组和列表有哪些共同点?有哪些不同点?
    共同点:
    ① 他们都属于序列(均是容器对象),都是线性表,可以存储不同类型的内容。
    ② 都可进行以下操作:
      i. 切片操作
      ii. 索引访问
      iii. 连接操作
      iv. 成员关系操作
      v. 比较运算操作
      vi. 计数:元组长度 len()、最大值 max()、最小值 min()、求和 sum()等。
    不同点:
    ① 元组的声明使用小括号,而列表使用方括号,当声明只有一个元素的元组时,需要在这个元素的后面添加英文逗号;
    ② 列表是动态的数组,元组是静态的数组。元组声明和赋值后,不能像列表一样添加、删除和修改元素,也就是说元组在程序运行过程中不能被修改。
    ③ 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。
    2. 集合和字典有什么关系?
    共同点:
    ①都是使用花括号{}将任意对象括起来的集合
    ②他们都是无序的数据集合
    ③都是一种可变的容器模型(可变的序列)。
    不同点:
    ①存储对象不一样
      字典是由”键-值”(key-value)对组成的集合,字典的”值”(key)通过”键”(value)来引用。键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一,且key可存储任意类型对象。
      集合不支持下标索引,它是可变的数据类型,集合中的元素是唯一的,且不可以存列表和字典,一般用于元组或者列表中的元素去重。
    ②打印输出顺序不一样
      使用print输出字典的时候,通常输出的顺序和定义的顺序是不一致的;输出集合顺序和定义的一致。
    ③集合底层是字典实现,集合的所有元素都是字典中的“键对象”。

    3.词频统计

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

    3.2通过文件读取字符串 str

    3.3对文本进行预处理

    3.4分解提取单词 list

    3.5单词计数字典 set , dict

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

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

      自定义停用词表

      或用stops.txt

    3.8输出TOP(20)

    3.9可视化:词云

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

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


    主要代码:
    import pandas  as pd
    file = open('3.txt', 'r', encoding='utf8')
    
    # 排除词汇列表
    exclude = {'a', 'an', 'and', 'was', 'as', 'up', 'my', 'it', 'here', 'at', 'll', 'his', 's', 'he', 'that', 'from', 'had',
               'have', 'we', 'the', 'i', 'you', 'in', 'on', 'but', 'with', 'not', 'by', 'its', 'for', 'of', 'to'}
    
    
    # 对文本预处理
    def getfile():
        sep = "'?', '?', '!'," '", "'", ' "', '"',':',':','.',',', ',', '.', '。','“','”',','"
        text = file.read().lower()
        for ii in sep:
            text = text.replace(ii, ' ')
        return text
    
    
    # 提取单词,单词计数词典
    fileList = getfile().split()
    fileDict = set(fileList)
    exclude1 = set(exclude)
    fileDict = fileDict - exclude1
    
    # 统计单词数量
    countDict = {}
    for word in fileDict:
        countDict[word] = fileList.count(word)
    print(countDict.items())
    word = list(countDict.items())
    
    # 排序单词数量
    word.sort(key=lambda x: x[1], reverse=True)
    print(word)
    
    # 输出TOP20
    for i in range(20):
        print(word[i])
    pd.DataFrame(data=word).to_csv('3.csv', encoding='utf-8')
    

      


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


  • 相关阅读:
    Array
    java 设计模式
    Hashtable
    lettCode-Array
    最短路径 dijkstra
    算法:优先级队列
    7.29 DFS总结
    SZU:D89 The Settlers of Catan
    SZU:B47 Big Integer I
    7.25 RPN转换
  • 原文地址:https://www.cnblogs.com/lenkay/p/10587465.html
Copyright © 2011-2022 走看看