复合数据类型,英文词频统计
2019-03-14 13:03 CMis180kg 阅读(231) 评论(0) 编辑 收藏 举报作业要求来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.列表,元组,字典,集合分别如何增删改查及遍历。
(1)列表
#列表list list=["语文","数学","英语","生物","化学"]; print("列表:",list); list.append("物理"); print("添加物理:",list); list.insert(2,"地理"); print("添加地理,索引值为2(插入到第三个位置):",list) list.pop(); print("删除最后一个值:",list); list.pop(2); print("删除第三个值:",list) list[0]="历史"; print("修改第一个值:",list); print("查找第五个值:",list[1]); #遍历 print("遍历list:"); for l in list: print("\t",l);
执行效果图如下图所示:
(2)元组
tup=('语文','数学','英语',0) tup2=('CM',) tup3=tup+tup2 print("连接/增加元素 :{}".format(tup3)) #访问元素 tup=('语文','数学','英语',0) print("访问元素 :tup[2]={},tup[0:1]={}".format(tup3[2],tup[0:2])) #删除元素 tup=('语文','数学','英语',0) print("删除元组") del tup #遍历元素 tup=('语文','数学','英语',0) print("遍历元组:") for t in tup: print(t)
执行效果如下图所示:
(3)字典
# 创建字典 textDict = {'张三':'80','李四':'90','王五':'95'} print(textDict) # 增加 textDict['赵六']='100' print(textDict) # 修改 textDict['张三']='100' print(textDict) # 删除 del textDict['张三'] print(textDict) # 查找 print(textDict['李四']) # 遍历 for s in textDict: print( "%s : %s"%(s,textDict[s]))
执行效果如下图所示:
(4)集合
set=set(["语文","数学","英语","化学","地理"]); print("集合:",set); set.add("语文"); print("增加‘语文’(无法增加,set中午重复值):",set); set.add("生物"); print("增加‘生物’:",set); if "英语" in set: set.remove("英语"); print("删除‘英语’:",set); set.pop(); print("删除一个值:",set); #遍历 print("遍历set:") for s in set: print("\t",s);
执行效果如下图所示:
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 括号
- 有序无序
- 可变不可变
- 重复不可重复
- 存储与查找方式
列表(list):列表是一组有序项目的数字结构,列表的项目应该放在方括号[ ]中,列表是可以被改变和可重复的;按照索引的方式查找通过偏移存储并且元素可以任意类型存在。
元组(tuple):元组与列表十分相似,可重复也是通过偏移的方式进行存储,不过元组是不可变的即是你是不能对元组中的元素进行修改,而且用的是();元组的元素是固定的长度、异构,也是任意嵌套。
字典(dict):字典使用的是{},字典是无序的,但是可变可重复;使用键-值(key-value)进行存储,查找速度快;字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以。
集合(set):无序不可变,使用([ ]),与字典类似,但只包含键,而没有对应的值;元素可以是列表、元组、字典中的任意一个或多个。
列表(list) | 元组(tuple) | 集合(set) | 字典(dict) | |
括号 | [ ] | () | ([]) | {} |
有无序 | 有 | 有 | 无 | 有 |
可不可变 | 可变 | 不可变 | 可变 | 可变 |
是否重复 | 是 | 是 | 否 | 否 |
查找方式 | 索引 | 索引 | 无 | 键值 |
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.可视化:词云
代码如下:
fo = open(r'C:\Users\Lenovo\PycharmProjects\cm\Jane Eyre.txt', encoding='utf-8-sig') theLittlePrinceTxt = fo.read() txt = theLittlePrinceTxt.lower() fo.close() sep = ''' ,./:?/! '\n " [] () ~ ''' stops = {'ours', 'over', 'once', 'having', 'against', 'don', 'has', 'but', 'wouldn', 'with', 'other', 'doesn', 'itself', 'aren', 'when',} for s in sep: txt = txt.replace(s, " ") allWord = txt.split() mset = set(allWord) # 去掉重复的单词,将文本转换为集合 mset = mset - stops # 去除停用词 mdict = {} # 定义字典,作用输出 for m in mset: mdict[m] = allWord.count(m) # 统计每个字典的key的频数 mlist = list(mdict.items()) # 字典转换成列表 mlist.sort(key=lambda x: x[1], reverse=True) # 列表排序 #输出数目前20的词汇 print(mlist[0:10]) print(mlist[10:20]) # 排序好的单词列表word保存成csv文件 import pandas as pd pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')
执行结果如下图所示:
词云可视化如下图所示: