Python實(shí)現(xiàn)在Excel中繪制可視化大屏的方法詳解
大家新年好哇,今天小編來(lái)給大家分享如何在Excel文檔當(dāng)中來(lái)繪制可視化圖表,并且制作一個(gè)可視化大屏,非常的容易,這里我們會(huì)用到openpyxl模塊,那么首先第一步便是調(diào)用該模塊來(lái)讀取Excel文件,代碼如下
# 讀取Excel文檔并且指定工作表的名稱 file_name = 'Bike_Sales_Playground.xlsx' df = pd.read_excel(file_name,sheet_name='bike_buyers')
當(dāng)然為了保險(xiǎn)起見(jiàn),我們這里還是拷貝一份源數(shù)據(jù),并且新建一個(gè)新的工作表,代碼如下
# 新建一張工作表
with pd.ExcelWriter(file_name,#文檔的名稱
engine='openpyxl',#調(diào)用模塊的名稱
mode='a',#添加的模式
if_sheet_exists="replace" #如果已經(jīng)存在,就替換掉
) as writer:
df.to_excel(writer, sheet_name='Working_Sheet',index = False)# 設(shè)置Index為False
# 從新的工作表當(dāng)中來(lái)讀取數(shù)據(jù)
df = pd.read_excel(file_name,sheet_name='Working_Sheet')數(shù)據(jù)清洗
下一步我們進(jìn)行數(shù)據(jù)的清洗,例如去掉重復(fù)值、針對(duì)一些數(shù)值做一些替換,代碼如下
# 去掉重復(fù)值
df.drop_duplicates(keep='first', inplace=True, ignore_index=False)
# 針對(duì)婚姻狀況這一列,“已婚”替換成“M”,“單身”替換成“S”
df['Marital Status'] = df['Marital Status'].replace('M','Married').replace('S','Single')
# 針對(duì)性別這一列,“男性”替換成“F”,而“女性”替換成“M”
df['Gender'] = df['Gender'].replace('F','Female').replace('M','Male')
# 查看表格的前5行
df.head()
# 年齡數(shù)值的處理
df['Age brackets'] = df['Age'].apply(lambda x: 'Less than 30' if x<=30 else('Greater than 55' if x>55 else '31 to 55'))
# 通勤距離的數(shù)值的替換
df['Commute Distance'] = df['Commute Distance'].replace('10+ Miles','More than 10 Miles')output
ID Marital Status Gender ... Age Purchased Bike Age brackets
0 12496 Married Female ... 42 No 31 to 55
1 24107 Married Male ... 43 No 31 to 55
2 14177 Married Male ... 60 No Greater than 55
3 24381 Single Male ... 41 Yes 31 to 55
4 25597 Single Male ... 36 Yes 31 to 55
繪制圖表
接下來(lái)我們嘗試來(lái)繪制幾張可視化圖表,下面所示的代碼繪制的是柱狀圖,而繪制其余兩張折線圖的代碼與下面是雷同的
# 透視表1
# 制作數(shù)據(jù)透視表
avg_gender_income_df = np.round(pd.pivot_table(bike_df,
values = 'Income',
index = ['Gender'],
columns = ['Purchased Bike'],
aggfunc = np.mean
),2)
# 將數(shù)據(jù)透視表放入Excel表格中,并且指定工作表
with pd.ExcelWriter(file_name,#工作表的名稱
engine='openpyxl',#引擎的名稱
mode='a',#Append模式
if_sheet_exists="replace" #如果已經(jīng)存在,就替換掉
) as writer:
avg_gender_income_df.to_excel(writer, sheet_name='Average_Gender_Income')
# 加載文檔,并且指定工作表
wb = load_workbook(file_name)
sheet = wb['Average_Gender_Income']
# 創(chuàng)建柱狀圖
chart1 = BarChart()
chart1.type = "col"
chart1.style = 10
chart1.title = "基于性別與消費(fèi)數(shù)據(jù)之下的平均收入"
chart1.y_axis.title = '性別'
chart1.x_axis.title = '收入'
# 將繪制出來(lái)的柱狀圖放在單元格中去
data1 = Reference(sheet, min_col=2, min_row=1, max_row=3, max_col=3)#Including Headers
cats1 = Reference(sheet, min_col=1, min_row=2, max_row=3)#Not including headers
chart1.add_data(data1, titles_from_data=True)
chart1.dataLabels = DataLabelList()
chart1.dataLabels.showVal = True
chart1.set_categories(cats1)
chart1.shape = 4
sheet.add_chart(chart1, "A10")
wb.save(file_name)output

生成可視化大屏
我們嘗試將繪制完成的圖表生成可視化大屏,代碼如下
# 創(chuàng)建一個(gè)空的DataFrame表格
title_df = pd.DataFrame()
# 將結(jié)果放入至Excel文件當(dāng)中去
with pd.ExcelWriter(file_name,#工作表的名稱
engine='openpyxl',#引擎的名稱
mode='a',#Append模式
if_sheet_exists="replace" #如果已經(jīng)存在,就替換掉
) as writer:
title_df.to_excel(writer, sheet_name='Dashboard')
# 加載文檔,指定工作表是哪個(gè)
wb = load_workbook(file_name)
sheet = wb['Dashboard']
for x in range(1,22):
sheet.merge_cells('A1:R4')
cell = sheet.cell(row=1, column=1)
cell.value = 'Bike Sales Dashboard'
cell.alignment = Alignment(horizontal='center', vertical='center')
cell.font = Font(b=True, color="F8F8F8",size = 46)
cell.fill = PatternFill("solid", fgColor="2591DB")
# 將繪制出來(lái)的圖表放置到Excel文檔中
sheet.add_chart(chart1,'A5')
sheet.add_chart(chart2,'J5')
chart3.width = 31
sheet.add_chart(chart3,'A20')
wb.save(file_name)最后我們來(lái)看一下繪制出來(lái)的結(jié)果,如下所示

最后的最后,我們將上面所有的代碼封裝成一個(gè)函數(shù),方便我們來(lái)調(diào)用,代碼如下
import Bikes_Sales_Report_Automation as auto
# 填入文件的名稱
auto.automate_excel_dashboard('Bike_Sales_Playground.xlsx')到此這篇關(guān)于Python實(shí)現(xiàn)在Excel中繪制可視化大屏的方法詳解的文章就介紹到這了,更多相關(guān)Python Excel繪制可視化大屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python sqlparse 解析庫(kù)的基礎(chǔ)使用過(guò)程解析
sqlparse 是一個(gè) Python 庫(kù),是一個(gè)用于 Python 的非驗(yàn)證 SQL 解析器, 用于解析 SQL 語(yǔ)句并提供一個(gè)簡(jiǎn)單的 API 來(lái)訪問(wèn)解析后的 SQL 結(jié)構(gòu),這篇文章主要介紹了Python sqlparse 解析庫(kù)的基礎(chǔ)使用,需要的朋友可以參考下2024-08-08
Python pypinyin注音庫(kù)輕松絲滑實(shí)現(xiàn)漢字轉(zhuǎn)換成拼音
pypinyin 庫(kù),能像功夫熊貓那樣,輕松、快捷地幫你把漢字轉(zhuǎn)換成拼音,有了 pypinyin,不僅可以節(jié)省寶貴的時(shí)間,還可以更準(zhǔn)確地展示中文字符的讀音,使文化交流更為順暢,本文帶大家一起探索 pypinyin 庫(kù)的魅力2024-01-01
在python中利用numpy求解多項(xiàng)式以及多項(xiàng)式擬合的方法
今天小編就為大家分享一篇在python中利用numpy求解多項(xiàng)式以及多項(xiàng)式擬合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Scrapy基于Python構(gòu)建強(qiáng)大網(wǎng)絡(luò)爬蟲(chóng)框架實(shí)例探究
這篇文章主要為大家介紹了Scrapy基于Python構(gòu)建強(qiáng)大網(wǎng)絡(luò)爬蟲(chóng)框架實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python?數(shù)據(jù)挖掘算法的過(guò)程詳解
這篇文章主要介紹了python?數(shù)據(jù)挖掘算法,首先給大家介紹了數(shù)據(jù)挖掘的過(guò)程,基于sklearn主要的算法模型講解,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
Python中使用PyHook監(jiān)聽(tīng)鼠標(biāo)和鍵盤(pán)事件實(shí)例
這篇文章主要介紹了Python中使用PyHook監(jiān)聽(tīng)鼠標(biāo)和鍵盤(pán)事件實(shí)例,這個(gè)庫(kù)依賴于另一個(gè)Python庫(kù)PyWin32,并且只能運(yùn)行在Windows平臺(tái),需要的朋友可以參考下2014-07-07
使用python模塊plotdigitizer摳取論文圖片中的數(shù)據(jù)實(shí)例詳解
這篇文章主要介紹了使用python模塊plotdigitizer摳取論文圖片中的數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
關(guān)于Python如何避免循環(huán)導(dǎo)入問(wèn)題詳解
在大型的Python工程中,由于架構(gòu)設(shè)計(jì)不當(dāng),可能會(huì)出現(xiàn)模塊間相互引用的情況。下面這篇文章主要給大家介紹了關(guān)于如何避免Python的循環(huán)導(dǎo)入問(wèn)題的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09

