复合数据类型,英文词频统计
本次作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表:
list=['a','b','c','d','e','f','g','a'] list.append('aa')#增加元素 del list[3]#删除第四个元素 list[4]='egg' #更改第五个元素 list.insert(3,'cat') #插入列表 list.index('f')#查找元素的位置 list.index['g'] # 查看元素50的位置 list.count('a') #统计元素个数 for i in list: printf(list[i]) #遍历
元组:
元组的操作和列表类似,但是元组不能进行增加和修改删除元组中的元素
list=('a','b') print(list[0])#通过元组的下标访问元素
字典:
d={'apple':1,'boy':2,'cat':3} d['apple']=4 #修改键apple 的值 del d['apple'] #删除键apple a=d['apple'] #查看键apple的值 d.clear() #删除字典中的所有条目 str(d) #输出字典for key in d:printf(d[key]) #遍历
集合
z=set('z') z.add('b') #增加元素 z.pop() #随机删除元素 z.remove('b') #删除元素 集合无序,不能查找和修改指定的元素
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 括号
- 有序无序
- 可变不可变
- 重复不可重复
- 存储与查找方式
列表(list):列表是一组有序项目的数字结构,列表的项目应该放在方括号[ ]中,列表是可以被改变和可重复的;按照索引的方式查找通过偏移存储并且元素可以任意类型存在。
元组(tuple):元组与列表十分相似,可重复也是通过偏移的方式进行存储,不过元组是不可变的即是你是不能对元组中的元素进行修改,而且用的是();元组的元素是固定的长度、异构,也是任意嵌套。
字典(dict):字典使用的是{},字典是无序的,但是可变可重复;使用键-值(key-value)进行存储,查找速度快;字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以。
集合(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.可视化:词云
排序好的单词列表word保存成csv文件
import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')
线上工具生成词云:
https://wordart.com/create
exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'} #定义数组# #读取Harry Potter.txt文件中的英文内容# def gettxt(): sep=".,:;?!-_'" txt=open('faded.txt','r').read().lower() for ch in sep : txt=txt.replace(ch,' ') return txt #分解提取单词# bigList=gettxt().split() print(bigList); print('faded:',bigList.count('faded')) 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('Harry Potter.csv',encoding='utf-8')