Python 利用pandas和matplotlib繪製餅圖

2023-10-27 06:01:30

這段程式碼使用了Pandas和Matplotlib庫來繪製店鋪銷售數量佔比的餅圖。通過讀取Excel檔案中的資料,對店鋪名稱進行聚合並按銷售數量降序排列,然後使用Matplotlib繪製餅圖展示銷售數量佔比情況。

匯入必要的庫

import pandas as pd
import matplotlib.pyplot as plt

在這個步驟中,我們匯入了兩個必要的庫:pandas用於資料處理,matplotlib.pyplot用於繪圖。

設定中文字型

plt.rcParams['font.family'] = ['SimHei']

這段程式碼指定中文字型為黑體,以支援中文字元集。

讀取資料

data = pd.read_excel('C:\\Users\Admin\\Desktop\\資料核對\\新建 XLSX 工作表.xlsx')

這段程式碼從指定路徑的Excel檔案中讀取資料,並將資料儲存在data變數中。

聚合資料

aggregated_data = data.groupby('店鋪名稱')['銷售數量'].sum()

這段程式碼根據店鋪名稱對銷售數量進行聚合,並將結果儲存在aggregated_data變數中。

排序資料

aggregated_data = aggregated_data.sort_values(ascending=False)

這段程式碼對聚合後的資料按銷售數量進行降序排序。

繪製餅圖

plt.pie(aggregated_data, labels=aggregated_data.index, autopct='%.2f%%', startangle=90,
        wedgeprops={'linewidth': 1, 'edgecolor': 'white'}, pctdistance=0.85)

這段程式碼使用plt.pie函數繪製餅圖。傳入的引數包括聚合後的銷售數量資料和店鋪名稱,以及一些設定如起始角度、扇形邊框樣式和百分比標籤等。

設定圖表標題和圖例

plt.title('店鋪銷售數量佔比')
plt.legend(loc='best')

這段程式碼使用plt.title函數設定圖表標題,並使用plt.legend函數新增圖例。

隱藏餅圖中間的白色圓圈

plt.gca().set_aspect('equal')
plt.tight_layout()

這段程式碼使用plt.gca().set_aspect('equal')將餅圖設定為正圓形,並使用plt.tight_layout自動調整圖表佈局。

顯示圖表

plt.show()

這段程式碼顯示繪製好的圖表。

完整程式碼如下:

import pandas as pd
import matplotlib.pyplot as plt

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

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

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

# 按銷售數量降序排列
aggregated_data = aggregated_data.sort_values(ascending=False)

# 繪製餅圖
plt.pie(aggregated_data, labels=aggregated_data.index, autopct='%.2f%%', startangle=90,
        wedgeprops={'linewidth': 1, 'edgecolor': 'white'},pctdistance=0.85)  # 設定起始角度和扇形邊框樣式

# 設定圖表標題和圖例
plt.title('店鋪銷售數量佔比')
plt.legend(loc='best')

# 隱藏餅圖中間的白色圓圈
plt.gca().set_aspect('equal')  # 使餅圖為正圓形
plt.tight_layout()  # 自動調整圖表佈局

# 顯示圖表
plt.show()