Python利用pandas和matplotlib實(shí)現(xiàn)繪制圓環(huán)圖
制作店鋪銷量占比圓環(huán)圖
在數(shù)據(jù)分析中,數(shù)據(jù)可視化是非常重要的一環(huán)。在可視化的過程中,圓環(huán)圖是一種常用的方式,特別適合于展示各類別占比情況。本文將介紹如何使用 Python 中的 pandas 和 matplotlib 庫,來制作一個店鋪銷量占比的圓環(huán)圖。
數(shù)據(jù)準(zhǔn)備
我們假設(shè)現(xiàn)在有一份銷售數(shù)據(jù)的 Excel 文件,其中包含了不同店鋪的銷售數(shù)量數(shù)據(jù)。我們將使用 pandas 庫來讀取和處理這份數(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ù)處理
我們需要按照店鋪名稱來聚合銷售數(shù)量數(shù)據(jù),以便于后續(xù)的可視化。我們可以使用 pandas 庫的 groupby
函數(shù)來實(shí)現(xiàn)這一步驟。下面是代碼:
# 按店鋪名稱聚合銷售數(shù)量 sales_by_shop = data.groupby('店鋪名稱')['銷售數(shù)量'].sum()
可視化
現(xiàn)在我們已經(jīng)得到了按店鋪名稱聚合后的銷售數(shù)量數(shù)據(jù),接下來就可以使用 matplotlib 庫來制作圓環(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('店鋪銷量占比', size=20) ax.legend(wedges, sales_by_shop.index, title="店鋪名稱", 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)建一個畫布,并設(shè)置畫布的大小。然后,我們定義了一個顏色列表,用于設(shè)置不同類別的顏色。
接著,我們調(diào)用 pie
函數(shù)來繪制圓環(huán)圖。在該函數(shù)中,我們傳入按店鋪名稱聚合后的銷售數(shù)量數(shù)據(jù),設(shè)置了一系列參數(shù),如起始角度、自動計(jì)算百分比等。
最后,我們添加了標(biāo)題和圖例,并修改了字體大小。最后一步調(diào)用 show
函數(shù)來顯示圖形。
效果展示
下面是繪制出的店鋪銷量占比圓環(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') # 按店鋪名稱聚合銷售數(shù)量 sales_by_shop = data.groupby('店鋪名稱')['銷售數(shù)量'].sum() # 使用 groupby() 方法按店鋪名稱聚合銷售數(shù)量,并計(jì)算每個店鋪的銷售總量,結(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)圖,其中傳遞銷售數(shù)量數(shù)據(jù)、標(biāo)簽、起始角度、百分比格式、扇形區(qū)域?qū)挾取?biāo)簽距離和顏色等參數(shù),并將返回的三個對象分別保存在 wedges、texts 和 autotexts 變量中。 # 添加標(biāo)題和圖例 ax.set_title('店鋪銷量占比', size=20) # 設(shè)置標(biāo)題 ax.legend(wedges, sales_by_shop.index, # 添加圖例 title="店鋪名稱", # 圖例標(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 庫,來繪制一個店鋪銷量占比圓環(huán)圖。我們按照店鋪名稱聚合銷售數(shù)量數(shù)據(jù),使用 matplotlib 庫繪制圓環(huán)圖,并最終展示了結(jié)果。希望這篇文章對你在數(shù)據(jù)分析和可視化方面有所幫助。
到此這篇關(guān)于Python利用pandas和matplotlib實(shí)現(xiàn)繪制圓環(huán)圖的文章就介紹到這了,更多相關(guān)Python圓環(huán)圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)不同電腦之間視頻傳輸功能
這篇文章主要介紹了python實(shí)現(xiàn)不同電腦之間視頻傳輸,本文視頻傳輸實(shí)現(xiàn)的前提是確保發(fā)送端和接收端接在同一個局域網(wǎng)下,分為發(fā)送端和接收端,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06Python flask框架實(shí)現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù)
這篇文章主要介紹了Python flask框架實(shí)現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)
下面小編就為大家分享一篇Ubuntu16.04/樹莓派Python3+opencv配置教程。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python實(shí)現(xiàn)字符串和字典的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)字符串和字典的轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09pycharm中下載的包但是import還是無法使用/報(bào)紅的解決方法
用pycharm開發(fā)時,在導(dǎo)入自己寫的python文件時出現(xiàn)模塊名爆紅的情況,下面這篇文章主要給大家介紹了關(guān)于pycharm中下載包但是import還是無法使用/報(bào)紅的解決方法,需要的朋友可以參考下2023-02-02Python的json模塊中json.load()和json.loads()的區(qū)別
這篇文章主要介紹了Python的json模塊中json.load()和json.loads()的區(qū)別,json.load用于從一個文件對象中讀取JSON數(shù)據(jù)并將其解析為Python對象,而json.loads用于解析一個JSON格式的字符串并將其轉(zhuǎn)換為Python對象,根據(jù)你的具體需求選擇使用哪個方法,需要的朋友可以參考下2024-12-12