复合数据类型,英文词频统计
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表
(1)增加元素:
- append()方法:在列表的末尾增加一个元素
- insert()方法:在列表指定的位置上增加一个元素
- extend()方法:可迭代,分解成元素添加在末尾
(2)删除元素:
- pop()方法: 按照下标索引删除指定的值
- remove()方法:按元素删除指定的值
- clear()方法:清空列表内数据
- del:删除列表、也可以进行切片删除
(3)修改元素:
- s[ ] = ' ' #元素赋值
- s[0:2] = ‘ ’ #分片赋值
(4)查找元素:
-
names = ['mike','mark','candice','laular'] print(names[2])
-
names = ['mike','mark','candice','laular'] print(names[1:3]) #通过切片方式取值,切片是顾头不顾尾,打印结果:['mark', 'candice'] print(names[1:]) #取下标后面所有的值,打印结果:['mark', 'candice', 'laular'] print(names[:3]) #取下标前面所有的值,打印结果:['mike', 'mark', 'candice'] print(names[:]) #取所有的值,打印结果:['mike', 'mark', 'candice', 'laular'] print(names[-1]) #取最后一个值,打印结果:laular print(names[:1:2])#隔几位取一次,默认不写步长为1,即隔一位取一次;结果为取下标为1之前的值,隔2位取一个['mike']
元组的增删改差:
- tup=tup1+tup2
元组不支持修改,但可以通过连接组合的方式进行增加 - del tup
元组不支持单个元素删除,但可以删除整个元组 - tup=tup[index1],tup1[index2], ...
tup=tup[index1:index2]
元组是不可变类型,不能修改元组的元素。可通过现有的字符串拼接构造一个新元组 - tup[index]
通过下标索引,从0开始tup[a:b]
切片,顾头不顾尾
字典
(1)增加元素:
- dict[key]=value
通过赋值的方法增加元素 - dict.update(dict_i)
把新的字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict不同的key)
(2)删除元素:
- del dict[key]
删除单一元素,通过key来指定删除
del dict
删除字典 - dict.pop(key)
删除单一元素,通过key来指定删除 - dict.clear()
清空全部内容
(3)修改元素:
- dict[key]=value
通过对已有的key重新赋值的方法修改 - dict.update(dict_i)
把字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict相同的key)
(4)查询元素:
- dict[key]
通过key访问value值 - dict.items()
以列表返回可遍历的(键, 值) 元组数组 - dict.keys()
以列表返回一个字典所有键值
dict.values()
以列表返回一个字典所有值 - dict.get(key)
返回指定key的对应字典值,没有返回none
集合:
- add()方法:增加一个元素
- remove()和pop()方法:删除集合中一个元素
- clear()方法:清空集合中的元素
- del:删除集合
- & | - :集合的交并差
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
(1)列表
- 列表list,用中括号“[ ]”表示
- 列表是一组任意类型的值,按照一定顺序组合而成的
- 可以随时添加删除修改其中的元素
- 元素可重复
- 存储时每一个元素被标识一个索引,每当引用时,会将这个引用指向一个对象,所以程序只需处理对象的操作
(2)元组
- 元组tuple,用小括号“( )”表示
- 与列表相同,有序
- 一旦初始化就不能修改
- 元素可重复
- 与列表相似,元组是对象引用的数组
(3)字典
- 字典dict,用大括号“{key,value}”表示
- 字典中的项没有特定顺序,以“键”为象征
- 因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值
- key不能重复
- 字典存储的是对象引用,不是拷贝,和列表一样
(4)集合
- 集合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
(1)读取字符串进行预处理并分解提取单词
f=open(r'F:\1.txt','r',encoding='utf8') word=f.read() word=word.lower() s=',.!?' for c in s: word = word.replace(c, "") wordlist=word.split()
(2)单词计数字典
wordlist wordset=set(wordlist) worddict={} for w in wordset: worddict[w]=word.count(w)
(3)按词频排序
wordsort = list(worddict.items()) wordsort.sort(key = lambda x:x[1],reverse=True)
wordsort
排序后的结果
(4)排除无语义词
自定义停用词表
exclude = {'am','the','and','i','you','it','is','if','do','a','me'} def gettxt(): txt=open(r'F:\1.txt','r',encoding='utf8').read().lower() s=',.!?' for c in s: txt = txt.replace(c, "") return txt wordlist = gettxt().split() wordset = set(wordlist)-exclude worddict = {} for w in wordset: worddict[w]=word.count(w) wordsort = list(worddict.items()) wordsort.sort(key = lambda x:x[1],reverse=True) wordsort
结果:
使用stops.txt(连接不上)
(5)输出top(20)
for i in range(20): print(wordsort[i])
(6)可视化
import pandas as pd pd.DataFrame(data=wordsort).to_csv(r'F:\big.csv',encoding='utf-8')
生成词云:
作业博客要求:
- 文字作业要求言简意骇,用自己的话说明清楚。
- 编码作业要求放上代码,加好注释,并附上运行结果截图。