如何用Python繪製圓餅圖

閱讀時間約 5 分鐘

首先這是我們的資料:

import pandas as pd

data =  pd.read_csv("新北市1999市政服務專線便民服務工作成果表(每月).csv")
raw-image

資料內皆為年月資料,但我們想分析年度資料,所以先做groupby處理:

#建立年度欄位​
data["民國年"] = list(map(lambda x: str(x)[0:3] + "年",data["民國年月"]))

#groupby​
data = data.drop(columns=["民國年月","項目"]).groupby("民國年").agg("mean").reset_index().round()
raw-image

為了方便繪製圓餅圖,我們先將資料轉置一下:

#資料轉置,並重設索引
data = data.T.reset_index()

#轉置未能自動補上欄位,所以手動讓第一行的資料作為欄位名稱
data.columns = data.iloc[0]

#然後調整正確的欄位名稱,並刪除不需要的第一行
data.rename(columns={"民國年":"變項"},inplace=True)
data.drop([0],inplace=True)

最後得到我們繪圖所需的資料:

raw-image

開始繪製圓餅圖:

import matplotlib

#選擇字體為:Microsoft YaHei
matplotlib.rc("font",family="Microsoft YaHei")

from matplotlib import pyplot as plt

#---------------------------------

#建立圖的大小
plt.figure(figsize=(16,4))

#---------------------------------

#建立第一個子圖
ax0 = plt.subplot2grid((2,8),(0,0),colspan=8,rowspan=1)

#建立x軸(年度)與y軸(總計)的資料
ax0_x = data.columns.tolist() #取所有欄位名稱
del(ax0_x[0]) #刪除第一個元素:"變項"
ax0_y = data.iloc[3].drop("變項") #取第4行的資料,並刪除元素:"變項",只留數字資料

#繪制直條圖
ax0.bar(ax0_x,height=ax0_y,color="darkslategray")

#加上圖表文字
for x,y in zip(ax0_x,ax0_y):
    ax0.text(x,
             y+10000,
             str(round(y/10000))+"萬",
             horizontalalignment="center",
             color="black")

#設定y軸相關資訊
ax0.set_ylim(0,150000)
ax0.set_yticks([])
ax0.set_yticklabels([])

#刪除上、左、右邊的圖框
ax0.spines[["top","left","right"]].set_visible(False)

#--------------------------

#刪除索引4的資料(總計),保留剩餘的資料,來繪製圓餅圖
data_pie = data.drop([4])

#繪製圓餅圖
for i,x in zip(range(0,8),ax0_x):

    globals()[f"ax{i}"] = plt.subplot2grid((2,8),(1,i),colspan=1,rowspan=1) #安排每個圓餅圖的子圖位置

    e = [0.1,0,0] #圓餅圖的突出係數

    #繪製圓餅圖
    globals()[f"ax{i}"].pie(data_pie[x], #圓餅圖的資料
                            colors=["darkcyan","c","cyan"], #顏色
                            explode=e, #突出係數
                            textprops={"size":10}, #圓餅圖內文字大小
                            autopct="%.1f%%", #加上各部分的比例數字
                            shadow=True) #加上陰影

#繪製圖例
plt.legend(labels=["諮詢服務","轉接電話","陳情案件"],bbox_to_anchor=(-2.4,0),ncols=3)

#補上整張圖的標題
plt.suptitle("新北市1999市政服務專線\n歷年進線總量直條圖及案件類別圓餅圖")
raw-image


4會員
37Content count
我是果農,這裡有我的人資職涯經驗分享,與我菜鳥般的Python資料分析筆記,還有一些讀書心得,希望對大家有幫助。
留言0
查看全部
發表第一個留言支持創作者!
果農的沙龍 的其他內容
本文介紹如何用Python繪製散布圖與迴歸線
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
本文介紹如何用Python繪製散布圖與迴歸線
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
根據RFM的資料來分成8種類型的客戶,1.重要價值客戶2.重要保持客戶3.重要發展客戶4.一般發展客戶5.重要挽留客戶6.一般價值客戶7.一般保持客戶8.一般挽留客戶
Thumbnail
RFM模型是最基本的分析,可以讓你知道哪些是常客、哪些人是偶爾來一次,或是根本不常來,藉此針對不同的客群去做不同的策略,達到提升業績的方法。接下來就讓我教你如何運用PYTHON快速做出RFM分析
Thumbnail
修圖的時候,有沒有遇過「如果當初再左邊一點就好了!」「如果當初廣角一點就好了!」以前只能想辦法手工 P 出來,但靠 Stable Diffusion + ControlNet 新推出的 Inpaint 模型,除了可以做圖片內修補外,也能往外擴展補完圖片 (outpaintng)!實在太強了!趕快來看
Thumbnail
製作個人作品集有很多方法,Figma是一個免費又支援很多其他套件的工具,你可以用它來製作許多用途,本篇文章和視頻教學教你如何初步認識Figma
Thumbnail
好久不見的「給文組人的 Formula 用法」系列。 今天的重點是 round, floor, round 的使用方法! ❶ 將數值取整的指令以及用法? ❷ 如何將數值以小數點後兩位取整? ❸ 怎麼用 Notion 分餅乾給小孩?(誤)
Thumbnail
資訊設計百百種,光是「捷運各站進出量」的主題就可以列舉許多案例。PTT 的文字整理可以總覽各站的排名和數據,還能比較漲跌趨勢。泡泡地圖則能夠把數據圖形化和空間化,讓讀者更直觀理解各站之間的差異和相對位置。要設計出好看、好懂、看了會喜歡的圖表,隱含許多設計的學問,需要具被資料處理和美術設計的能力。
Thumbnail
幾年前,偶然的在某社群聽見 Robot Framework 這套開源框架,起初抱持著好奇的心情簡單的玩了一下,不過當時完全不理解,用這種 Keyword 方式去撰寫自動化測試的好處在哪? ( 不過就是…我知識不足罷了XD ) 。 接下來,我就可以跑測試拉~! 接著看 log.html:
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
根據RFM的資料來分成8種類型的客戶,1.重要價值客戶2.重要保持客戶3.重要發展客戶4.一般發展客戶5.重要挽留客戶6.一般價值客戶7.一般保持客戶8.一般挽留客戶
Thumbnail
RFM模型是最基本的分析,可以讓你知道哪些是常客、哪些人是偶爾來一次,或是根本不常來,藉此針對不同的客群去做不同的策略,達到提升業績的方法。接下來就讓我教你如何運用PYTHON快速做出RFM分析
Thumbnail
修圖的時候,有沒有遇過「如果當初再左邊一點就好了!」「如果當初廣角一點就好了!」以前只能想辦法手工 P 出來,但靠 Stable Diffusion + ControlNet 新推出的 Inpaint 模型,除了可以做圖片內修補外,也能往外擴展補完圖片 (outpaintng)!實在太強了!趕快來看
Thumbnail
製作個人作品集有很多方法,Figma是一個免費又支援很多其他套件的工具,你可以用它來製作許多用途,本篇文章和視頻教學教你如何初步認識Figma
Thumbnail
好久不見的「給文組人的 Formula 用法」系列。 今天的重點是 round, floor, round 的使用方法! ❶ 將數值取整的指令以及用法? ❷ 如何將數值以小數點後兩位取整? ❸ 怎麼用 Notion 分餅乾給小孩?(誤)
Thumbnail
資訊設計百百種,光是「捷運各站進出量」的主題就可以列舉許多案例。PTT 的文字整理可以總覽各站的排名和數據,還能比較漲跌趨勢。泡泡地圖則能夠把數據圖形化和空間化,讓讀者更直觀理解各站之間的差異和相對位置。要設計出好看、好懂、看了會喜歡的圖表,隱含許多設計的學問,需要具被資料處理和美術設計的能力。
Thumbnail
幾年前,偶然的在某社群聽見 Robot Framework 這套開源框架,起初抱持著好奇的心情簡單的玩了一下,不過當時完全不理解,用這種 Keyword 方式去撰寫自動化測試的好處在哪? ( 不過就是…我知識不足罷了XD ) 。 接下來,我就可以跑測試拉~! 接著看 log.html: