python讀取excel製作柱狀圖和詞雲圖片
阿新 • • 發佈:2020-11-16
問題描述
需要將excel中的一列內容轉換成柱狀圖和詞雲,所以用到了matplotlib/xlrd/wordcloud三個庫來解決問題
- xlrd:讀取excel檔案
- matplotlib:畫柱狀圖
- wordcloud:生成詞雲
具體步驟
- xlrd讀取檔案:
import xlrd def start_generate(): path = "test.xlsx" data = xlrd.open_workbook(path) sheet1 = data.sheet_by_name('Sheet1') # Sheet1 左下角的sheet list1 = sheet1.col_values(0) # 第一列的資料列表
- matplotlib:畫柱狀圖
import matplotlib.pyplot as plt def draw_from_dict(dicdata, RANGE): #dicdata:字典的資料。 #RANGE:擷取顯示的字典的長度。 by_value = sorted(dicdata.items(),key = lambda item:item[1],reverse=True) # 對字典進行排序 x = [] y = [] for d in by_value: x.append(d[0]) y.append(d[1]) plt.barh(x[0:RANGE], y[0:RANGE]) # 橫向柱狀圖 plt.tight_layout() # 左側顯示不全,使用該函式 plt.savefig('plt.png') # 儲存 plt.show()
- wordcloud:詞雲
from wordcloud import WordCloud def draw_from_list(lis): # 傳入的list text = ' '.join(lis) wordcloud = WordCloud(background_color='white', max_words=300, font_path="Kai.ttf", # 當前目錄下中文楷體 結尾有下載 width=1600, height=1000).generate(text) wordcloud.to_file("WordCloud.png")
- 完整程式碼(完成的是對第一列資料的操作,需要其他列資料自行修改)
import xlrd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
def draw_from_list(lis):
text = ' '.join(lis)
wordcloud = WordCloud(background_color='white',
max_words=300,
font_path="Kai.ttf",
width=1600,
height=1000).generate(text)
wordcloud.to_file("WordCloud.png")
def draw_from_dict(dicdata, RANGE):
#dicdata:字典的資料。
#RANGE:擷取顯示的字典的長度。
by_value = sorted(dicdata.items(),key = lambda item:item[1],reverse=True)
x = []
y = []
for d in by_value:
x.append(d[0])
y.append(d[1])
plt.barh(x[0:RANGE], y[0:RANGE])
plt.tight_layout()
plt.savefig('test.png')
plt.show()
def start_generate():
path = "test.xlsx"
data = xlrd.open_workbook(path)
sheet1 = data.sheet_by_name('Sheet1')
list1 = sheet1.col_values(0)
dic = dict()
for i in list1:
val = dic.get(i)
if val:
dic[i] = val+1
else:
dic[i] = 1
draw_from_list(list1)
draw_from_dict(dic, len(dic))
if __name__ == '__main__':
start_generate()
遇到的問題
開始生成柱狀圖的時候,ylable全是亂碼,通過這個連結解決了(注意去掉對應配置的'#',最後一步rebuild很重要!)
matplotlib圖例中文亂碼?(知乎回答)
下載連結
字型可以在這裡下載,可能比連結中的那個快:
連結: https://pan.baidu.com/s/1Nf8vWOxs5iG7k0EIQm-cew 提取碼: ypk3