复合数据类型,英文词频统计
1.列表,元组,字典,集合分别如何增删改查及遍历。
(列表)
# # -*- coding: utf-8 -*- list = ['a', 'b', 2019, 'c'] print("list的类型:", type(list)) print("list[2]:", list[2]) print("list[1:2]:", list[1:3]) print("list列表的值为", list) print("第三个元素为list[2]:", list[2]) list[2] = 2018 print("修改后的第三个元素为list[2]:", list[2]) list.append(2) print("增加元素后的list值:", list) list.insert(1, 'd') print("插入元素后的list值:", list) del list[4] print("删除第五个元素后的list值:", list)
(元组)
num1 = ('a', 'b','c', 'd'); #设置元组
num2 = ('e', 1,'g')
num3=num1+num2 #元组不支持修改,但可以通过连接组合的方式进行增加
print(num3)
#查
print (num1[0] ,num2[0])
(字典)
dict['key']='value'
del dict['key']
if 'key' in dict1: dict1['key']='new_value'
if 'key' in dict: print dict1['key']
for i in dict['key']:
print(i)
(集合)
set={1,2,3} 增
set.add(4)
print(set)
删
set.remove(4)
print(set)
#遍历
for x in set:
print(x)
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 括号
- 有序无序
- 可变不可变
- 重复不可重复
- 存储与查找方式
列表 | 元组 | 字典 | 集合 | |
括号 | [] | () | {} | {} |
有序无序 | 有序 | 有序 | 有序 | 无序 |
可变不可变 | 可变 | 不可变 | 可变 | 可变 |
重复不重复 | 可重复 | 可重复 | 可重复 | 不可重复 |
存储与查找方式 | 索引 | 索引 | 键值 | 值 |
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(r'C:\Users\Lenovo\PycharmProjects\Were You Ever a Child.txt', encoding='utf8') # 打开文件 stop = {'a', 'the', 'and', 'i', 'you', 'in', 'but', 'not', 'with', 'by', 'its', 'for', 'of', 'an', 'to', 'my', 'myself'} def gettext(): sep = "~`*()!<>?,./;'\:[]{}-=_+" text = f.read().lower() for s in sep: text = text.replace(s, '') return text # 读取文件 textList = gettext().split() print(textList) # 分解提取单词 textSet = set(textList) stop = set(stop) textSet = textSet - stop print(textSet) # 排除语法词 textDict = {} for word in textSet: textDict[word] = textList.count(word) print(textDict) print(textDict.items()) word = list(textDict.items()) # 单词计数 word.sort(key=lambda x: x[1], reverse=True) print(word) # 排序 for q in range(20): print(word[q]) # 次数为前20的单词 import pandas as pd pd.DataFrame(data=word).to_csv("text.csv", encoding='utf-8')
词云执行效果如下: