Pandas 如何从存储在数据框中的每个箱子的边缘和值生成热图?

Pandas 如何从存储在数据框中的每个箱子的边缘和值生成热图?,pandas,matplotlib,seaborn,heatmap,Pandas,Matplotlib,Seaborn,Heatmap,我使用cut函数在数据帧中定义了2D bin边。我试图了解如何将这些箱子边缘和每个箱子的各种值转换为热图 我从iris数据集开始,对其进行UMAP投影,这样我就有了每个数据点的UMAPx和y坐标 我使用cut函数将其转换为网格单元,从而生成x和y方向的箱边。然后得到每个网格单元对应的特征的平均值 现在,一个人怎么能从这个转变成一个热图,比如一个海生热图?按特征提取该特征,第一个特征将是每个2D bin(UMAP\u x\u bin,UMAP\u y\u bin)的萼片长度(cm)平均值的热图

我使用
cut
函数在数据帧中定义了2D bin边。我试图了解如何将这些箱子边缘和每个箱子的各种值转换为热图

我从iris数据集开始,对其进行
UMAP
投影,这样我就有了每个数据点的
UMAP
x和y坐标

我使用
cut
函数将其转换为网格单元,从而生成x和y方向的箱边。然后得到每个网格单元对应的特征的平均值

现在,一个人怎么能从这个转变成一个热图,比如一个海生热图?按特征提取该特征,第一个特征将是每个2D bin(
UMAP\u x\u bin
UMAP\u y\u bin
)的萼片长度(cm)平均值的热图


首先,您需要将
IntervalIndex
列转换为单值列

iris_df .UMAP_x_bin= iris_df .UMAP_x_bin.apply(lambda x: x.mid)
iris_df .UMAP_y_bin= iris_df .UMAP_x_bin.apply(lambda x: x.mid)
然后,必须将数据插值到值的二维网格上。 您可以使用
scipy
进行此操作

from scipy.interpolate import griddata

points = np.c_[iris_df .UMAP_x_bin, iris_df .UMAP_y_bin]
values = iris_df ['sepal length (cm)_mean'].to_numpy()

# Choose the range appropriately.
gridx, gridy = np.mgrid[0:100, 0:100]

# interpolate.
data = griddata(points, values, (gridx, gridy), method = 'nearest')

# plot the heatmap
sns.heatmap(data)

注:根据
UMap\u x\u bin
UMap\u y\u bin

from scipy.interpolate import griddata

points = np.c_[iris_df .UMAP_x_bin, iris_df .UMAP_y_bin]
values = iris_df ['sepal length (cm)_mean'].to_numpy()

# Choose the range appropriately.
gridx, gridy = np.mgrid[0:100, 0:100]

# interpolate.
data = griddata(points, values, (gridx, gridy), method = 'nearest')

# plot the heatmap
sns.heatmap(data)