Python騷操作 | 川普的嘴,騙人的鬼!

前言

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。

作者:pk哥

PS:如有需要Python學習資料的小夥伴可以加點擊下方鏈接自行獲取http://t.cn/A6Zvjdun
在這裏插入圖片描述
前幾天,川普又在推特因爲宣揚暴力翻車了,不過,對於這位翻車王來說,已經是常規操作了。在推特上指點江山已經成爲他新的治國方式。我無意中關注了他的推特,看手機時推特 push 消息一直響個不停,一看,全是川普發的,一位總統一天能發 200 條推特,我服了。
在這裏插入圖片描述
有時,川普會在推特上發表的一些言論和觀點,在現實中,把自己在推特上說的全部否定,這是最強的打臉永動機,很魔幻。
在這裏插入圖片描述
我整理了一份川普從 2017 年 1 月份 到 2020 年 5 月 31 號的所有推特消息。這是一份英文 Excel 文檔,爲了方便中文分詞和查看,我把它翻譯成了中文。

讀取信息並分詞

然後直接讀取 Excel 文檔讀取特定列的推特信息並返回結果。

def excel_one_line_to_list():
    data = pd.read_excel('/Users/brucepk/Documents/trump_20200530_中文翻譯版.xlsx', header=1, usecols=[0], names=None)
    df_li = data.values.tolist()
    result = []
    for s_li in df_li:
        result.append(s_li[0])
    return result

接下來用中文分詞庫 jieba 庫對這些信息進行分詞。

if __name__ == '__main__':
    result = str(excel_one_line_to_list())
    results = re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "", result).replace('謝謝', '').replace('今天', '')
    text = ''
    for line in results:
        text += ' '.join(jieba.cut(line, cut_all=False))
    print('text:', text)
    backgroud_Image = np.array(Image.open('trumppic2.png'))   # 生成詞雲圖的背景圖片

配置詞雲圖參數

在把分好詞的單詞進行統計,通過 WordCloud 庫把單詞展示在出來生成詞雲圖,出現的次數越多的詞字體越大。

    wc = WordCloud(scale=32, background_color='white', mask=backgroud_Image,
                   font_path='/System/Library/Fonts/Supplemental/Songti.ttc',
                   max_words=1000, max_font_size=100, random_state=42, mode='RGB')
    wc.generate_from_text(text)

    process_word = WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
    print(sort[:50])   # 打印出排名前50的詞
    img_colors = ImageColorGenerator(backgroud_Image)
    wc.recolor(color_func=img_colors)
    plt.imshow(wc)
    plt.axis('off')
    wc.to_file("trump20.jpg")  # 保存詞雲圖在代碼的的同一目錄下
    print('生成詞雲成功!')

WordCloud 庫裏面的參數說明下:

  • scale 控制圖片的清晰度,最高 64,我設置的 32,已經很高清了,這個值越高,生成圖片耗時越長。
  • background_color 詞雲圖背景顏色
  • mask 生成詞雲圖的背景圖片
  • font_path 你電腦裏的字體,需要給出具體字體的路徑
  • max_words 詞雲圖顯示的單詞數量
  • max_font_size 出現次數最多單詞的字體大小
  • random_state 隨機生成顏色

我把背景圖換成川普的側臉圖。
在這裏插入圖片描述
參數設置完成後,就可以生成詞雲圖了。

    process_word = WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
    print(sort[:50])   # 打印出排名前50的詞
    img_colors = ImageColorGenerator(backgroud_Image)
    wc.recolor(color_func=img_colors)
    plt.imshow(wc)
    plt.axis('off')
    wc.to_file("trump20.jpg")  # 保存詞雲圖在代碼的的同一目錄下
    print('生成詞雲成功!')

川普推特詞雲圖

這次我把川普推特上發的消息做成詞雲圖,看看一天發 200 推特的內容說的都是啥!
在這裏插入圖片描述

完整代碼

import pandas as pd
import csv
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import jieba
import re
from matplotlib import colors
import numpy as np
from PIL import Image

# 讀取Excel表格信息並返回結果
def excel_one_line_to_list():
    data = pd.read_excel('/Users/brucepk/Documents/trump_20200530_中文翻譯版.xlsx', header=1, usecols=[0], names=None)
    df_li = data.values.tolist()
    result = []
    for s_li in df_li:
        result.append(s_li[0])
    return result


if __name__ == '__main__':
    result = str(excel_one_line_to_list())
    results = re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "", result).replace('謝謝', '').replace('今天', '')
    text = ''
    for line in results:
        text += ' '.join(jieba.cut(line, cut_all=False))
    print('text:', text)
    backgroud_Image = np.array(Image.open('trumppic2.png'))   # 生成詞雲圖的背景圖片

    # 設置生成詞雲的參數,font_path爲電腦裏的字體路徑,需要改成你電腦的字體路徑
    wc = WordCloud(scale=32, background_color='white', mask=backgroud_Image,
                   font_path='/System/Library/Fonts/Supplemental/Songti.ttc',
                   max_words=1000, max_font_size=100, random_state=42, mode='RGB')
    wc.generate_from_text(text)

    process_word = WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
    print(sort[:50])   # 打印出排名前50的詞
    img_colors = ImageColorGenerator(backgroud_Image)
    wc.recolor(color_func=img_colors)
    plt.imshow(wc)
    plt.axis('off')
    wc.to_file("trump20.jpg")  # 保存詞雲圖在代碼的的同一目錄下
    print('生成詞雲成功!')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章