如何将pandas dataframe以按数值着色的网格表格形式展示
实现方案
你可以直接用seaborn.heatmap实现需求,这是最简便的方式,刚好匹配你要的数值映射蓝色深浅的网格展示效果。
首先导入依赖、构造示例DataFrame:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 构造你给出的示例DataFrame data = {month: [4.34, 3.34, 5.34, 2.39, 3.93, 4.32] for month in ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']} df = pd.DataFrame(data, index=[2020, 2018, 2018, 2017, 2016, 2015]) df.index.name = 'year'
核心绘图代码如下:
plt.figure(figsize=(12, 6)) # cmap指定为蓝色系Blues,天然满足数值越高蓝色越深的规则 # annot=True显示单元格内的数值,fmt指定数值保留两位小数,linewidths设置单元格间隔线 ax = sns.heatmap(df, cmap='Blues', annot=True, fmt='.2f', linewidths=0.5) # 调整x轴标签显示在顶部,和常规表格展示逻辑一致 ax.xaxis.tick_top() ax.xaxis.set_label_position('top') plt.ylabel('year') plt.show()
如果不想额外安装seaborn,且只需要在Jupyter等支持HTML渲染的环境下展示,可以直接用pandas自带的样式功能:
df.style.background_gradient(cmap='Blues')
内容的提问来源于stack exchange,提问作者Faiz
相关产品推荐
相关产品推荐

