Python利用pandas和matplotlib實(shí)現(xiàn)繪制圓環(huán)圖
制作店鋪銷(xiāo)量占比圓環(huán)圖
在數(shù)據(jù)分析中,數(shù)據(jù)可視化是非常重要的一環(huán)。在可視化的過(guò)程中,圓環(huán)圖是一種常用的方式,特別適合于展示各類(lèi)別占比情況。本文將介紹如何使用 Python 中的 pandas 和 matplotlib 庫(kù),來(lái)制作一個(gè)店鋪銷(xiāo)量占比的圓環(huán)圖。
數(shù)據(jù)準(zhǔn)備
我們假設(shè)現(xiàn)在有一份銷(xiāo)售數(shù)據(jù)的 Excel 文件,其中包含了不同店鋪的銷(xiāo)售數(shù)量數(shù)據(jù)。我們將使用 pandas 庫(kù)來(lái)讀取和處理這份數(shù)據(jù)。下面是讀取數(shù)據(jù)的代碼:
import pandas as pd # 從Excel文件中讀取數(shù)據(jù) data = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建文件夾\新建 XLSX 工作表.xlsx')
數(shù)據(jù)預(yù)處理
我們需要按照店鋪名稱(chēng)來(lái)聚合銷(xiāo)售數(shù)量數(shù)據(jù),以便于后續(xù)的可視化。我們可以使用 pandas 庫(kù)的 groupby
函數(shù)來(lái)實(shí)現(xiàn)這一步驟。下面是代碼:
# 按店鋪名稱(chēng)聚合銷(xiāo)售數(shù)量 sales_by_shop = data.groupby('店鋪名稱(chēng)')['銷(xiāo)售數(shù)量'].sum()
可視化
現(xiàn)在我們已經(jīng)得到了按店鋪名稱(chēng)聚合后的銷(xiāo)售數(shù)量數(shù)據(jù),接下來(lái)就可以使用 matplotlib 庫(kù)來(lái)制作圓環(huán)圖了。下面是完整的可視化代碼:
import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] # 指定中文字體為黑體 # 繪制圓環(huán)圖 fig, ax = plt.subplots(figsize=(8, 8)) colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ffa3a3'] # 設(shè)置顏色 wedges, texts, autotexts = ax.pie(sales_by_shop, labels=sales_by_shop.index, startangle=90, autopct='%1.1f%%', wedgeprops={'width': 0.3}, labeldistance=1.15, colors=colors) # 添加標(biāo)題和圖例 ax.set_title('店鋪銷(xiāo)量占比', size=20) ax.legend(wedges, sales_by_shop.index, title="店鋪名稱(chēng)", loc="center left", bbox_to_anchor=(1, 0, 0.5, 1), fontsize=14) # 修改字體大小 plt.setp(texts, size=15) plt.setp(autotexts, size=14) # 顯示圖形 plt.show()
首先,我們使用 subplots
函數(shù)創(chuàng)建一個(gè)畫(huà)布,并設(shè)置畫(huà)布的大小。然后,我們定義了一個(gè)顏色列表,用于設(shè)置不同類(lèi)別的顏色。
接著,我們調(diào)用 pie
函數(shù)來(lái)繪制圓環(huán)圖。在該函數(shù)中,我們傳入按店鋪名稱(chēng)聚合后的銷(xiāo)售數(shù)量數(shù)據(jù),設(shè)置了一系列參數(shù),如起始角度、自動(dòng)計(jì)算百分比等。
最后,我們添加了標(biāo)題和圖例,并修改了字體大小。最后一步調(diào)用 show
函數(shù)來(lái)顯示圖形。
效果展示
下面是繪制出的店鋪銷(xiāo)量占比圓環(huán)圖:
完整代碼
import pandas as pd import matplotlib.pyplot as plt # 設(shè)置中文字體為黑體 plt.rcParams['font.family'] = ['SimHei'] # 從Excel文件中讀取數(shù)據(jù) data = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建文件夾\新建 XLSX 工作表.xlsx') # 按店鋪名稱(chēng)聚合銷(xiāo)售數(shù)量 sales_by_shop = data.groupby('店鋪名稱(chēng)')['銷(xiāo)售數(shù)量'].sum() # 使用 groupby() 方法按店鋪名稱(chēng)聚合銷(xiāo)售數(shù)量,并計(jì)算每個(gè)店鋪的銷(xiāo)售總量,結(jié)果保存在 sales_by_shop Series 中 # 繪制圓環(huán)圖 fig, ax = plt.subplots(figsize=(8, 8)) colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ffa3a3'] # 設(shè)置顏色 wedges, texts, autotexts = ax.pie(sales_by_shop, labels=sales_by_shop.index, startangle=90, autopct='%.2f%%', wedgeprops={'width': 0.3}, labeldistance=1.15, colors=colors) # 使用 ax.pie() 方法繪制圓環(huán)圖,其中傳遞銷(xiāo)售數(shù)量數(shù)據(jù)、標(biāo)簽、起始角度、百分比格式、扇形區(qū)域?qū)挾取?biāo)簽距離和顏色等參數(shù),并將返回的三個(gè)對(duì)象分別保存在 wedges、texts 和 autotexts 變量中。 # 添加標(biāo)題和圖例 ax.set_title('店鋪銷(xiāo)量占比', size=20) # 設(shè)置標(biāo)題 ax.legend(wedges, sales_by_shop.index, # 添加圖例 title="店鋪名稱(chēng)", # 圖例標(biāo)題 loc="center left", # 圖例位置 bbox_to_anchor=(1, 0, 0.5, 1), # 圖例框的坐標(biāo) fontsize=14) # 修改字體大小 plt.setp(texts, size=15) # 修改標(biāo)簽字體大小 plt.setp(autotexts, size=14) # 修改百分比字體大小 # 顯示圖形 plt.show()
總結(jié)
在本文中,我們介紹了如何使用 Python 的 pandas 和 matplotlib 庫(kù),來(lái)繪制一個(gè)店鋪銷(xiāo)量占比圓環(huán)圖。我們按照店鋪名稱(chēng)聚合銷(xiāo)售數(shù)量數(shù)據(jù),使用 matplotlib 庫(kù)繪制圓環(huán)圖,并最終展示了結(jié)果。希望這篇文章對(duì)你在數(shù)據(jù)分析和可視化方面有所幫助。
到此這篇關(guān)于Python利用pandas和matplotlib實(shí)現(xiàn)繪制圓環(huán)圖的文章就介紹到這了,更多相關(guān)Python圓環(huán)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中常見(jiàn)的數(shù)制轉(zhuǎn)換有哪些
在本篇文章里小編給大家整理的是一篇關(guān)于Python中常見(jiàn)的數(shù)制轉(zhuǎn)換例舉內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2020-05-05python實(shí)現(xiàn)不同電腦之間視頻傳輸功能
這篇文章主要介紹了python實(shí)現(xiàn)不同電腦之間視頻傳輸,本文視頻傳輸實(shí)現(xiàn)的前提是確保發(fā)送端和接收端接在同一個(gè)局域網(wǎng)下,分為發(fā)送端和接收端,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06Python flask框架實(shí)現(xiàn)查詢(xún)數(shù)據(jù)庫(kù)并顯示數(shù)據(jù)
這篇文章主要介紹了Python flask框架實(shí)現(xiàn)查詢(xún)數(shù)據(jù)庫(kù)并顯示數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python基于execjs運(yùn)行js過(guò)程解析
這篇文章主要介紹了Python基于execjs運(yùn)行js過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Ubuntu16.04/樹(shù)莓派Python3+opencv配置教程(分享)
下面小編就為大家分享一篇Ubuntu16.04/樹(shù)莓派Python3+opencv配置教程。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python實(shí)現(xiàn)字符串和字典的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)字符串和字典的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09pycharm中下載的包但是import還是無(wú)法使用/報(bào)紅的解決方法
用pycharm開(kāi)發(fā)時(shí),在導(dǎo)入自己寫(xiě)的python文件時(shí)出現(xiàn)模塊名爆紅的情況,下面這篇文章主要給大家介紹了關(guān)于pycharm中下載包但是import還是無(wú)法使用/報(bào)紅的解決方法,需要的朋友可以參考下2023-02-02Python的json模塊中json.load()和json.loads()的區(qū)別
這篇文章主要介紹了Python的json模塊中json.load()和json.loads()的區(qū)別,json.load用于從一個(gè)文件對(duì)象中讀取JSON數(shù)據(jù)并將其解析為Python對(duì)象,而json.loads用于解析一個(gè)JSON格式的字符串并將其轉(zhuǎn)換為Python對(duì)象,根據(jù)你的具體需求選擇使用哪個(gè)方法,需要的朋友可以參考下2024-12-12