复合数据类型,英文词频统计
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表:
list=['Mon','Tues','Wednes','Thurs'] print ('原始列表为 : ', list) list.insert(2,'haha') '''在Tues后面插入haha''' print ('列表插入元素后为 : ', list) del list[2] '''删除haha''' print ('列表删除元素后为 : ', list) list[0]='sun' '''修改列表第一个元素''' print ('列表修改元素后为 : ', list) for i in list: print(i) '''遍历列表'''
元组:
YuanZu=('Mon','Tues','Wednes','Thurs') YuanZu2=('Fir','Satur','Sun') YuanZu3=YuanZu+YuanZu2 print(YuanZu2) del YuanZu2; print(YuanZu3)
字典:
ZiDian={'date':'Mon','date_1':'Tues','date_2':'Wednes'} print(ZiDian) print(ZiDian['date_2']) ZiDian['date_2']='Sun' print(ZiDian['date_2'])
集合:
date = {'Mon', 'Tues', 'Wednes', 'Thurs', 'Fir', } print(date) date.add("Sun") print(date) date.remove("Sun") print(date) print(len(date))
2.总结列表,元组,字典,集合的联系与区别。
列表是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中。
集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 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)
import pandas as pd from nltk.corpus import stopwords stopwords=stopwords.words('english') f = open(r'C:\Users\unliee\Desktop\84txt.txt', encoding='utf-8-sig') text=f.read() f.close() text=text.lower() FuHao="., --? \" " for s in FuHao: text=text.replace(s," "); text=text.split(); for i in text: dict[i]=text.count(i); for c in stopwords: if c in dict.keys(): dict.pop(s); d=sorted(dict.items(),reverse=True,key=lambda d:d[1]); print("前20个单词出现频数为:") for i in range(20): print(d[i][0],"--",d[i][1]); pd.DataFrame(data=d).to_csv('big.csv',encoding='utf-8');