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

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

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

    列表的增删改查

     1 list = ['张三', 66, 'jack']
     2 # 按索引号插入元素
     3 list.insert(0,'王一')
     4 print(list)
     5 # 增加到最后
     6 list.append(78)
     7 print(list)
     8 list1 = [999]
     9 # 可以与其它list合并
    10 list.extend(list1)
    11 print(list)
    12 # 按索引查找
    13 print(list[0])
    14 # 删掉最后一个元素
    15 list.pop()
    16 print(list)
    17 # 按索引删除
    18 list.pop(0)
    19 print(list)
    20 # 按切片删除
    21 del list[0:2]
    22 print(list)
    23 # 按元素删除
    24 list.remove(78)
    25 print(list)
    26 # 删除整个列表
    27 list = ['张三', 66, 'jack']
    28 # 改变第一个元素
    29 list[0] = '李四'
    30 print(list)
    31 list.clear()
    32 print(list)
    33 # 遍历
    34 for i in list:
    35     print(i)

    运行结果:

    元组的增删改查

    1 tuple = ('张三', 66, 'jack')
    2 # 按索引查找
    3 print(tuple[0])
    4 # 遍历
    5 for i in tuple:
    6     print(i)

    运行结果

    集合的增删改查

     1 list = ['张三', 66, 'jack']
     2 set = set(list)
     3 # 增加一个元素,位置随机
     4 set.add('李四')
     5 print("add('李四'):" + set.__str__())
     6 # 按元素删除
     7 set.remove(66)
     8 print('remove(66):' + set.__str__())
     9 # 删除并返回任意set元素。
    10 set.pop()
    11 print('pop():' + set.__str__())
    12 # 删除整个集合
    13 set.clear()
    14 print('clear():' + set.__str__())
    15 # 遍历
    16 for i in set:
    17     print(i)

    运行结果

    字典的增删改查

     1 age_dict = {'李四': 15, 'jack': 17, '王五': 20, '刘一':17}
     2 # 按照key来取item的value
     3 print(age_dict['刘一'])
     4 # 修改value
     5 age_dict['刘一'] = 50
     6 print(age_dict['刘一'])
     7 # 整个字典
     8 print(age_dict.items())
     9 # 字典所有的value
    10 print(age_dict.values())
    11 # 字典所有的key
    12 print(age_dict.keys())
    13 # 按key删除一个item 并返回被删除item的value
    14 print(age_dict.pop('李四'))
    15 print(age_dict)
    16 # 根据key得到value的值
    17 print(age_dict.get('jack'))
    18 # 删除字典最后一个item
    19 age_dict.popitem()
    20 print(age_dict)
    21 # z设置一个item添加到dict后面,不提供第二个参数则key默认为None
    22 age_dict.setdefault('nacy', 5)
    23 print(age_dict)
    24 age_dict.setdefault('tom')
    25 print(age_dict)
    26 new_dict = {'': 15}
    27 age_dict.update(new_dict)
    28 # 把字典dict2(new_dict)的键/值对更新到dict(age_dict)里。
    29 print(age_dict)
    30 # 删除整个dict
    31 age_dict.clear()
    32 print(age_dict)

    运行结果

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

    (1)括号

    list的括号为[],tuple的括号为(),set的括号为{},dict的括号为{}。

    (2)有序无序

    list与tuple是有序的,set与dict是无序的.

    (3)可变不可变

    list的元素是可变的,tuple、set的元素是不可变的,dict的key必须是不可变对象。

    (4)重复不可重复

    list、tuple的元素可重复,set、dict的元素不可重复。

    (5)存储与查找方式

    dict与list相比

      1)查找和插入的速度极快,不会随着key的增加而变慢;

      2)需要占用大量的内存,内存浪费多。

    list与dict相比

      1)查找和插入的时间随着元素的增加而增加;

      2)占用空间小,浪费内存很少。

    tuple与list类似,可以直接用索引取元素,存储的方式类似数组,set与dict类似,用key查找元素,存储利用哈希算法,每一个key都可以用hash算法算得一个唯一的值,然后把key存储进这个值指定的内存空间。

    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

     代码

     1 import pandas as pd
     2 # 读取小说
     3 with open(r'./Sophies World.txt', 'r', encoding='utf8') as f:
     4     book = f.read()
     5 booksymbol = [" '", "'", ' "', '"', '""', '
    ', '	', '', '?', '!', "", ',', '', '.', '']
     6 # # 去掉一些不必要的标点符号
     7 for i in booksymbol:
     8     book = book.replace(i, '')
     9 # 把所有转小写 以空格分隔开
    10 book = book.lower().split()
    11 # # 读取停用词
    12 with open(r'./stops.txt', 'r', encoding='utf8') as f:
    13     stops = f.read()
    14 #  整理停用词格式,去掉回车和单双引号
    15 stopsymbol = [" '", "'", ' "', '"', '
    ']
    16 for i in stopsymbol:
    17     stops = stops.replace(i, '')
    18 # 以逗号分隔
    19 stops = stops.split(',')
    20 worddict = {}
    21 # 去掉停用词
    22 wordset = set(book) - set(stops)
    23 # 计算词频
    24 for i in wordset:
    25     worddict[i] = book.count(i)
    26 # 让其变成可排序的list
    27 wordcount = list(worddict.items())
    28 # 把value作为排序的对象
    29 wordcount.sort(key = lambda x:x[1], reverse = True)
    30 # Top20生成csv文件
    31 pd.DataFrame(data=wordcount[0:20]).to_csv('big.csv',encoding='utf-8')

    运行结果

    作业博客要求:

    • 文字作业要求言简意骇,用自己的话说明清楚。
    • 编码作业要求放上代码,加好注释,并附上运行结果截图。
  • 相关阅读:
    设计模式
    idea多个项目
    多个tomcat配置
    mysql数据库默认时间字段格式
    读取文件
    上传图片
    数据库创建用户授权
    统计12个月份的数据
    行列转换
    分页
  • 原文地址:https://www.cnblogs.com/-QAQ/p/10537750.html
Copyright © 2011-2022 走看看