作业的要求来自于: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格式
View Code

 

  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