欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python輕松實現(xiàn)繪制詞云圖項目(附詳細(xì)源碼)

 更新時間:2022年06月23日 15:56:04   作者:我是J哥  
相信熟悉"詞云圖"的朋友都知道,"詞云圖"是用來做詞頻分析的可視化圖形,下面這篇文章主要給大家介紹了關(guān)于如何使用Python輕松實現(xiàn)繪制詞云圖項目的相關(guān)資料,需要的朋友可以參考下

項目背景

雖然現(xiàn)在已經(jīng)有很多現(xiàn)成的制作詞云圖的工具了,但一般存在以下幾個問題:

問題一:工具太多,眼花繚亂,質(zhì)量參差不齊,選擇困難癥;

問題二:大多詞云工具或多或少有一些限制,自定義的空間有限;

問題三:有些工具甚至收費。

基于以上幾個問題,覺得有必要寫一篇Python繪制詞云圖的文章,因為實在太簡單!沒有任何編程基礎(chǔ)的小白都能搞定的事,還找什么工具??!

OK,F(xiàn)INE。咱不廢話,直接實操。

項目實操

一、一般詞云繪制

制作詞云圖首先得有詞吧,詞從哪來,迪迪想了半天硬是沒想出來。既然沒思路,那就拿過氣的后浪軟文玩一玩吧,對于后浪大家褒貶不一,迪迪也不敢妄加評論。

首先,咱們把后浪全文保存為HL.txt,截取部分,長這樣:

接著,下載并導(dǎo)入制作詞云所需的庫,各個庫的功能都有注釋。

import jieba  #結(jié)巴分詞
from wordcloud import WordCloud  #詞云展示庫
from PIL import Image  #圖像處理庫
import numpy as np  #支持多維數(shù)組和矩陣運算
import matplotlib.pyplot as plt  #圖像展示庫

然后,把HL.txt的內(nèi)容讀出來。

# 讀取文本內(nèi)容
with open('HL.txt','r',encoding="UTF-8") as f:
    file = f.read()  #將文本讀取為整個字符串,readlines可以按行讀取

緊接著,咱們需要把讀取的整個字符串分成一個個的詞,jieba出征,寸草不生。

#進行分詞
data_cut =jieba.cut(file,cut_all = False) #精確模式分詞

分完詞后發(fā)現(xiàn),什么逗號啊、分號啊、句號啊也作為單獨的詞全出來了,那可不行,咱得想辦法stop它們。 構(gòu)建停詞表,把看不慣的詞remove掉,沒錯,我不喜歡口口聲聲的我們你們啥的。

stop_words = [",","。",";","、","我們","你們"]  #自定義停詞列表

當(dāng)然,有朋友會說,你這是因為文本內(nèi)容少,自己搞個停詞表方便,可要是成千上萬的文本你這點停詞肯定不夠用啊。OK,那咱們百度下停詞表,隨便download一個,保存為stopwords.txt。stopwords.txt共有1893個常用停詞,長這樣:

有了停詞表,咱得用Python讀出來。

stop_words = [] #創(chuàng)建空列表
with open("stopwords.txt", 'r', encoding='utf-8') as f:
    for line in f:
        if len(line)>0:
            stop_words.append(line.strip())  #把停詞追加到stop_words列表中

停詞準(zhǔn)備好了,接下來就是remove停詞,拿到我們需要的詞了。

data_result = [i for i in data_cut if i not in stop_words] #獲取需要的詞

print一下data_result,長這樣:

這可不行,咱們需要的是由一個個詞構(gòu)成的字符串。因此,需要用join函數(shù)以空格分隔并將所有詞連接成一個新的字符串。replace在這表示將換行(\n)符替換為空。

text = " ".join(data_result).replace("\n","") #連接成字符串
print(text)

咱們打印一下text看效果:

詞有了,可以開始設(shè)計詞云圖,由于所有詞都是中文,而WordCloud默認(rèn)不支持中文,摔!咱還得指定字體文件路徑,否則會出現(xiàn)亂碼。迪迪畢竟學(xué)歐體過來的,于是找了個小楷字體,你可以根據(jù)自己的喜好設(shè)置不同的字體,網(wǎng)上免費字體一大堆。

wc = WordCloud(
    #設(shè)置字體,不指定就會出現(xiàn)亂碼,這個字體文件需要下載
    font_path = "演示悠然小楷.ttf",
    background_color = "black",
    max_words = 5000,
)

配置好之后,咱生成圖片并展示出來。

# 生成詞云圖
wc.generate(text)

# 保存詞云圖
wc.to_file("IMJG.jpg") #保存圖片

# 展示
plt.imshow(wc) #對圖片進行處理,并顯示其格式
plt.axis("off") #關(guān)閉坐標(biāo)軸
plt.show() #將圖片顯示出來

效果如下:

到這,你可能以為迪迪準(zhǔn)備寫結(jié)語了。不好意思,還沒完,咱們的目標(biāo)可不能局限在這,在詩和遠(yuǎn)方,哦不,是定制屬于自己的詞云圖。 迪迪準(zhǔn)備給詞云加個自定義的底圖,讓詞云看起來更形象些。想了很久,不知道用什么圖合適。于是迪迪打開了好久沒用的Photoshop cc,繪制了一個你用美圖秀秀都能做的比我好看的png。

我把這張圖片命名為JG.png,并用Image方法打開。

#用Image方法打開圖片
images = np.array(Image.open("JG.png"))

把images配置到詞云wc中去,傳給參數(shù)mask。

wc = WordCloud(
    #設(shè)置字體,不指定就會出現(xiàn)亂碼,這個字體文件需要下載
    font_path = "演示悠然小楷.ttf",
    background_color = "black",
    max_words = 5000,
    mask=images
)

重新生成并保存下詞云圖,效果如下:

哈哈,略丑。朋友們有興趣可以自己做個底圖或者網(wǎng)上download一個底圖試試,底圖盡量清晰、顏色盡量突出就好啦。

還有朋友可能會問為啥我文章開頭的詞云圖是一個個句子,這里一并說明下,因為讀取HL.txt的時候用的是readlines啊~

二、根據(jù)詞頻繪制詞云

一般的詞云制作用以上方法就可以啦,但現(xiàn)實生活中我們的需求可能更為復(fù)雜,根據(jù)詞頻繪制詞云圖的案例也更為多見。以下就是J哥經(jīng)常用到的一個實戰(zhàn)案例,開源代碼奉上。

大致思路是從Mysql數(shù)據(jù)庫中提取上萬條交易記錄,用sql語句把交易規(guī)模前100的品牌select出來,然后根據(jù)各個品牌交易規(guī)模的大小制作詞云,文字越大的表示交易規(guī)模越大。

#-*- coding = uft-8 -*-
#@Time : 2020/5/23 10:30 上午
#@Author : 我是J哥
#@File : my_wordcloud.py

#給定詞頻制作詞云圖
from matplotlib import pyplot as plt   #繪圖,數(shù)據(jù)可視化
from wordcloud import WordCloud   #詞云
from PIL import Image  #圖片處理
import numpy as np   #矩陣運算
import pymysql   #數(shù)據(jù)庫
import pandas as pd  #數(shù)據(jù)處理


#準(zhǔn)備詞云所需文字(詞)
conn = pymysql.connect(host="localhost", user="你的", passwd="你的", db="test", port=3306, charset="utf8")
cur = conn.cursor()
sql = "select brand as name,round(sum(jine)/10000,0) as value from Sc_month4 group by name order by value desc limit 100;"
df = pd.read_sql(sql, conn)
print(df)
name = list(df.name)  #詞
value = df.value  # 詞的頻率
dic = dict(zip(name, value))  # 詞頻以字典形式存儲
#print(dic)
cur.close()
conn.close()

img = Image.open("tree.png")
img_arry = np.array(img)
wc = WordCloud(
    background_color="white",
    mask=img_arry,
    max_words=1000,
    max_font_size=500,
    #font_path="演示悠然小楷.ttf"
    #font_path="有字庫龍藏體.ttf"
    font_path="演示悠然小楷.ttf"
)

wc.generate_from_frequencies(dic)  #以詞頻生成詞云

#繪制圖片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis("off")
plt.show()

#輸出詞云圖片到文件
plt.savefig("JGJG.jpg",dpi=400)

生成的詞云圖長這樣:

結(jié) 語

整體來看,Python制作詞云圖還是很簡單的,代碼清晰,代碼量也少,很適合新手入門嘗鮮。當(dāng)然,要想呈現(xiàn)良好的詞云效果,前提是你的數(shù)據(jù)是干凈整潔的,因此數(shù)據(jù)清洗的知識必須掌握。

到此這篇關(guān)于使用Python輕松實現(xiàn)繪制詞云圖項目的文章就介紹到這了,更多相關(guān)Python繪制詞云圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python消費kafka數(shù)據(jù)批量插入到es的方法

    python消費kafka數(shù)據(jù)批量插入到es的方法

    今天小編就為大家分享一篇python消費kafka數(shù)據(jù)批量插入到es的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python Xarray處理設(shè)置二維數(shù)組作為coordinates方式

    python Xarray處理設(shè)置二維數(shù)組作為coordinates方式

    這篇文章主要介紹了python Xarray處理設(shè)置二維數(shù)組作為coordinates方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Python如何使用qrcode生成指定內(nèi)容的二維碼并在GUI界面顯示

    Python如何使用qrcode生成指定內(nèi)容的二維碼并在GUI界面顯示

    現(xiàn)在二維碼很流行,大街小巷大小商品廣告上的二維碼標(biāo)簽都隨處可見,下面這篇文章主要給大家介紹了關(guān)于如何使用qrcode生成指定內(nèi)容的二維碼并在GUI界面顯示的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 詳解Python Celery和RabbitMQ實戰(zhàn)教程

    詳解Python Celery和RabbitMQ實戰(zhàn)教程

    這篇文章主要介紹了詳解Python Celery和RabbitMQ實戰(zhàn)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python無損音樂搜索引擎實現(xiàn)代碼

    Python無損音樂搜索引擎實現(xiàn)代碼

    這篇文章主要介紹了Python無損音樂搜索引擎的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 新版Pycharm中Matplotlib不會彈出獨立的顯示窗口的問題

    新版Pycharm中Matplotlib不會彈出獨立的顯示窗口的問題

    這篇文章主要介紹了解決新版Pycharm中Matplotlib不會彈出獨立的顯示窗口的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Pycharm Available Package無法顯示/安裝包的問題Error Loading Package List解決

    Pycharm Available Package無法顯示/安裝包的問題Error Loading Package Li

    這篇文章主要介紹了Pycharm Available Package無法顯示/安裝包的問題Error Loading Package List解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python實現(xiàn)SVN的目錄周期性備份實例

    Python實現(xiàn)SVN的目錄周期性備份實例

    這篇文章主要介紹了Python實現(xiàn)SVN的目錄周期性備份,實例分析了Python實現(xiàn)SVN周期性備份的原理與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • python擴展庫numpy入門教程

    python擴展庫numpy入門教程

    這篇文章主要為大家介紹了python擴展庫numpy入門教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • python非遞歸全排列實現(xiàn)方法

    python非遞歸全排列實現(xiàn)方法

    下面小編就為大家?guī)硪黄猵ython非遞歸全排列實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04

最新評論