复合数据类型,英文词频统计

作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

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

 

1.append()增加到最后
li = ['a','b',123,'你好',1] li.append('abc') print(li) 2.insert()插入,按照索引去增加
li = ['a','b',123,'你好',1] li.insert(2,'早') print(li) 3.extend ()迭代的去增
li = ['a','b',123,'你好',1] li.extend('abcdef') print(li) li.extend([1,2,3]) li = ['a', 'b', 123, '你好', 1] 4.pop()按索引进行删除,有返回值 li.pop(1) print(li) li = ['a', 'b', 123, '你好', 1] print(li.pop(1))
5.remove()按照元素去删除
li = ['a','b',123,'你好',1] li.remove('你好') print(li) 6.clear()清空列表元素 li = ['a','b',123,'你好',1] li.clear() print(li) li = ['a', 'b', 123, '你好', 1] del li[1:3] print(li)

7.按照位置去删除,也可切片删除没有返回值。 li = ['a', 'b', 123, '你好', 1] del li[1] print(li) 8.整个列表删除
li = ['a','b',123,'你好',1]

li[0] = '早'

print(li)
9.按切片来改 li = ['a','b',123,'你好',1] li[0:3] = 'safsafkf'


10.按索引来改
li = ['a','b',123,'你好',1]

li[0] = '早'

print(li)

  效果图:

 

 

 

2.元组

增:无

删:无

改:无

查:

tup = ('i','love','u')
print(tup[0])
print(tup)

3.字典增删改查

dict = {'hupu': 7, '知乎': 16, '微信': 15}

#按相应的键查找
print(dict['知乎'])

#增加键值对
dict['淘宝']=20
print(dict['淘宝'])

#修改键值对
dict['淘宝']=15.5
print(dict['淘宝'])

#删除单个键值对或清空字典
del dict['微信']
print(dict)
dict.clear()
print(dict)

 效果图 

 

4.集合增删改查


list=['dog','pig','fish','cat'] set = set(list) print(set) set.add('tiger') print(set) 删 list={'dog','pig','fish','cat'} list.pop() print(list) list.remove('cat') print(list) list.clear() print(list) del list print(list) 改 list={'apple','peace','banana','orange'} list_1={'dog','cat'} list=list|list_1 print(list) list=list&list_1 print(list) 查 list={'dog','cat','pig','tiger'} print(list.__str__())

  

 


  效果图:

 

 

 

总结:
1. 元组和列表有哪些共同点?有哪些不同点?
共同点:
① 他们都属于序列(均是容器对象),都是线性表,可以存储不同类型的内容。
② 都可进行以下操作:
  i. 切片操作
  ii. 索引访问
  iii. 连接操作
  iv. 成员关系操作
  v. 比较运算操作
  vi. 计数:元组长度 len()、最大值 max()、最小值 min()、求和 sum()等。
不同点:
① 元组的声明使用小括号,而列表使用方括号,当声明只有一个元素的元组时,需要在这个元素的后面添加英文逗号;
② 列表是动态的数组,元组是静态的数组。元组声明和赋值后,不能像列表一样添加、删除和修改元素,也就是说元组在程序运行过程中不能被修改。
③ 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。
2. 集合和字典有什么关系?
共同点:
①都是使用花括号{}将任意对象括起来的集合
②他们都是无序的数据集合
③都是一种可变的容器模型(可变的序列)。
不同点:
①存储对象不一样
  字典是由”键-值”(key-value)对组成的集合,字典的”值”(key)通过”键”(value)来引用。键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一,且key可存储任意类型对象。
  集合不支持下标索引,它是可变的数据类型,集合中的元素是唯一的,且不可以存列表和字典,一般用于元组或者列表中的元素去重。
②打印输出顺序不一样
  使用print输出字典的时候,通常输出的顺序和定义的顺序是不一致的;输出集合顺序和定义的一致。
③集合底层是字典实现,集合的所有元素都是字典中的“键对象”。

 

3.词频统计

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

3.2通过文件读取字符串 str

3.3对文本进行预处理

3.4分解提取单词 list

3.5单词计数字典 set , dict

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

3.7排除语法型词汇,代词、冠词、连词等无语义词

  自定义停用词表

  或用stops.txt

3.8输出TOP(20)

3.9可视化:词云

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

import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')


主要代码:
import pandas  as pd
file = open('3.txt', 'r', encoding='utf8')

# 排除词汇列表
exclude = {'a', 'an', 'and', 'was', 'as', 'up', 'my', 'it', 'here', 'at', 'll', 'his', 's', 'he', 'that', 'from', 'had',
           'have', 'we', 'the', 'i', 'you', 'in', 'on', 'but', 'with', 'not', 'by', 'its', 'for', 'of', 'to'}


# 对文本预处理
def getfile():
    sep = "'?', '?', '!'," '", "'", ' "', '"',':',':','.',',', ',', '.', '。','“','”',','"
    text = file.read().lower()
    for ii in sep:
        text = text.replace(ii, ' ')
    return text


# 提取单词,单词计数词典
fileList = getfile().split()
fileDict = set(fileList)
exclude1 = set(exclude)
fileDict = fileDict - exclude1

# 统计单词数量
countDict = {}
for word in fileDict:
    countDict[word] = fileList.count(word)
print(countDict.items())
word = list(countDict.items())

# 排序单词数量
word.sort(key=lambda x: x[1], reverse=True)
print(word)

# 输出TOP20
for i in range(20):
    print(word[i])
pd.DataFrame(data=word).to_csv('3.csv', encoding='utf-8')

  

 

 


线上工具生成词云:
https://wordart.com/create

 



posted on 2019-03-24 15:09  LaxY0013  阅读(175)  评论(0编辑  收藏  举报

导航