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

Posted on 2019-03-22 17:18  赵铭杰  阅读(191)  评论(0编辑  收藏  举报

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

使用append()方法来添加列表项(仅支持增加一个元素),extend()增加一个列表,insert()根据索引添加元素

del 根据索引删除元素,或者使用remove()删除指定值的元素,pop()根据索引删除元素

对列表数组某元素进行赋值,以进行更新

搜索可以通过搜索元素或者搜索元素索引值

列表有三种遍历方法,一种是带Index索引的循环,一种是用range()方法进行的,还有一种是使用enumerate() 方法的。

 

元组的增加和修改不能直接通过赋值,但可以对元组进行连接组合,

例:

tup3 = tup1 + tup2

元组可以使用下标索引来访问元组中的值

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

 

字典的访问需要在输出时把相应的键放入到方形弧内

向字典添加新内容的方法是增加新的键,由于字典是另一种可变容器模型,且可存储任意类型对象,所以可以直接在方形弧内添加新的名称

而字典内的修改是对已有键进行修改

删除使用del()可以删除整个词典的条目,也可以用dict来删除某一条目。

 

集合的增加是通过使用add()方法添加元素,使用remove()进行删除元素,

 

 

2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:

列表:

 

括号:有括号:[]

有序无序:有序

可变不可变:可变

重复不可重复:可重复

存储与查找方式:顺序查找和根据下标查找,存储根据对应下标存储

元组:

 

括号:有括号:()

有序无序:有序

可变不可变:不可变

重复不可重复:可重复

存储与查找方式:顺序查找和根据下标查找,存储根据对应下标存储

字典:

 

括号:有括号:{}

有序无序:无序

可变不可变:可变,根据key改变键值

重复不可重复:key不可重复,键值可重复

存储与查找方式:根据key存储和查找所对应的键值

集合:

 

括号:有括号:()

有序无序:无序

可变不可变:可变

重复不可重复:不可重复

存储与查找方式:顺序查找和根据下标查找,存储根据对应下标存储

 

3.词频统计

 

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

 

 

2.通过文件读取字符串 str

txt = open("E:\\abc.txt", encoding="utf-8").read()
words  = jieba.lcut(txt)

3.对文本进行预处理

 

4.分解提取单词 list

 

5.单词计数字典 set , dict

 

 

import jieba

import pandas as pd

txt = open("E:\\abc.txt", encoding="utf-8").read()

words  = jieba.lcut(txt)

counts = {}

stopwords = [line.strip() for line in open("CS.txt",encoding="utf-8").readlines()] 

for word in words:

    counts[word] = counts.get(word,0) + 1

items = list(counts.items())

items.sort(key=lambda x:x[1], reverse=True)

for i in range(20):

    word, count = items[i]

    print ("{0:<10}{1:>5}".format(word, count))

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

 

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

 

自定义停用词表

或用stops.txt

       8.输出TOP(20)

stopwords = [line.strip() for line in open("stops.txt",encoding="utf-8").readlines()] 

 

counts = {} 

for word in words: 

    #不在停用词表中 

    if word not in stopwords: 

        #不统计字数为一的词 

        if len(word) == 1: 

            continue 

        else: 

            counts[word] = counts.get(word,0) + 1 

items = list(counts.items()) 

items.sort(key=lambda x:x[1], reverse=True)  

for i in range(20): 

    word, count = items[i] 

    print ("{:<10}{:>7}".format(word, count))

 

 

9.可视化:词云

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

 

import pandas as pd

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

 

线上工具生成词云:

https://wordart.com/create