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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文详解如何在Python中从字符串中提取部分内容

    一文详解如何在Python中从字符串中提取部分内容

    这篇文章主要介绍了如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作和函数式编程,每种方法都有其适用场景和优缺点,需要的朋友可以参考下
    2025-04-04
  • 详细分析Python collections工具库

    详细分析Python collections工具库

    这篇文章主要介绍了详解Python collections工具库的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 对numpy中的transpose和swapaxes函数详解

    对numpy中的transpose和swapaxes函数详解

    今天小编就为大家分享一篇对numpy中的transpose和swapaxes函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 解决TensorFlow调用Keras库函数存在的问题

    解决TensorFlow调用Keras库函数存在的问题

    这篇文章主要介绍了解决TensorFlow调用Keras库函数存在的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python中with语句结合上下文管理器操作详解

    python中with语句结合上下文管理器操作详解

    这篇文章主要给大家介绍了关于python中with语句结合上下文管理器操作的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • python memory_profiler库生成器和迭代器内存占用的时间分析

    python memory_profiler库生成器和迭代器内存占用的时间分析

    这篇文章主要介绍了python memory_profiler库生成器和迭代器内存占用的时间分析,文章围绕主题展开详细的内容介绍,感兴趣的小伙伴可以参考一下
    2022-06-06
  • python利用print()打印田字格练习题详解

    python利用print()打印田字格练习题详解

    print在 Python3.x是一个函数,但在Python2.x版本不是一个函数,只是一个关键字,这篇文章主要给大家介绍了关于python利用print()打印田字格练习题的相关资料,需要的朋友可以参考下
    2024-05-05
  • 七牛云的python sdk 批量删除资源的操作方法

    七牛云的python sdk 批量删除资源的操作方法

    今天做项目的时候用到七牛云,关于对资源的操作是在后端做的,用的SDK,这篇文章主要介绍了七牛云的python sdk 是如何 批量删除资源的,需要的朋友可以参考下
    2021-10-10
  • Python 解决火狐浏览器不弹出下载框直接下载的问题

    Python 解决火狐浏览器不弹出下载框直接下载的问题

    这篇文章主要介绍了Python 解决火狐浏览器不弹出下载框直接下载的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python使用SQLAlchemy操作单表的完整实战指南

    Python使用SQLAlchemy操作单表的完整实战指南

    在 Python 的数据开发与后端工程中,SQLAlchemy 是最流行、最强大的 ORM 框架之一, 它不仅可以让我们像操作对象一样操作数据库,还能同时支持 ORM 与 原生 SQL 两种方式,本文将通过一个完整的示例详细介绍 SQLAlchemy 的单表操作,需要的朋友可以参考下
    2025-11-11

最新评论