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

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

列表

(1)增加元素:

  • append()方法:在列表的末尾增加一个元素
  • insert()方法:在列表指定的位置上增加一个元素
  • extend()方法:可迭代,分解成元素添加在末尾

 

(2)删除元素:

  • pop()方法: 按照下标索引删除指定的值
  • remove()方法:按元素删除指定的值
  • clear()方法:清空列表内数据
  • del:删除列表、也可以进行切片删除

 

(3)修改元素:

  • s[  ] = '  '  #元素赋值 
  • s[0:2] = ‘ ’ #分片赋值

 

(4)查找元素:

  • names = ['mike','mark','candice','laular']
    
    print(names[2])
  • names = ['mike','mark','candice','laular']
    
    print(names[1:3]) #通过切片方式取值,切片是顾头不顾尾,打印结果:['mark', 'candice']
    
    print(names[1:]) #取下标后面所有的值,打印结果:['mark', 'candice', 'laular']
    
    print(names[:3]) #取下标前面所有的值,打印结果:['mike', 'mark', 'candice']
    
    print(names[:]) #取所有的值,打印结果:['mike', 'mark', 'candice', 'laular']
    
    print(names[-1]) #取最后一个值,打印结果:laular
    
    print(names[:1:2])#隔几位取一次,默认不写步长为1,即隔一位取一次;结果为取下标为1之前的值,隔2位取一个['mike']

元组的增删改差

  • tup=tup1+tup2
    元组不支持修改,但可以通过连接组合的方式进行增加
  • del tup
    元组不支持单个元素删除,但可以删除整个元组
  • tup=tup[index1],tup1[index2], ...
    tup=tup[index1:index2]
    元组是不可变类型,不能修改元组的元素。可通过现有的字符串拼接构造一个新元组
  • tup[index]
    通过下标索引,从0开始tup[a:b]
    切片,顾头不顾尾

字典

(1)增加元素:

  • dict[key]=value
    通过赋值的方法增加元素
  • dict.update(dict_i)
    把新的字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict不同的key)

(2)删除元素:

  • del dict[key]
    删除单一元素,通过key来指定删除
    del dict
    删除字典
  • dict.pop(key)
    删除单一元素,通过key来指定删除
  • dict.clear()
    清空全部内容

(3)修改元素:

  • dict[key]=value
    通过对已有的key重新赋值的方法修改
  • dict.update(dict_i)
    把字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict相同的key)

(4)查询元素:

  • dict[key]
    通过key访问value值
  • dict.items()
    以列表返回可遍历的(键, 值) 元组数组
  • dict.keys()
    以列表返回一个字典所有键值
    dict.values()
    以列表返回一个字典所有值
  • dict.get(key)
    返回指定key的对应字典值,没有返回none

集合:

      • add()方法:增加一个元素
      • remove()和pop()方法:删除集合中一个元素
      • clear()方法:清空集合中的元素
      • del:删除集合
      • & | - :集合的交并差

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

(1)列表

  • 列表list,用中括号“[ ]”表示
  • 列表是一组任意类型的值,按照一定顺序组合而成的 
  • 可以随时添加删除修改其中的元素
  • 元素可重复
  • 存储时每一个元素被标识一个索引,每当引用时,会将这个引用指向一个对象,所以程序只需处理对象的操作

(2)元组

  • 元组tuple,用小括号“( )”表示
  • 与列表相同,有序
  • 一旦初始化就不能修改
  • 元素可重复
  • 与列表相似,元组是对象引用的数组

(3)字典

  • 字典dict,用大括号“{key,value}”表示
  • 字典中的项没有特定顺序,以“键”为象征 
  • 因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值
  • key不能重复
  • 字典存储的是对象引用,不是拷贝,和列表一样

 

(4)集合

 

  • 集合set,用小括号“( )”表示
  • 无序
  • 可变,可以添加和删除元素
  • 无重复
  • 与列表相似

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

 

(1)读取字符串进行预处理并分解提取单词

f=open(r'F:\1.txt','r',encoding='utf8')
word=f.read()
word=word.lower()
s=',.!?'
for c in s:
    word = word.replace(c, "")
wordlist=word.split()

(2)单词计数字典

wordlist
wordset=set(wordlist)
worddict={}
for w in wordset:
    worddict[w]=word.count(w)

(3)按词频排序

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

wordsort

  排序后的结果

(4)排除无语义词

 自定义停用词表

exclude = {'am','the','and','i','you','it','is','if','do','a','me'}
def gettxt():
    txt=open(r'F:\1.txt','r',encoding='utf8').read().lower()
    s=',.!?'
    for c in s:
        txt = txt.replace(c, "")
    return txt
wordlist = gettxt().split()
wordset = set(wordlist)-exclude
worddict = {}
for w in wordset:
    worddict[w]=word.count(w)
wordsort = list(worddict.items())
wordsort.sort(key = lambda x:x[1],reverse=True)
wordsort

 

  结果:

 使用stops.txt(连接不上)

(5)输出top(20)

for i in range(20):
print(wordsort[i])

  

(6)可视化

import pandas as pd
pd.DataFrame(data=wordsort).to_csv(r'F:\big.csv',encoding='utf-8')

 生成词云:

 

 

作业博客要求:

  • 文字作业要求言简意骇,用自己的话说明清楚。
  • 编码作业要求放上代码,加好注释,并附上运行结果截图。
posted @ 2019-03-15 18:10  李柔  阅读(164)  评论(0编辑  收藏  举报