用于热图的 Pandas 中的 bin DataFrame

Gea*_*ric 3 python matplotlib pandas seaborn

我想从 Pandas 中的 DataFrame 绘制热图。数据看起来像

df = pd.DataFrame({"A": np.random.random(100), "B": np.random.random(100), "C": np.random.random(100)})

为了显示C如何作为A和B的函数变化,我想根据A和B对数据进行分箱并计算每个分箱中C的平均值,最后热图将A和B作为 X 轴和 Y 轴,颜色表示对应的C值。

我试图用Seaborn.heatmap,但该函数接受方的数据集,这意味着我应该斌数据第一。

有没有办法直接从 DataFrame 生成我想要的东西?如果没有,我如何将 DataFrame 放入二维网格中?

我知道pandas.cut可以做到这一点,但它似乎只能根据一列进行一次切割。当然,我可以编写乏味的函数来管道“两次切割”,但我想知道是否有一些简单的方法来完成这项任务。

散点图可以给出类似的结果,但我想要热图,类似于this,而不是this。

Ale*_*der 5

像这样的东西?

>>> df.groupby([pd.cut(df.A, 3), pd.cut(df.B, 3)]).C.mean().unstack()
B                  (0.00223, 0.335]  (0.335, 0.666]  (0.666, 0.998]
A                                                                  
(0.000763, 0.334]          0.579832        0.454004        0.349740
(0.334, 0.667]             0.587145        0.677880        0.559560
(0.667, 1]                 0.566409        0.496061        0.420541
Run Code Online (Sandbox Code Playgroud)