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

如何在Pandas中将多级索引Series转为pivot table并绘制heatmap

实现Animal-Idol透视表转换及热力图绘制

一、从现有数据生成透视表

1. 基于两级索引的Series

假设你的两级索引Series名为count_series,第一级索引是Animal,第二级是Idol,值为重复次数总和。直接用unstack()方法即可转换为目标格式的透视表:

# 转换为透视表,缺失值填充为0
pivot_table = count_series.unstack(level='Idol', fill_value=0)

若索引层级无显式名称,也可通过层级位置指定(比如Animal是第0层、Idol是第1层):

pivot_table = count_series.unstack(level=1, fill_value=0)

2. 基于原始配对DataFrame

假设原始DataFrame名为raw_df,每行代表一次Animal与Idol的配对记录,用pivot_table()方法直接统计频次并生成透视表:

# 统计每个组合的出现次数,生成透视表
pivot_table = raw_df.pivot_table(
    index='Animal',
    columns='Idol',
    aggfunc='size',  # 统计行数即配对次数
    fill_value=0
)

如果原始DataFrame已有记录重复次数的列(比如名为count),则指定values参数求和:

pivot_table = raw_df.pivot_table(
    index='Animal',
    columns='Idol',
    values='count',
    aggfunc='sum',
    fill_value=0
)

二、绘制热力图

使用seaborn的heatmap可快速生成反映数值大小的热力图,代码示例如下:

import seaborn as sns
import matplotlib.pyplot as plt

# 设置绘图风格
sns.set_style("whitegrid")

# 绘制热力图
plt.figure(figsize=(10, 6))  # 自定义图的尺寸
ax = sns.heatmap(
    pivot_table,
    annot=True,  # 在单元格内显示具体数值
    cmap='Blues',  # 颜色映射,深色对应高数值
    fmt='d',  # 数值显示格式,'d'代表整数
    cbar=True  # 显示右侧颜色条
)

# 设置标签与标题
ax.set_title('Animal-Idol配对次数热力图')
ax.set_xlabel('Idol')
ax.set_ylabel('Animal')

# 展示图形
plt.show()
  • annot=True:可选,开启后便于直接读取单元格数值
  • cmap:可替换为'Greens'、'Reds'等其他颜色映射
  • fmt:若数值为浮点数,可改为'.2f'保留两位小数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:20:39