天天看點

複合資料類型,英文詞頻統計

本次作業來源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

1.清單,元組,字典,集合分别如何增删改查及周遊。

清單:

list=['a','b','c','d','e','f','g','a']
list.append('aa')#增加元素
del list[3]#删除第四個元素
 list[4]='egg' #更改第五個元素
 list.insert(3,'cat') #插入清單
 list.index('f')#查找元素的位置
list.index['g'] # 檢視元素50的位置
 list.count('a') #統計元素個數
 for i in list: printf(list[i])  #周遊      

元組:

元組的操作和清單類似,但是元組不能進行增加和修改删除元組中的元素      
list=('a','b')
print(list[0])#通過元組的下标通路元素      

字典:

d={'apple':1,'boy':2,'cat':3}
d['apple']=4   #修改鍵apple 的值
del d['apple']   #删除鍵apple
 a=d['apple']    #檢視鍵apple的值
d.clear()  #删除字典中的所有條目
  str(d)  #輸出字典for key in d:printf(d[key]) #周遊      

集合

z=set('z')
z.add('b')  #增加元素
z.pop()    #随機删除元素
z.remove('b')  #删除元素  
集合無序,不能查找和修改指定的元素      

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

  • 括号
  • 有序無序
  • 可變不可變
  • 重複不可重複
  • 存儲與查找方式

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

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

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

 集合(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       
exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'}  #定義數組#
#讀取Harry Potter.txt檔案中的英文内容#
def gettxt():
    sep=".,:;?!-_'"
    txt=open('faded.txt','r').read().lower()
    for ch in sep :
        txt=txt.replace(ch,' ')
    return txt
#分解提取單詞#
bigList=gettxt().split()
print(bigList);
print('faded:',bigList.count('faded'))
bigSet=set(bigList)
#過濾單詞,包括一些冠詞和連詞等#
bigSet=bigSet-exclude
print(bigSet)
#單詞計數#
bigDict={}
for word in bigSet:
    bigDict[word]=bigList.count(word)
print(bigDict)

print(bigDict.items())
word=list(bigDict.items())
#按詞頻排序#
word.sort(key=lambda x:x[1],reverse=True)
print(word)
#輸出頻率較高的詞語top20#
for i in range(20):
    print(word[i])
#排序好的單詞清單word儲存成csv檔案#
import pandas as pd
pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')      
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計