Python對於Excel的一些基本繪製圖示操作,讓你日常工作更加輕鬆
前言
在Python中,我們可以利用第三方庫來方便地操作Excel檔案。這裡使用python-excel.org中提供的openpyxl庫,用於讀寫Excel 2007及以上版本的Excel檔案。可以讓我們日常工作中對於Excel方面的處理更加的方便
本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,才是掌握真正的價值所在。
安裝
使用pip安裝工具來安裝openpyxl,安裝需要開啟系統命令列(win +R)輸入CMD
pip install openpyxl
即可安裝。
初識操作程式碼
下面的程式碼用於建立Excel工作簿並在工作表中寫入資料:
執行程式碼實現效果:
垂直、水平和堆積條形圖
注意,下列設定影響不同的圖表型別:
- 通過設定type為col或bar在垂直和水平條形圖之間切換
- 當使用堆積圖時,overlap需要被設定成100
- 如果條形是水平的,那麼x和y軸相反
下面的程式碼用於建立不同型式的條形圖:
from openpyxl import Workbook from openpyxl.chart import BarChart, Series, Reference wb= Workbook(write_only=True) ws= wb.create_sheet() rows= [ ('Number','Batch 1', 'Batch2'), (2, 10, 30), (3, 40, 60), (4, 50, 70), (5, 20, 10), (6, 10, 40), (7, 50, 30), ] for row in rows: ws.append(row) chart1= BarChart() chart1.type= "col" chart1.style= 10 chart1.title= "Bar Chart" chart1.y_axis.title= 'Test number' chart1.x_axis.title= 'Sample length (mm)' data= Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3) cats= Reference(ws, min_col=1, min_row=2, max_row=7) chart1.add_data(data,titles_from_data=True) chart1.set_categories(cats) chart1.shape= 4 ws.add_chart(chart1,"A10") from copy import deepcopy chart2= deepcopy(chart1) chart2.style= 11 chart2.type= "bar" chart2.title= "Horizontal Bar Chart" ws.add_chart(chart2,"G10") chart3= deepcopy(chart1) chart3.type= "col" chart3.style= 12 chart3.grouping= "stacked" chart3.overlap= 100 chart3.title= 'Stacked Chart' ws.add_chart(chart3,"A27") chart4= deepcopy(chart1) chart4.type= "bar" chart4.style= 13 chart4.grouping= "percentStacked" chart4.overlap= 100 chart4.title= 'Percent Stacked Chart' ws.add_chart(chart4,"G27") wb.save("bar.xlsx")
執行效果:
三維條形圖
也可以建立三維條形圖,程式碼如下:
from openpyxl import Workbook from openpyxl.chart import ( Reference, Series, BarChart3D, ) wb= Workbook() ws= wb.active rows= [ (None, 2013, 2014), ("Apples",5, 4), ("Oranges",6, 2), ("Pears",8, 3) ] for row in rows: ws.append(row) data= Reference(ws, min_col=2, min_row=1, max_col=3, max_row=4) titles= Reference(ws, min_col=1, min_row=2, max_row=4) chart= BarChart3D() chart.title= "3D Bar Chart" chart.add_data(data=data,titles_from_data=True) chart.set_categories(titles) ws.add_chart(chart,"A6") wb.save("bard.xlsx")
效果圖:
股價圖
不同形式股價圖的特定格式選項:
- 高-低-收盤形式股價圖實際上是一個不帶線條的折線圖,其標記設定為XYZ,並將hiLoLines設定為True。
- 開盤-高-低-收盤形式股價圖就像一個帶有標記的高-低-收盤股價圖,每個資料點設定為XYZ和upDownLines。
可以通過組合股價圖和條形圖來新增表示成交量的條形。
基本的程式碼如下:
from datetime import date from openpyxl import Workbook from openpyxl.chart import ( BarChart, StockChart, Reference, Series, ) from openpyxl.chart.axis import DateAxis,ChartLines from openpyxl.chart.updown_bars import UpDownBars wb= Workbook() ws= wb.active rows= [ ['日期','成交量','開盤','高','低','收盤'], ['2018-11-10',20000,26.20,27.20,23.49,25.45,], ['2018-11-11',10000,25.45,25.03,19.55,23.05,], ['2018-11-12',15000,23.05,24.46,20.03,22.42,], ['2018-11-13',2000,22.42,23.97,20.07,21.90,], ['2018-11-14',12000,21.9,23.65,19.50,21.51,], ] for row in rows: ws.append(row) # 高-低-收盤 c1= StockChart() labels= Reference(ws, min_col=1, min_row=2, max_row=6) data= Reference(ws, min_col=4, max_col=6, min_row=1, max_row=6) c1.add_data(data,titles_from_data=True) c1.set_categories(labels) for s in c1.series: s.graphicalProperties.line.noFill= True # 標記收盤 s.marker.symbol= "dot" s.marker.size= 5 c1.title= "高-低-收盤" c1.hiLowLines= ChartLines() from openpyxl.chart.data_source import NumData, NumVal pts= [NumVal(idx=i) for i in range(len(data)- 1)] cache= NumData(pt=pts) c1.series[-1].val.numRef.numCache=cache ws.add_chart(c1, "A10") # 開盤-高-低-收盤 c2= StockChart() data= Reference(ws, min_col=3, max_col=6, min_row=1, max_row=6) c2.add_data(data,titles_from_data=True) c2.set_categories(labels) for s in c2.series: s.graphicalProperties.line.noFill= True c2.hiLowLines= ChartLines() c2.upDownBars= UpDownBars() c2.title= "開盤-高-低-收盤" c2.series[-1].val.numRef.numCache= cache ws.add_chart(c2,"G10") # 建立條形圖代表成交量 bar= BarChart() data= Reference(ws, min_col=2, min_row=1, max_row=6) bar.add_data(data,titles_from_data=True) bar.set_categories(labels) from copy import deepcopy # 成交量-高-低-收盤價 b1= deepcopy(bar) c3= deepcopy(c1) c3.y_axis.majorGridlines=None c3.y_axis.title= "價格" b1.y_axis.axId= 20 b1.z_axis= c3.y_axis b1.y_axis.crosses= "max" b1+= c3 c3.title= "高低收盤成交量" ws.add_chart(b1,"A27") # 成交量-開盤-高-低-收盤 b2= deepcopy(bar) c4= deepcopy(c2) c4.y_axis.majorGridlines= None c4.y_axis.title= "價格" b2.y_axis.axId= 20 b2.z_axis= c4.y_axis b2.y_axis.crosses= "max" b2+= c4 ws.add_chart(b2,"G27") wb.save("stock.xlsx")
實現效果圖:
氣泡圖
氣泡圖與散點圖相似,但使用第三維來決定氣泡的大小,可以包括多個系列。
下面的程式碼建立氣泡圖:
from openpyxl import Workbook from openpyxl.chart import Series, Reference, BubbleChart wb= Workbook() ws= wb.active rows= [ ("Numberof Products", "Sales in USD","Market share"), (14, 12200, 15), (20, 60000, 33), (18, 24400, 10), (22, 32000, 42), (), (12, 8200, 18), (15, 50000, 30), (19, 22400, 15), (25, 25000, 50), ] for row in rows: ws.append(row) chart= BubbleChart() chart.style= 18 #使用預設的樣式 # 新增第一個資料系列 xvalues= Reference(ws, min_col=1, min_row=2, max_row=5) yvalues= Reference(ws, min_col=2, min_row=2, max_row=5) size= Reference(ws, min_col=3, min_row=2, max_row=5) series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2013") chart.series.append(series) # 新增第二個資料系列 xvalues= Reference(ws, min_col=1, min_row=7, max_row=10) yvalues= Reference(ws, min_col=2, min_row=7, max_row=10) size= Reference(ws, min_col=3, min_row=7, max_row=10) series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2014") chart.series.append(series) # 在以單元格A12開始的單元格中放置圖表 ws.add_chart(chart,"A12") wb.save("bubble.xlsx")
效果圖:
以上就是Python關於Excel的一些基本操作,當然了,Python對於Excel方面的操作肯定不止於此。未完待續.................
相關文章
- Python對excel的基本操作PythonExcel
- 怎麼簡單的繪製拓撲圖,用這個工具能讓你輕鬆實現
- Word流程圖怎麼畫?如何輕鬆繪製流程圖流程圖
- 如何用語雀畫板,輕鬆繪製架構圖?架構
- Microsoft Excel 2019 - 讓你更輕鬆地管理和分析資料!ROSExcel
- Python 用 OpenCV 繪製基本圖形系列(總)PythonOpenCV
- .net core下對於Excel的一些操作及使用Excel
- 專案管理基本流程介紹,讓你輕鬆管理專案專案管理
- Python基本圖形繪製--模組1:turtle庫的使用Python
- BI與SaaS碰撞,讓資料處理更加輕鬆(下)
- CSS 變數讓你輕鬆製作響應式網頁CSS變數網頁
- Excel 2019表格操作技巧彙總 一秒鐘輕鬆製作各種表格Excel
- 面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”
- 60萬行的Excel資料,Python輕鬆處理ExcelPython
- 一文讓你輕鬆掌握 HTTPSHTTP
- Affinity Designer繪製圖示的技巧分享
- [python] 基於PyWaffle庫繪製華夫餅圖Python
- [翻譯]CSS變數讓你輕鬆製作響應式網頁CSS變數網頁
- Python pyecharts繪製餅圖PythonEcharts
- 等值線圖的Python繪製方法Python
- 如何輕鬆記載家族資訊?MacFamilyTree百年家族譜,輕鬆繪製!Mac
- python爬取股票最新資料並用excel繪製樹狀圖PythonExcel
- 分享好用的小紅書圖片製作軟體,輕鬆製圖
- MySQL對錶和庫的一些基本操作MySql
- Python例項:僅繪製圖例而不繪製實際的圖形Python
- 十個vim快捷鍵,讓你的使用更輕鬆
- python爬取基金股票最新資料,並用excel繪製樹狀圖PythonExcel
- Python 繪製全球疫情地圖Python地圖
- Python matplotlib繪製散點圖Python
- Python繪製南北極地圖Python地圖
- Python pyecharts繪製詞雲圖PythonEcharts
- 加註釋不丟資訊,Excel讓協作更輕鬆Excel
- Arduino :入門教學讓你輕鬆玩轉UI
- 讓你輕鬆實現Mac與相機的連線Mac
- 純CSS漸變繪製 Chrome 圖示CSSChrome
- 前端的圖表繪製框架Konva-基本介紹前端框架
- python可以對excel進行那些操作PythonExcel
- 輕鬆讓圖片變得清晰Topaz Sharpen AIAI