網(wǎng)站首頁 編程語言 正文
大家新年好哇,今天小編來給大家分享如何在Excel
文檔當(dāng)中來繪制可視化圖表,并且制作一個(gè)可視化大屏,非常的容易,這里我們會(huì)用到openpyxl
模塊,那么首先第一步便是調(diào)用該模塊來讀取Excel
文件,代碼如下
# 讀取Excel文檔并且指定工作表的名稱 file_name = 'Bike_Sales_Playground.xlsx' df = pd.read_excel(file_name,sheet_name='bike_buyers')
當(dāng)然為了保險(xiǎ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)中來讀取數(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
繪制圖表
接下來我們嘗試來繪制幾張可視化圖表,下面所示的代碼繪制的是柱狀圖,而繪制其余兩張折線圖的代碼與下面是雷同的
# 透視表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 = '收入' # 將繪制出來的柱狀圖放在單元格中去 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") # 將繪制出來的圖表放置到Excel文檔中 sheet.add_chart(chart1,'A5') sheet.add_chart(chart2,'J5') chart3.width = 31 sheet.add_chart(chart3,'A20') wb.save(file_name)
最后我們來看一下繪制出來的結(jié)果,如下所示
最后的最后,我們將上面所有的代碼封裝成一個(gè)函數(shù),方便我們來調(diào)用,代碼如下
import Bikes_Sales_Report_Automation as auto # 填入文件的名稱 auto.automate_excel_dashboard('Bike_Sales_Playground.xlsx')
原文鏈接:https://mp.weixin.qq.com/s/vOivJskSlv72LodauZt1bA
相關(guān)推薦
- 2022-05-06 mac goland 常用快捷鍵
- 2023-01-28 Android?之Preference控件基本使用示例詳解_Android
- 2022-10-30 Django視圖層與模板層實(shí)例詳解_python
- 2022-04-15 ASP.NET?Core基礎(chǔ)之Startup類_基礎(chǔ)應(yīng)用
- 2022-04-12 詳解pyqt中解決國際化tr()函數(shù)不起作用的問題_python
- 2023-05-30 Python嵌套循環(huán)的使用_python
- 2022-06-29 C語言實(shí)例講解四大循環(huán)語句的使用_C 語言
- 2022-02-21 windows11安裝docker desktop
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支