You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame按单列绘制类似Excel条件格式的热图

实现方案

你要的每列单独应用同色阶热图(类似Excel按列设置条件格式)的效果,有两种常用实现方式:

方案1:Pandas 内置 Styler(最接近Excel效果,支持导出带格式文件)

这个方案直接复用Pandas自带的样式渲染能力,渲染效果和Excel条件格式完全一致,支持直接在Jupyter中预览,也可导出为带格式的Excel或HTML文件。

import pandas as pd
import numpy as np

# 你的示例DataFrame
df = pd.DataFrame(np.random.randint(0.1, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])

# 生成按列着色的热图样式
styled_df = df.style.background_gradient(
    cmap="RdYlGn", # 可自定义颜色梯度,可选'Blues'/'viridis'/'OrRd'等
    axis=0, # 核心参数:axis=0表示按列单独计算颜色映射范围,实现每列独立生效
    vmin=None, vmax=None # 如需使用全局统一的数值映射范围,可手动指定这两个参数
)

# Jupyter环境直接运行变量名styled_df即可预览效果,导出用以下代码:
# styled_df.to_excel("带色阶的表格.xlsx", engine="openpyxl")
# styled_df.to_html("带色阶的表格.html")

方案2:Seaborn heatmap 适配实现

适合需要生成静态可视化图片、用于报告或论文的场景,核心逻辑是先对每列做独立的min-max归一化,用归一化后的数据计算颜色,原始数据做标注展示。

import seaborn as sns
import matplotlib.pyplot as plt

# 按列做min-max归一化,用于颜色计算
df_normalized = df.apply(
    lambda x: (x - x.min())/(x.max() - x.min()) if x.max() != x.min() else 0.5, 
    axis=0
)

# 绘制热图
plt.figure(figsize=(7, 3))
sns.heatmap(
    df_normalized, # 用归一化后的数据计算颜色
    annot=df, # 标注展示原始数值
    fmt="g", # 禁用科学计数法显示
    cmap="RdYlGn",
    cbar=True, # 可设置为False隐藏颜色条
    xticklabels=df.columns,
    yticklabels=df.index
)
plt.show()

注意事项

如果某列所有数值完全一致,min-max归一化会出现除零错误,上述方案2的lambda函数中已经加了兼容判断,遇到全值相同的列会统一映射到色阶中间值。

内容的提问来源于stack exchange,提问作者windcheater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:06:03