最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python根據(jù)詞頻信息(xlsx、csv文件)繪制詞云圖全過程(wordcloud)

 更新時間:2024年06月25日 10:36:22   作者:十八只兔  
這篇文章主要給大家介紹了關于Python根據(jù)詞頻信息(xlsx、csv文件)繪制詞云圖的相關資料,wordcloud是基于Python開發(fā)的詞云生成庫,功能強大使用簡單,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、前言

本文將介紹如何用python根據(jù)詞頻信息(xlsx、csv文件)繪制詞云圖,除了繪制常規(guī)形狀的詞云圖(比如長方形),還可以指定詞云圖的形狀。

二、安裝并引入相關的庫

1、安裝相關的庫

pip install jieba
pip install matplotlib
pip install wordcloud
pip install numpy
pip install Image 
pip install pandas

2、導入相關的庫

import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np
from PIL import Image # 圖像處理
import pandas as pd

三、數(shù)據(jù)處理

1、文件讀取

  • 本文使用的數(shù)據(jù)集是excel文件(后綴名是.xlsx),該文件包含2個字段:關鍵詞以及對應的頻數(shù)

  • 以下是對excel文件的相關操作:

import pandas as pd
df=pd.read_excel("data-test.xlsx")# 讀取excel數(shù)據(jù)信息
print(df)
  • 數(shù)據(jù)讀取結果如下:

  • 只讀取文件的前N條數(shù)據(jù)
# 只獲取前5條數(shù)據(jù)
df_new=df.head(5)
print(df_new)
  • 結果如下:

2、數(shù)據(jù)格式轉換

讀取到excel文件后,需要把數(shù)據(jù)轉換成字典的格式:

# 生成一個DataFrame文件,index為df數(shù)據(jù)的index
data = pd.DataFrame(index=df['關鍵詞'])
# 先將詞頻這一列賦值為0 ,即定義這一列為int格式,后面再賦值
data['詞頻']=0
# 將excel的數(shù)據(jù)寫入data中
for i in range(0,len(df)):
    data.iloc[i,0]=df.iloc[i,1]
# 將詞頻按照從大到小排序
data = data['詞頻'].sort_values(ascending = False)
# 生成dict格式數(shù)據(jù)
data = dict(data)
print(data)
  • 結果如下:

四、繪制詞云圖

由于excel文件本身已經(jīng)提供了關鍵詞以及對應的詞頻,因此這里繪制詞云圖的時候不用對文本進行結巴分詞。

1、繪制基本的詞云圖

  • 詞云圖的相關代碼:
import matplotlib.pyplot as plt
from wordcloud import WordCloud

#關鍵詞有中文,因此需要設置顯示字體,否則會亂碼
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
# 設置詞云圖相關參數(shù)
wc=WordCloud(
             font_path=font_path,
             width=400,height=400,
             scale=2,mode="RGBA",
             background_color='white')
# 根據(jù)dict制作詞云圖
wc=wc.generate_from_frequencies(data)
#存儲詞云圖結果
wc.to_file('詞云圖1.png')
  • 圖片展示的相關代碼
#顯示圖片
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")# 不顯示圖像坐標系
# 顯示圖像
plt.show()
plt.savefig("詞云圖2.png")
  • 結果如下:

  • 完整代碼

import pandas as pd
df=pd.read_excel("data-test.xlsx")# 讀取excel數(shù)據(jù)信息
print(df)

# 只獲取前5條數(shù)據(jù)
df_new=df.head(5)
print(df_new)

# 生成一個DataFrame文件,index為df數(shù)據(jù)的index
data = pd.DataFrame(index=df['關鍵詞'])
# 先將詞頻這一列賦值為0 ,即定義這一列為int格式,后面再賦值
data['詞頻']=0
# 將excel的數(shù)據(jù)寫入data中
for i in range(0,len(df)):
    data.iloc[i,0]=df.iloc[i,1]
# 將詞頻按照從大到小排序
data = data['詞頻'].sort_values(ascending = False)
# 生成dict格式數(shù)據(jù)
data = dict(data)
print(data)

# 生成詞云圖
import matplotlib.pyplot as plt
from wordcloud import WordCloud
#關鍵詞有中文,因此需要設置顯示字體,否則會亂碼
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
# 設置詞云圖的相關參數(shù)
wc=WordCloud(
             font_path=font_path,
             width=500,
             height=500,
             scale=2,
             mode="RGBA",
             background_color='white')

# 根據(jù)dict制作詞云圖
wc=wc.generate_from_frequencies(data)
#存儲詞云圖結果
#存儲圖像
wc.to_file('詞云圖1.png')
#顯示圖片
plt.imshow(wc,interpolation="bilinear")
# 不顯示坐標系
plt.axis("off")
# 顯示圖像
plt.show()
# 保存結果
plt.savefig("詞云圖2.png")

2、繪制指定形狀的詞云圖

(1)準備背景圖片

  • 以下面的背景圖片為例:
    (注:圖片的背景顏色要是白色的;而且不要有水印否則也會被當做背景圖片的一部分?。。。?p style="text-align:center">

(2)處理背景圖片

  • 需要將圖片轉化為數(shù)組,便于用作詞云圖形狀
# 生成詞云圖
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np # numpy數(shù)據(jù)處理庫
from PIL import Image # 圖像處理庫,用于讀取背景圖片
img = Image.open('圖片地址') # 加載背景圖片
img_array = np.array(img)    # 將圖片變?yōu)閿?shù)組,便于用作詞云圖形狀
  • 將圖片數(shù)組化之后,結果如下:

(3)生成指定形狀的詞云圖

wc=WordCloud(mask=img_array,
             font_path=font_path,
             width=500,
             height=500,
             scale=2,
             contour_color='purple',contour_width=3,
             max_font_size=80,max_words=100,
             background_color='white')
  • 結果如下:

  • 完整代碼

import pandas as pd
df=pd.read_excel("data-test.xlsx")# 讀取excel數(shù)據(jù)信息
print(df)
print("====================================================")

# 只獲取前5條數(shù)據(jù)
# df_new=df.head(5)
# print(df_new)
print("====================================================")

# 生成一個DataFrame文件,index為df數(shù)據(jù)的index
data = pd.DataFrame(index=df['關鍵詞'])
# 先將詞頻這一列賦值為0 ,即定義這一列為int格式,后面再賦值
data['詞頻']=0
# 將excel的數(shù)據(jù)寫入data中
for i in range(0,len(df)):
    data.iloc[i,0]=df.iloc[i,1]
# 將詞頻按照從大到小排序
data = data['詞頻'].sort_values(ascending = False)
# 生成dict格式數(shù)據(jù)
# data = dict(data)
data = str(data)
print(data)
# print(type(data))

print("====================================================")

# 生成詞云圖
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np # numpy數(shù)據(jù)處理庫
from PIL import Image # 圖像處理庫,用于讀取背景圖片


img = Image.open('grape.jpg') # 加載背景圖片
img_array = np.array(img)    # 將圖片變?yōu)閿?shù)組,便于用作詞云圖形狀


#關鍵詞有中文,因此需要設置顯示字體,否則會亂碼
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
# 設置詞云圖的相關參數(shù)
# 設置詞云圖的相關參數(shù)
wc=WordCloud(mask=img_array,
             font_path=font_path,
             width=500,
             height=500,
             scale=2,
             contour_color='purple',contour_width=3,
             max_font_size=80,max_words=100,
             background_color='white')

# 根據(jù)dict制作詞云圖
wc=wc.generate(data)
# wc=wc.generate_from_frequencies(data)
#存儲詞云圖結果
#存儲圖像
wc.to_file('詞云圖1.png')
#顯示圖片
plt.imshow(wc,interpolation="bilinear")
# 不顯示坐標系
plt.axis("off")
# 顯示圖像
plt.show()
# 保存結果
plt.savefig("詞云圖2.png")

五、待優(yōu)化

1、指定詞云圖形狀時,出現(xiàn)數(shù)據(jù)類型錯誤的報錯

  • 一開始生成詞云圖的數(shù)據(jù)格式是字典格式,但是后面在指定形狀的時候,因為報錯就把數(shù)據(jù)格式轉換成字符串了,然后就能正常顯示:
# 生成dict格式數(shù)據(jù)
# data = dict(data)
data = str(data)

2、圖片輪廓的提取待改進

  • 在指定形狀的時候,對背景圖片的要求比較高,比如圖片的背景是白色的,圖片的輪換不光滑的話提取效果不好,因此在提取背景圖片的輪廓方面待改進。
img = Image.open('grape.jpg') # 加載背景圖片
img_array = np.array(img)    # 將圖片變?yōu)閿?shù)組,便于用作詞云圖形狀

總結 

到此這篇關于Python根據(jù)詞頻信息(xlsx、csv文件)繪制詞云圖(wordcloud)的文章就介紹到這了,更多相關Python根據(jù)詞頻繪制詞云圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python基本語法練習實例

    python基本語法練習實例

    下面小編就為大家?guī)硪黄猵ython基本語法練習實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 深入解析Python中delattr函數(shù)的使用方法和應用場景

    深入解析Python中delattr函數(shù)的使用方法和應用場景

    這篇文章主要為大家詳細介紹了Python中delattr()函數(shù)的使用方法和應用場景,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2026-02-02
  • Django項目如何配置Memcached和Redis緩存?選擇哪個更有優(yōu)勢?

    Django項目如何配置Memcached和Redis緩存?選擇哪個更有優(yōu)勢?

    這篇文章主要介紹了Django項目如何配置Memcached和Redis緩存,幫助大家更好的理解和學習使用django框架,感興趣的朋友可以了解下
    2021-04-04
  • 理解Python中函數(shù)的參數(shù)

    理解Python中函數(shù)的參數(shù)

    這篇文章主要介紹了Python中函數(shù)的參數(shù),掌握函數(shù)中的參數(shù)傳遞在任何一門語言的學習過程當中都是基本功,需要的朋友可以參考下
    2015-04-04
  • pygame學習筆記(5):游戲精靈

    pygame學習筆記(5):游戲精靈

    這篇文章主要介紹了pygame學習筆記(5):游戲精靈,本文講解了什么是精靈、sprite中主要且常用的變量、建立一個簡單的精靈、學習精靈組、動畫等內容,需要的朋友可以參考下
    2015-04-04
  • python輸出后面多一個None問題

    python輸出后面多一個None問題

    在Python中,函數(shù)如果沒有顯式指定返回值,會默認返回`None`,例如,計算一個數(shù)的平方根并輸出,如果沒有處理`None`,會輸出結果后跟`None`
    2024-11-11
  • numpy中三維數(shù)組中加入元素后的位置詳解

    numpy中三維數(shù)組中加入元素后的位置詳解

    今天小編就為大家分享一篇numpy中三維數(shù)組中加入元素后的位置詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 淺談如何使用Python控制手機(二)

    淺談如何使用Python控制手機(二)

    這篇文章主要為大家介紹了如何使用Python控制手機,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python深度學習實戰(zhàn)PyQt5基本控件使用解析

    Python深度學習實戰(zhàn)PyQt5基本控件使用解析

    PyQt5 提供了豐富的輸入輸出控件。本文介紹通過 QtDesigner 工具欄創(chuàng)建常用的基本控件,包括各種按鈕控件、文本輸入控件和調節(jié)輸入控件
    2021-10-10
  • 利用Python的PyPDF2庫提取pdf中的文字

    利用Python的PyPDF2庫提取pdf中的文字

    PyPDF2是一個用于處理PDF文件的Python庫,它提供了許多用于讀取和操作PDF文件的功能,對于需要處理PDF文件的Python應用程序,PyPDF2是一個非常實用的工具庫,本文將給大家詳細介紹一下如何通過Python的PyPDF2庫提取pdf中的文字,需要的朋友可以參考下
    2023-05-05

最新評論

长汀县| 海晏县| 台前县| 平凉市| 张家川| 罗城| 泽州县| 班玛县| 大竹县| 衡山县| 浦江县| 阳东县| 祁门县| 新晃| 黔江区| 江源县| 建瓯市| 离岛区| 东阳市| 古浪县| 阜阳市| 云阳县| 山阴县| 共和县| 民乐县| 萨迦县| 安平县| 定南县| 毕节市| 八宿县| 离岛区| 岳池县| 商河县| 广宁县| 威信县| 弥勒县| 天水市| 镇江市| 察隅县| 长乐市| 克山县|