复合数据类型,英文词频统计
作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表:
增:
1)append()增加到最后
2)insert()方法:在列表指定的位置上增加一个元素
3)extend()方法:可迭代,分解成元素添加在末尾
删:
1)pop()方法: 按照下标索引删除指定的值
2)remove()方法:按元素删除指定的值
3)clear()方法:清空列表内数据
4)del:删除列表、也可以进行切片删除
改:
1)s[ ] = ' ' #元素赋值
2)s[0:2] = ‘ ’ #分片赋值
查:
1)names = ['mike','mark','candice','laular']
print(names[2])
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']
元组:
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
功能:
tuple1=(1,2,3)
tuple2=(4,5,6)
tuple3=tuple1+tuple2
print(tuple3)
print(type(tuple3))
print(tuple1)
print(tuple2)
>>>>>>>结果
(1,2,3,4,5,6)
<class'tuple'>
(1,2,3)
(4,5,6)
字典:
增:
1)dict[key]=value
通过赋值的方法增加元素
2)dict.update(dict_i)
把新的字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict不同的key)
删:
1)del dict[key]
删除单一元素,通过key来指定删除
del dict
删除字典
2)dict.pop(key)
删除单一元素,通过key来指定删除
3)dict.clear()
清空全部内容
改:
1)dict[key]=value
通过对已有的key重新赋值的方法修改
2)dict.update(dict_i)
把字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict相同的key)
查:
1)dict[key]
通过key访问value值
2)dict.items()
以列表返回可遍历的(键, 值) 元组数组
3)dict.keys()
以列表返回一个字典所有键值
dict.values()
以列表返回一个字典所有值
4)dict.get(key)
返回指定key的对应字典值,没有返回none
集合:
1)add()方法:增加一个元素
2)remove()和pop()方法:删除集合中一个元素
3)clear()方法:清空集合中的元素
4)del:删除集合
5)& | - :集合的交并差
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 括号
- 有序无序
- 可变不可变
- 重复不可重复
- 存储与查找方式
(1)列表
什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示:
lst = ['arwen',123]
print lst[0]
print lst[1]
lst[0] = 'weiwen'
向list中添加项有两种方法:append和extend。append是向
如:
(2)元组
元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示,如:
tup = ('arwen',123)
print tup[0]
print tup[1]
(3)集合就是我们数学学的集合,没有什么特殊的定义。集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合,如:
lst = [ 1, 1, 0]
lst_set = set( lst ) #lst_set 为1 , 0
tup = (2, 2, 1)
tup_set = set( tup) # tup_set为2 , 1
for item in lst_set:
print item
(4)最后一个是字典。字典存储键值对数据,如:
1:a,2:b,3:c
字典最外面用大括号,每一组用冒号连起来,然后各组用逗号隔开。
字典最大的价值是查询,通过键,查找值。
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
代码:
#打开小说文件 f = open("D:\\World.txt", 'r') #定义数组 stop={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','my','myself','we','our','ours','ourelves','about','no','nor'} #读取文件 def gettext(): sep=",.? ?':' !--\!_:" text=f.read().lower() for c in sep: textx=text.replace(c,' ') return textx #对文件进行分解 bList=gettext().split() print(bList) #把分解后的词语放在一个集合中 bSet=set(bList) print(bSet) #把停用词放在集合中 bStop=set(stop) #去处停用词 bSet=bSet-bStop print(bSet) #定义字典对单词进行统计 bDict={} for word in bSet: bDict[word]=bList.count(word) print(bDict) print(bDict.items()) word=list(bDict.items()) #对统计结果进行排序 word.sort(key=lambda x:x[1],reverse=True) print(word) #输出前20的单词 for i in range(20): print(word[i]) #对结果输出到text.csv中 import pandas as pd pd.DataFrame(data=word).to_csv("D:\\text.csv",encoding='utf-8')
结果: