作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表:
list =['Michael','Bob','girl','克里斯',55] #列表 list2=[44,"smile"] #列表2 #增 list.append('like') # 将元素like增加到列表结尾 list.extend(list2) # 将list2列表中的元素增加到list中 list.insert(2, 'Nacy') #在指定位置插入一个元素 #删 list.pop() #删除最后一个元素 list.pop(1) #删除指定位置的元素 #改 list[0] = 'if' #修改指定位置的元素 #查 i=list.index(55) #返回值为55的元素的索引位置 print(i) #遍历列表中的每一个元素 for i in list: print(i)
元组:
tup = ('head', 'pop','style', 36); #元组 #增 tup2 = ('A', 88,'room') tup3=tup+tup2 #元组不支持修改,但可以通过连接组合的方式进行增加 print(tup3) #删 del tup #元组不能删除单个元素,但能把元组当做一个整体删除 #查 print(tup3[2]) #查找指定位置的元素 #遍历 for g in tup3: print(g) #遍历元组中的每一个元素
字典:
dict={'bob':85,'nacy':70,'mary':90} #字典 #增 dict['jack']=60 #将元素添加在最后面 print(dict) #删 del (dict['mary']) #删除key为'mary'的元素 dict.pop('nacy') #删除key为'nacy'的元素 print(dict) #修改 dict['bob']=87 #通过对已有key重新赋值的方法来进行修改 print(dict) #查询 print(dict['bob']) #查询key值为'bob'的值 print(dict.items()) #以列表返回可遍历的(键, 值) 元组数组 print(dict.get('bob')) #得到key值为'bob'的值 #遍历 for key in dict.keys(): print(key) #遍历每个元素并返回元素的key值 for value in dict.values(): print(value) #遍历每个元素并返回元素的value值
集合:
set={1,2,3,4,5} #集合 #增 set.add(7) print(set) #删 set.remove(4) print(set) #集合无序,不能进行修改和查找 #遍历 for s in set: print(s)
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 括号
- 有序无序
- 可变不可变
- 重复不可重复
- 存储与查找方式
列表 | 元组 | 字典 | 集合 | |
括号 | [ ] | ( ) | { } | { } |
有序无序 | 有序 | 有序 | 无序 | 无序 |
可变不可变 | 可变 | 不可变 | 不可变 | 可变 |
重复不可重复 | 可以 | 可以 | 可以 | 不可以 |
存储与查找方式 | 值 | 值 | 键值对 | 键 |
3.词频统计
-
1.下载一长篇小说,存成utf-8编码的文本文件 file
2.通过文件读取字符串 str
3.对文本进行预处理
4.分解提取单词 list
5.单词计数字典 set , dict
6.按词频排序 list.sort(key=lambda),turple
7.排除语法型词汇,代词、冠词、连词等无语义词
- 自定义停用词表
- 或用stops.txt
import pandas as pd import stopwords stopwords=stopwords.get_stopwords('english') fo=open('Nicholas Nickleby.txt','r',encoding='utf8') str=fo.read() #将文章转化为字符串 fo.close() #预处理字符串 text=str.lower() #将所有大写转换为小写 sep = ',.?\'“‘’”!;:_' for s in sep: #将所有其他做分隔符(,.?!)替换为空格 text = text.replace(s,' ') dict={ } textlist=text.split() #分解提取单词 for word in textlist: #去除停用词 if word not in stopwords: dict[word]=textlist.count(word) #单词计数 print(textlist) 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]); #输出top20 pd.DataFrame(data=d).to_csv('wordscount.csv',encoding='utf-8') #保存为csv格式
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