python英文文本词频统计_python复合数据类型以及英文词频统计

1.列表,元组,字典,集合分别如何增删改查及遍历。

列表操作如下所示:

#列表

string = 'list'

#字符串->列表

list1 = list(string) #['l', 'i', 's', 't']#列表->字符串

string1 = ''.join(list1) #list#列表的增删改查

list1 = list('this is a list')#增加

list1.append('!') #末尾增加元素

list1.insert(2,'this is index 3') #指定index增加一个元素#删除

list1.pop(-1) #删除指定index的元素 默认是-1 return被删除元素的值

del list1[-1]if '!' in list1: #删除第一个匹配的元素,如果不存在会报错,没有返回值

list1.remove('!')#修改

list1[0] = '0' #元素赋值

list1[0:2] = list('05') #分片赋值

list1[1:1] = list('1234') #分片赋值 插入新元素

list1[1:5] = [] #分片赋值 删除元素#查找

if 'a' inlist1:

index= list1.index('a') #查找元素下标#拼接

list2 = ['new','list']

list1.extend(list2)#从列表增加元素

printlist1#逆置

list1.reverse();printlist1#去重#1

l1 = ['b','c','d','c','a','a']

l2=list(set(l1))#2

l2.sort(key=l1.index) #保持原来的顺序#3

l1 = ['b','c','d','c','a','a']

l2=[]for i in l1: #[l2.append(i) for i in l1 if not i in l2]

if not i inl2:

l2.append(i)print l2 #保持原来的顺序

集合操作如下所示:

1 #两种方法创建

2 set1 = set('kydaa')3 set2 = {'abc', 'jaja', 'abc', 'kyda'}4 print(set1)5 print(set2)6 #结果:自动将重复元素去除

7 {'a', 'y', 'd', 'k'}8 {'jaja', 'abc', 'kyda'}

字典操作如下所示:

1 #字典

2 #创建

3 dict1 ={4 'key':'value',5 'key1':'value1'

6 }7 a = [('key1','value1'),('key2','value2')]8 dict1 =dict(a)9 dict1 = {}.fromkeys(['key1','key2'],'default_value') #从键值创建dict

10 dict1 = dict(key1='value1',key2='value2')11 #增加

12 dict1['key3']='value3' #字典可以自动添加

13 dict1.setdefault('key5','N/A') #如果不存在,就设置默认值

14 #删除

15 del dict1['key3']16 print dict1.pop('key2') #popitem随机删除 和列表的pop一样

17 #dict1.clear() #深删除,即使有拷贝 也会被删除

18 #修改

19 if 'key1' indict1:20 dict1['key1']='new_value_1'

21 #查找

22 if 'key1' indict1:23 print dict1['key1']24 if dict1.has_key('key1'):25 print dict1['key1']26 print dict1.get('key3','not exists') #宽松访问

27 printdict1.keys(),dict1.values()28 #拼接

29 dict2 = dict(key4 = 'value4') #从字典更新另一个字典

30 dict1.update(dict2)

2.总结列表,元组,字典,集合的联系与区别。

(1)list是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目。列表中的项目应该包括在方括号中。一旦创建了一个列表,就可以添加,删除,或者是搜索列表中的项目。列表是可变的数据类型,并且列表是可以嵌套的。python里的列表用“[]”表示。列表的特点是可重复,类型可不同,类型不同也是跟数组最本质的区别了。

(2)元组和列表十分相似,不过元组是不可变的,即不能修改元组。元组用“()”表示,元组可以嵌套。

(3)集合特性:与字典类似,但只包含键,而没有对应的值,包含的数据不重复。

创建:s=set(list or tuple or string),重复的值在集合中只存在一个。

(4)字典即把键(名字)和值(详细情况)联系在一起,键必须是唯一的。键值对在字典中以这样的方式标记:d={key1:value1 , key2:value2}。键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。

3.词频统计

步骤如下:

(1)下载一长篇小说,存成utf-8编码的文本文件file;

(2)通过文件读取字符串str;

(3)对文本进行预处理;

(4)分解提取单词list;

(5)单词计数字典set,dict;

(6)按词频排序list.sort(key=lambda),turple;

(7)排除语法型词汇,代词、冠词、连词等无语义词;

(8)输出TOP(20);

(9)可视化:词云。

排序好的单词列表word保存成csv文件。

1 exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'} #定义数组#

2 #读取Harry Potter.txt文件中的英文内容#

3 defgettxt():4 sep=".,:;?!-_'"

5 txt=open('Harry Potter.txt','r').read().lower()6 for ch insep :7 txt=txt.replace(ch,' ')8 returntxt9 #分解提取单词#

10 bigList=gettxt().split()11 print(bigList);12 print('big:',bigList.count('big'))13 bigSet=set(bigList)14 #过滤单词,包括一些冠词和连词等#

15 bigSet=bigSet-exclude16 print(bigSet)17 #单词计数#

18 bigDict={}19 for word inbigSet:20 bigDict[word]=bigList.count(word)21 print(bigDict)22

23 print(bigDict.items())24 word=list(bigDict.items())25 #按词频排序#

26 word.sort(key=lambda x:x[1],reverse=True)27 print(word)28 #输出频率较高的词语top20#

29 for i in range(20):30 print(word[i])31 #排序好的单词列表word保存成csv文件#

32 importpandas as pd33 pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')

运行结果如下所示:

0ac6158b88dcfe4008ed0408f2dd1dac12c.png

4fca62024a893270c9f4a9c9c0de71b8ee5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值