天天看點

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

作業的要求來自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696

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

  1. 清單操作
    # -*- coding: utf-8 -*-
    
    # 定義一個清單
    textList = ['cd','rm','mkdir','cat','tar']
    
    # 清單增加
    textList.append('gunzip')
    textList.insert(2 , 'qzip')
    
    # 清單删除
    textList.pop(1)
    del textList[3]
    
    # 清單修改
    textList[1] = 'love'
    
    # 清單周遊
    for i in range(len(textList)):
        print(textList[i])      
  2. 元組操作
    # 定義元組
    tuple1 = (1,2,3,4,5,6)
    tuple1 = tuple([1,2,3,4]) #序列->元組
    
    # 周遊元組
    for i in range(len(tuple1)):
        print(tuple1[i])      
  3. 字典操作
    # 建立字典
    textDict = {'xiaoming':'80','xiaobai':'90'}
    print(textDict)
    # 增加操作
    textDict['xiaohong']='100'
    print(textDict)
    # 修改操作
    textDict['xiaoming']='100'
    print(textDict)
    # 删除操作
    del textDict['xiaoming']
    print(textDict)
    # 查找操作
    print(textDict['xiaobai'])
    # 周遊操作
    for s in textDict:
        print( "%s : %s"%(s,textDict[s]))      
  4. 集合
    # 兩種方法建立
    set1 = set('kydaa')
    set2 = {'abc', 'jaja', 'abc', 'kyda'}
    print(set1)
    print(set2)
    # 結果:自動将重複元素去除
    {'a', 'y', 'd', 'k'}
    {'jaja', 'abc', 'kyda'}      

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

  1. 清單:清單是用[]括起來的,是一種有序的資料結構,這種資料結構是可以變化的,裡面的值也是可以變化的,存儲的方式是[,,,],增加的方式有在後面增加也有在指定的位置進行插入,查找方式有按index的值進行查找。
  2. 元組:元組是用()括起來的,是一種有序的資料結構,這種資料結構是不可以變化的,即初始化後就不能再修改了但是例外的就是裡面有清單是可以修改清單裡面的值,存儲方式是(,,,)。
  3. 字典:字典是用{}括起來的,是一種無序的資料結構,這種資料結構是可以變化的,裡面的值鍵子是不可以重複的,存儲方式是{‘key1’:‘value’,‘key2’:‘value’},查找的方式是同配對鍵子的值。
  4. 集合:集合特性:與字典類似,但隻包含鍵,而沒有對應的值,包含的資料不重複。

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.可視化:詞雲
  • 代碼如下
  • # 讀取檔案
    f = open("wz.txt","r")
    text = f.read()
    f.close()
    # 轉為小寫
    text = text.lower()
    # 将所有其他做分隔符(,.?!)替換為空格
    text = text.replace(","," ").replace("."," ").replace("?"," ").replace("!"," ")
    # 分割為單詞
    text = text.split()
    
    
    setText = set(text)
    exclude = {'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'}
    setText = setText-exclude
    
    # 轉為字典
    textDict = {}
    for word in setText:
        textDict[word] = text.count(word)
    
    # 轉為清單
    word = list(textDict.items())
    word.sort(key = lambda x:x[1],reverse=True)
    print(word[:20])
    
    # 生成excel
    import pandas as pd
    pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')      
    可視化如下
  • 複合資料類型,英文詞頻統計