1. 程式人生 > >復合數據類型,英文詞頻統計

復合數據類型,英文詞頻統計

odin move 不能 list not mov sar mil clear

1.列表,元組,字典,集合分別如何增刪改查及遍歷。

  1. 列表
    增:list是一個可變的有序表,所以,可以往list中追加元素到末尾:
    classmates.append(‘Adam‘)
    刪:要刪除list末尾的元素,用pop()方法;要刪除指定位置的元素,用pop(i)方法,其中i是索引位置;
    改:要把某個元素替換成別的元素,可以直接賦值給對應的索引位置:
    classmates[1] = ‘Sarah‘
    查:變量classmates就是一個list。用len()函數可以獲得list元素的個數;

  2. 元組
    元組定義以後是不可以變的,沒有刪除,增加的機能。
    改:不可以改tupple的元素,可以改指向的list的本身。

    查:與list基本一致
  3. 字典
    增:原有dict[‘key‘]="value",如
    dict[School] = "RUNOOB" # 添加
    刪:
    del dict[Name] # 刪除鍵是‘Name‘的條目
    dict.clear() # 清空詞典所有條目
    del dict # 刪除詞典

    改:用賦值號進行修改其中的值
    查:可根據key值查找
  4. 集合
    增:set=set(["1","2","3","4","5"]);
    刪:set.remove(key)
    改:str是不變對象,而list是可變對象。
    查:可根據key值查找


2.總結列表,元組,字典,集合的聯系與區別。參考以下幾個方面:

  1. 列表
  2. 元組
  3. 字典
  4. 集合

    列表(list):列表是一組有序項目的數字結構,列表的項目應該放在方括號[ ]中,列表是可以被改變和可重復的;按照索引的方式查找通過偏移存儲並且元素可以任意類型存在。

    元組(tuple):元組與列表十分相似,可重復也是通過偏移的方式進行存儲,不過元組是不可變的即是你是不能對元組中的元素進行修改,而且用的是();元組的元素是固定的長度、異構,也是任意嵌套。

    字典(dict):字典使用的是{},字典是無序的,但是可變可重復;使用鍵-值(key-value)進行存儲,查找速度快;字典的key是不能變的,list不能作為key,字符串、元祖、整數等都可以。

    集合(set):無序不可變,使用([ ])

    ,與字典類似,但只包含鍵,而沒有對應的值;元素可以是列表、元組、字典中的任意一個或多個。


存儲與查找方式

列表(list) 元組(tuple) 集合(set) 字典(dict)
括號 [ ] () ([]) {}
有無序
可不可變 可變 不可變 可變 可變
是否重復
查找方式 索引 索引 鍵值

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
if __name__ == ‘__main__‘:fo = open("oldman.txt", ‘r‘ ,encoding="utf-8")
#讀取英文文章
text = fo.read()
#大寫轉小寫
text = text.lower()

#停用列表
strs = {",", ‘.‘, "?", "!", ‘;‘}
stops = {‘one‘,‘this‘,‘and‘,‘"i‘,‘them‘,‘what‘,‘will‘,‘am‘,‘from‘,‘when‘,‘who‘,‘him‘,‘do‘,‘had‘,‘no‘,‘if‘,‘they‘,‘as‘,‘all‘,‘so‘,‘very‘,‘is‘,‘his‘,‘by‘,‘but‘,‘to‘,‘of‘,‘he‘,‘that‘,‘you‘,‘was‘,‘it‘,‘the‘,‘a‘,‘i‘,‘in‘,‘my‘,‘not‘,‘have‘,‘are‘,‘me‘,‘for‘,‘be‘,‘at‘,‘on‘,‘with‘}

#替換符號為空格
for str in strs:
    text = text.replace(str, "")

#分割單詞
text = text.split()

#轉為集合
spliText = set(text)
spliText = spliText - stops


#統計詞頻
textS = {}#轉化為字典
for i in spliText:
    count = text.count(i)
    textS[i] = count

#排序輸出
textS = sorted(textS.items(), key=lambda text:text[1],reverse= True)

print(textS[0:10],"\n",textS[10:20])

#輸出到csv文件
pd.DataFrame(data=textS).to_csv(‘out.csv‘,encoding=‘utf-8‘)

 生成的詞雲

 技術分享圖片

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

線上工具生成詞雲:
https://wordart.com/create

復合數據類型,英文詞頻統計