Python实现轻松处理两行表头Excel并可视化分析(附完整代码)

 更新时间:2025年11月20日 10:02:28   作者:IT小本本  
在日常的数据处理中,我们经常会遇到多级表头的 Excel 文件,本文通过一个实际案例,带你完整了解读取 Excel ,整理多级表头 ,提取库存,销量的数据 ,绘图可视化的完整步骤吧

在日常的数据处理中,我们经常会遇到多级表头的 Excel 文件:例如“商品1 / 库存 / 销量”这种两行结构。 如果不正确处理表头,Python 在读取时就会出现列名混乱、KeyError 等问题。

本文通过一个实际案例,带你完整走一遍:读取 Excel → 整理多级表头 → 提取库存→销量的数据 → 绘图可视化。

一、示例 Excel 数据结构

数据格式如下(前两行为表头):

这种结构是典型的 MultiIndex 多级表头

若直接读取,会导致列名变成:

('商品1', '库存'), ('商品1', '销量')

我们需要把它整理成更易操作的形式,例如:

商品1-库存
商品1-销量
商品2-库存
商品2-销量

二、Python 读取多级表头(关键步骤)

使用 header=[0,1] 阅读两行表头:

df = pd.read_excel("data.xlsx", header=[0, 1])

随后整合成单行列名:

new_cols = []
for col1, col2 in df.columns:
    if col1 == '门店编码':
        new_cols.append('门店编码')
    else:
        new_cols.append(f"{col1}-{col2}")
df.columns = new_cols

这样就能避免 KeyError,并让所有列名清晰易用。

三、提取库存 > 销量的所有门店商品

逻辑很简单:

如果 库存 > 销量 :输出该商品

完整代码如下:

result = []

for index, row in df.iterrows():
    store = row['门店编码']

    for i in range(1, 6):
        inv = row[f"商品{i}-库存"]
        sales = row[f"商品{i}-销量"]

        if inv > sales:
            result.append([store, f"商品{i}", inv])

result_df = pd.DataFrame(result, columns=['门店', '商品', '库存'])
print(result_df)

输出示例:

门店    商品   库存
A039  商品1    7
A039  商品2    2
A288  商品3   13
A335  商品4    6

这样我们就得到了所有“库存高于销量”的商品清单。

四、库存分析可视化(3 个图表)

下面使用 Matplotlib + Seaborn 来生成直观清晰的图表。

图表 1:每个门店库存>销量的商品数量(条形图)

import matplotlib.pyplot as plt

store_count = result_df.groupby("门店").size()

plt.figure(figsize=(10,5))
store_count.plot(kind='bar')
plt.title("每个门店 库存>销量 的商品数量")
plt.xlabel("门店")
plt.ylabel("商品数量")
plt.tight_layout()
plt.show()

可帮助判断:哪些门店库存积压最大

图表 2:每个商品库存>销量出现次数(条形图)

product_count = result_df.groupby("商品").size()

plt.figure(figsize=(8,5))
product_count.plot(kind='bar')
plt.title("各商品 库存>销量 次数统计")
plt.xlabel("商品")
plt.ylabel("次数")
plt.tight_layout()
plt.show()

用于发现:哪些商品容易滞销

图表 3:库存 - 销量 热力图(直观查看差异)

import seaborn as sns

matrix = {}

for index, row in df.iterrows():
    store = row['门店编码']
    diff_list = []
    for i in range(1, 6):
        diff = row[f"商品{i}-库存"] - 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("库存 - 销量 热力图")
plt.xlabel("门店")
plt.ylabel("商品")
plt.tight_layout()
plt.show()

热力图能够一眼看到:

  • 哪些门店库存偏高
  • 哪些商品表现更好或更差

是库存分析中非常有价值的图。

到此这篇关于Python实现轻松处理两行表头Excel并可视化分析(附完整代码)的文章就介绍到这了,更多相关Python处理两行表头Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用pipenv管理python虚拟环境的全过程

    使用pipenv管理python虚拟环境的全过程

    pipenv 是Kenneth Reitz大神的作品,能够有效管理Python多个环境,各种包,接下来通过本文给大家分享使用pipenv管理python虚拟环境的全过程,感兴趣的朋友一起看看吧
    2021-09-09
  • Python基础详解之邮件处理

    Python基础详解之邮件处理

    这篇文章主要介绍了Python基础详解之邮件处理,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Python三维网格体素化实例

    Python三维网格体素化实例

    这篇文章主要介绍了Python三维网格体素化实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python下使用Trackbar实现绘图板

    Python下使用Trackbar实现绘图板

    这篇文章主要为大家详细介绍了Python下使用Trackbar实现绘图板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Python matplotlib 动画绘制详情

    Python matplotlib 动画绘制详情

    这篇文章主要介绍了Python matplotlib 动画绘制,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09
  • TFRecord文件查看包含的所有Features代码

    TFRecord文件查看包含的所有Features代码

    今天小编就为大家分享一篇TFRecord文件查看包含的所有Features代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python全栈之学习MySQL(2)

    Python全栈之学习MySQL(2)

    这篇文章主要为大家介绍了Python全栈之MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python多线程下信号处理程序示例

    python多线程下信号处理程序示例

    这篇文章主要为大家详细介绍了python多线程下信号处理程序示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 解决ImportError:DLL load failed while importing win32api:找不到指定的模块

    解决ImportError:DLL load failed while impo

    在安装pywin32后,可能会出现无法导入win32api的错误,一个有效的解决方案是运行pywin32_postinstall.py脚本,首先,打开cmd并切换到环境的Scripts文件夹,确保存在pywin32_postinstall.py文件
    2024-09-09
  • django多对多表的创建,级联删除及手动创建第三张表

    django多对多表的创建,级联删除及手动创建第三张表

    这篇文章主要介绍了django多对多表的创建,级联删除及手动创建第三张表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论