Python 利用pandas和matplotlib繪製餅圖

2023-11-04 06:00:19

製作店鋪銷量佔比圓環圖

在資料分析中,資料視覺化是非常重要的一環。在視覺化的過程中,圓環圖是一種常用的方式,特別適合於展示各類別佔比情況。本文將介紹如何使用 Python 中的 pandas 和 matplotlib 庫,來製作一個店鋪銷量佔比的圓環圖。

資料準備

我們假設現在有一份銷售資料的 Excel 檔案,其中包含了不同店鋪的銷售數量資料。我們將使用 pandas 庫來讀取和處理這份資料。下面是讀取資料的程式碼:

import pandas as pd

# 從Excel檔案中讀取資料
data = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建資料夾\新建 XLSX 工作表.xlsx')

資料預處理

我們需要按照店鋪名稱來聚合銷售數量資料,以便於後續的視覺化。我們可以使用 pandas 庫的 groupby 函數來實現這一步驟。下面是程式碼:

# 按店鋪名稱聚合銷售數量
sales_by_shop = data.groupby('店鋪名稱')['銷售數量'].sum()

視覺化

現在我們已經得到了按店鋪名稱聚合後的銷售數量資料,接下來就可以使用 matplotlib 庫來製作圓環圖了。下面是完整的視覺化程式碼:

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['SimHei']  # 指定中文字型為黑體

# 繪製圓環圖
fig, ax = plt.subplots(figsize=(8, 8))
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ffa3a3'] # 設定顏色
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)

# 新增標題和圖例
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 函數建立一個畫布,並設定畫布的大小。然後,我們定義了一個顏色列表,用於設定不同類別的顏色。

接著,我們呼叫 pie 函數來繪製圓環圖。在該函數中,我們傳入按店鋪名稱聚合後的銷售數量資料,設定了一系列引數,如起始角度、自動計算百分比等。

最後,我們新增了標題和圖例,並修改了字型大小。最後一步呼叫 show 函數來顯示圖形。

效果展示

下面是繪製出的店鋪銷量佔比圓環圖:

完整程式碼:

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['SimHei']  # 指定中文字型為黑體

# 從Excel檔案中讀取資料
data = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建資料夾\新建 XLSX 工作表.xlsx')

# 按店鋪名稱聚合銷售數量
sales_by_shop = data.groupby('店鋪名稱')['銷售數量'].sum()

# 繪製圓環圖
fig, ax = plt.subplots(figsize=(8, 8))
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ffa3a3'] # 設定顏色
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)

# 新增標題和圖例
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()

總結

在本文中,我們介紹瞭如何使用 Python 的 pandas 和 matplotlib 庫,來繪製一個店鋪銷量佔比圓環圖。我們按照店鋪名稱聚合銷售數量資料,使用 matplotlib 庫繪製圓環圖,並最終展示了結果。希望這篇文章對你在資料分析和視覺化方面有所幫助。