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

作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

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

列表:

增:

1)append()增加到最后

2)insert()方法:在列表指定的位置上增加一个元素

3)extend()方法:可迭代,分解成元素添加在末尾

删:

1)pop()方法: 按照下标索引删除指定的值

2)remove()方法:按元素删除指定的值

3)clear()方法:清空列表内数据

4)del:删除列表、也可以进行切片删除

改:

1)s[  ] = '  '  #元素赋值 

2)s[0:2] = ‘ ’ #分片赋值

查:

1)names = ['mike','mark','candice','laular']

print(names[2])

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']

元组:

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

功能:

tuple1=(1,2,3)

tuple2=(4,5,6)

tuple3=tuple1+tuple2

print(tuple3)

print(type(tuple3))

print(tuple1)

print(tuple2)

>>>>>>>结果

(1,2,3,4,5,6)

<class'tuple'>

(1,2,3)

(4,5,6)

字典:

增:

1)dict[key]=value
通过赋值的方法增加元素

2)dict.update(dict_i)
把新的字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict不同的key)

删:

1)del dict[key]
删除单一元素,通过key来指定删除
del dict
删除字典

2)dict.pop(key)
删除单一元素,通过key来指定删除

3)dict.clear()
清空全部内容

改:

1)dict[key]=value
通过对已有的key重新赋值的方法修改

2)dict.update(dict_i)
把字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict相同的key)

查:

1)dict[key]
通过key访问value值

2)dict.items()
以列表返回可遍历的(键, 值) 元组数组

3)dict.keys()
以列表返回一个字典所有键值
dict.values()
以列表返回一个字典所有值

4)dict.get(key)
返回指定key的对应字典值,没有返回none

集合:

1)add()方法:增加一个元素

2)remove()和pop()方法:删除集合中一个元素

3)clear()方法:清空集合中的元素

4)del:删除集合

5)& | - :集合的交并差

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

  • 括号
  • 有序无序
  • 可变不可变
  • 重复不可重复
  • 存储与查找方式

(1)列表

     什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示:  

  lst = ['arwen',123]
  print lst[0] 
  print lst[1]

  lst[0] = 'weiwen'

  向list中添加项有两种方法:append和extend。append是向

  如:

  (2)元组

  元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示,如:

  tup = ('arwen',123)
  print tup[0]
  print tup[1]

  (3)集合就是我们数学学的集合,没有什么特殊的定义。集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合,如:

  lst = [ 1, 1, 0]

  lst_set = set( lst )  #lst_set 为1 , 0

  tup = (2, 2, 1)

  tup_set = set( tup) # tup_set为2 , 1

  for item in lst_set:

    print item

  (4)最后一个是字典。字典存储键值对数据,如:

  1:a,2:b,3:c

  字典最外面用大括号,每一组用冒号连起来,然后各组用逗号隔开。

  字典最大的价值是查询,通过键,查找值。

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
代码:
#打开小说文件
f = open("D:\\World.txt", 'r')
#定义数组
stop={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','my','myself','we','our','ours','ourelves','about','no','nor'}
#读取文件
def gettext():
      sep=",.? ?':' !--\!_:"
      text=f.read().lower()
      for c in sep:
            textx=text.replace(c,' ')
      return textx
#对文件进行分解
bList=gettext().split()
print(bList)

#把分解后的词语放在一个集合中

bSet=set(bList)
print(bSet)
#把停用词放在集合中

bStop=set(stop)
#去处停用词

bSet=bSet-bStop
print(bSet)
#定义字典对单词进行统计

bDict={}
for word in bSet:
    bDict[word]=bList.count(word)
print(bDict)
print(bDict.items())
word=list(bDict.items())

#对统计结果进行排序

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

#输出前20的单词
for i in range(20):
    print(word[i])

#对结果输出到text.csv中
import  pandas as pd
pd.DataFrame(data=word).to_csv("D:\\text.csv",encoding='utf-8')

结果:

posted @ 2019-03-25 17:06  TILY  阅读(212)  评论(0编辑  收藏  举报