Python 數據可視化進階:精準插入圖表到指定 Excel 工作表
在處理數據的過程中,我們常常需要將生成的圖表精準地插入到已存在數據的 Excel 文件的指定工作表中。借助 Python 的強大庫組合,這一操作得以高效實現。以下是經過優化和注釋補充的代碼,助你輕松完成這一任務。
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import matplotlib.pyplot as plt
import pandas as pddef insert_sheet_to_chart_bar(filename, df, sheet_name):"""將柱狀圖插入到指定的 Excel 工作表中參數:filename -- Excel 文件路徑df -- 包含圖表數據的 pandas DataFrame 對象sheet_name -- 目標工作表名稱"""# 提取數據:從 DataFrame 中獲取列名和數據值categories = list(df.columns) # 獲取列名作為柱狀圖分類標簽values = list(df.values.flatten().tolist()) # 將數據展平并轉換為列表形式# 生成柱狀圖plt.figure(figsize=(8, 4))bars = plt.bar(categories, values, color=['#1f77b4', '#ff7f0e'])# 設置中文顯示:指定字體以確保中文標題和標簽顯示正確plt.rcParams['font.sans-serif'] = ['SimHei']plt.title("會員數量對比") # 設置圖表標題plt.ylabel("數量") # 設置縱軸標簽# 添加數值標簽:在每個柱子上方顯示具體數值for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width() / 2., height,f'{int(height)}',ha='center', va='bottom')# 保存圖表圖片:將生成的圖表保存為 PNG 格式chart_path = 'membership_chart.png'plt.savefig(chart_path, dpi=300, bbox_inches='tight')plt.close()# 讀取 Excel 文件:加載已存在的 Excel 文件以便進行修改wb = load_workbook(filename)# 獲取指定工作表:確保圖表插入到正確的工作表中if sheet_name in wb.sheetnames:ws = wb[sheet_name]else:ws = wb.create_sheet(sheet_name) # 如果工作表不存在,則創建# 插入圖表圖片:加載圖表圖片并調整大小,然后插入到指定位置img = Image(chart_path)img.width = 1000 # 設置圖片寬度img.height = 550 # 設置圖片高度ws.add_image(img, 'D2') # 將圖片插入到 D2 單元格位置# 保存修改后的 Excel 文件:確保所有更改被保存wb.save(filename)
代碼應用實例
假設有一個名為 data.xlsx
的 Excel 文件,其中包含一個名為 Sheet1
的工作表,該工作表中有兩列數據(例如:A
列是月份,B
列是銷售額)。我們可以通過以下代碼將柱狀圖插入到 Sheet1
中:
# 導入 pandas 庫
import pandas as pd# 創建示例 DataFrame
data = {'月份': ['1月', '2月', '3月'], '銷售額': [2500, 3200, 2800]}
df = pd.DataFrame(data)# 直接讀取指定sheet下的數據# 指定要讀取的工作表名稱
sheet_name = 'Sheet1'
df = pd.read_excel('data.xlsx', sheet_name=sheet_name)
print(df)# 調用函數
insert_sheet_to_chart_bar('data.xlsx', df, 'Sheet1')
關鍵點總結
- 精確指定工作表 :通過傳遞
sheet_name
參數,可以確保圖表插入到正確的 Excel 工作表中。如果工作表不存在,代碼會自動創建該工作表。 - 圖表生成與保存 :使用
matplotlib
庫生成柱狀圖,并保存為圖片文件。在生成圖表時,可以根據實際需求設置圖表的標題、坐標軸標簽、顏色、數值標簽等屬性。 - 圖片插入與調整 :利用
openpyxl
庫加載保存的圖片,調整圖片的寬度和高度,使其在 Excel 中顯示時具有合適的大小,并將其插入到指定的單元格位置。 - 靈活性與可擴展性 :此代碼結構清晰,易于根據具體需求進行修改和擴展。例如,可以輕松調整圖表類型、樣式,或者更改圖片的插入位置和大小等。
希望以上內容能夠幫助大家更好地理解和應用 Python 進行 Excel 數據可視化操作!