Python實(shí)現(xiàn)輕松處理兩行表頭Excel并可視化分析(附完整代碼)
在日常的數(shù)據(jù)處理中,我們經(jīng)常會(huì)遇到多級(jí)表頭的 Excel 文件:例如“商品1 / 庫(kù)存 / 銷量”這種兩行結(jié)構(gòu)。 如果不正確處理表頭,Python 在讀取時(shí)就會(huì)出現(xiàn)列名混亂、KeyError 等問(wèn)題。
本文通過(guò)一個(gè)實(shí)際案例,帶你完整走一遍:讀取 Excel → 整理多級(jí)表頭 → 提取庫(kù)存→銷量的數(shù)據(jù) → 繪圖可視化。
一、示例 Excel 數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)格式如下(前兩行為表頭):

這種結(jié)構(gòu)是典型的 MultiIndex 多級(jí)表頭。
若直接讀取,會(huì)導(dǎo)致列名變成:
('商品1', '庫(kù)存'), ('商品1', '銷量')
我們需要把它整理成更易操作的形式,例如:
商品1-庫(kù)存
商品1-銷量
商品2-庫(kù)存
商品2-銷量
二、Python 讀取多級(jí)表頭(關(guān)鍵步驟)
使用 header=[0,1] 閱讀兩行表頭:
df = pd.read_excel("data.xlsx", header=[0, 1])
隨后整合成單行列名:
new_cols = []
for col1, col2 in df.columns:
if col1 == '門(mén)店編碼':
new_cols.append('門(mén)店編碼')
else:
new_cols.append(f"{col1}-{col2}")
df.columns = new_cols
這樣就能避免 KeyError,并讓所有列名清晰易用。
三、提取庫(kù)存 > 銷量的所有門(mén)店商品
邏輯很簡(jiǎn)單:
如果 庫(kù)存 > 銷量 :輸出該商品
完整代碼如下:
result = []
for index, row in df.iterrows():
store = row['門(mén)店編碼']
for i in range(1, 6):
inv = row[f"商品{i}-庫(kù)存"]
sales = row[f"商品{i}-銷量"]
if inv > sales:
result.append([store, f"商品{i}", inv])
result_df = pd.DataFrame(result, columns=['門(mén)店', '商品', '庫(kù)存'])
print(result_df)
輸出示例:
門(mén)店 商品 庫(kù)存
A039 商品1 7
A039 商品2 2
A288 商品3 13
A335 商品4 6
這樣我們就得到了所有“庫(kù)存高于銷量”的商品清單。
四、庫(kù)存分析可視化(3 個(gè)圖表)
下面使用 Matplotlib + Seaborn 來(lái)生成直觀清晰的圖表。
圖表 1:每個(gè)門(mén)店庫(kù)存>銷量的商品數(shù)量(條形圖)
import matplotlib.pyplot as plt
store_count = result_df.groupby("門(mén)店").size()
plt.figure(figsize=(10,5))
store_count.plot(kind='bar')
plt.title("每個(gè)門(mén)店 庫(kù)存>銷量 的商品數(shù)量")
plt.xlabel("門(mén)店")
plt.ylabel("商品數(shù)量")
plt.tight_layout()
plt.show()
可幫助判斷:哪些門(mén)店庫(kù)存積壓最大。

圖表 2:每個(gè)商品庫(kù)存>銷量出現(xiàn)次數(shù)(條形圖)
product_count = result_df.groupby("商品").size()
plt.figure(figsize=(8,5))
product_count.plot(kind='bar')
plt.title("各商品 庫(kù)存>銷量 次數(shù)統(tǒng)計(jì)")
plt.xlabel("商品")
plt.ylabel("次數(shù)")
plt.tight_layout()
plt.show()
用于發(fā)現(xiàn):哪些商品容易滯銷。

圖表 3:庫(kù)存 - 銷量 熱力圖(直觀查看差異)
import seaborn as sns
matrix = {}
for index, row in df.iterrows():
store = row['門(mén)店編碼']
diff_list = []
for i in range(1, 6):
diff = row[f"商品{i}-庫(kù)存"] - row[f"商品{i}-銷量"]
diff_list.append(diff)
matrix[store] = diff_list
heat_df = pd.DataFrame(matrix, index=[f"商品{i}" for i in range(1, 6)])
plt.figure(figsize=(12,6))
sns.heatmap(heat_df, annot=True, fmt="d", cmap="YlGnBu")
plt.title("庫(kù)存 - 銷量 熱力圖")
plt.xlabel("門(mén)店")
plt.ylabel("商品")
plt.tight_layout()
plt.show()
熱力圖能夠一眼看到:
- 哪些門(mén)店庫(kù)存偏高
- 哪些商品表現(xiàn)更好或更差
是庫(kù)存分析中非常有價(jià)值的圖。

到此這篇關(guān)于Python實(shí)現(xiàn)輕松處理兩行表頭Excel并可視化分析(附完整代碼)的文章就介紹到這了,更多相關(guān)Python處理兩行表頭Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解如何在Python中從字符串中提取部分內(nèi)容
這篇文章主要介紹了如何在Python中從字符串中提取部分內(nèi)容的相關(guān)資料,包括使用正則表達(dá)式、Pyparsing庫(kù)、AST(抽象語(yǔ)法樹(shù))、字符串操作和函數(shù)式編程,每種方法都有其適用場(chǎng)景和優(yōu)缺點(diǎn),需要的朋友可以參考下2025-04-04
詳細(xì)分析Python collections工具庫(kù)
這篇文章主要介紹了詳解Python collections工具庫(kù)的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
對(duì)numpy中的transpose和swapaxes函數(shù)詳解
今天小編就為大家分享一篇對(duì)numpy中的transpose和swapaxes函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
解決TensorFlow調(diào)用Keras庫(kù)函數(shù)存在的問(wèn)題
這篇文章主要介紹了解決TensorFlow調(diào)用Keras庫(kù)函數(shù)存在的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
python中with語(yǔ)句結(jié)合上下文管理器操作詳解
這篇文章主要給大家介紹了關(guān)于python中with語(yǔ)句結(jié)合上下文管理器操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
python?memory_profiler庫(kù)生成器和迭代器內(nèi)存占用的時(shí)間分析
這篇文章主要介紹了python?memory_profiler庫(kù)生成器和迭代器內(nèi)存占用的時(shí)間分析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06
Python 解決火狐瀏覽器不彈出下載框直接下載的問(wèn)題
這篇文章主要介紹了Python 解決火狐瀏覽器不彈出下載框直接下載的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python使用SQLAlchemy操作單表的完整實(shí)戰(zhàn)指南
在 Python 的數(shù)據(jù)開(kāi)發(fā)與后端工程中,SQLAlchemy 是最流行、最強(qiáng)大的 ORM 框架之一, 它不僅可以讓我們像操作對(duì)象一樣操作數(shù)據(jù)庫(kù),還能同時(shí)支持 ORM 與 原生 SQL 兩種方式,本文將通過(guò)一個(gè)完整的示例詳細(xì)介紹 SQLAlchemy 的單表操作,需要的朋友可以參考下2025-11-11

