我如何计算每个箱子中的点数?
how do I count the number of points in each bin?
我有一个带有 x,y 坐标的 pandas df,想知道如何计算每个 bin 中的点数。我知道您可以使用 plt.hist2d()
将其可视化,但我想制作某种 array/matrix 来保存每个 bin 的计数。
我使用以下方法对 x,y 坐标进行分箱:
bins = (df // .1 * .1).round(1).stack().groupby(level=0).apply(tuple)
其中 df
是:
x y
-2.319059 -4.057801
1.514416 -2.325972
-2.642251 -1.004367
-1.486476 -2.535654
-0.844162 -3.078726
-2.376592 -1.471239
-3.139233 0.449457
:
etc
和bins
是:
0 (-2.4, -4.1)
1 (1.5, -2.4)
3 (-2.7, -1.1)
4 (-1.5, -2.6)
6 (-0.9, -3.1)
7 (-2.4, -1.5)
8 (-3.2, 0.4)
:
etc
我尝试使用以下方法创建一个空的 numpy 数组:
x_size = int(max(list(df['x'])))
y_size = int(max(list(df['y'])))
my_array = np.zeros((x_size+1,y_size+1), np.int16)
但我不确定如何将 bin 坐标与数组坐标相关联以便对它们进行计数..
只需groupby
你的垃圾箱并使用GroupBy.count
方法
bins.groupby(bins).count()
我有一个带有 x,y 坐标的 pandas df,想知道如何计算每个 bin 中的点数。我知道您可以使用 plt.hist2d()
将其可视化,但我想制作某种 array/matrix 来保存每个 bin 的计数。
我使用以下方法对 x,y 坐标进行分箱:
bins = (df // .1 * .1).round(1).stack().groupby(level=0).apply(tuple)
其中 df
是:
x y
-2.319059 -4.057801
1.514416 -2.325972
-2.642251 -1.004367
-1.486476 -2.535654
-0.844162 -3.078726
-2.376592 -1.471239
-3.139233 0.449457
:
etc
和bins
是:
0 (-2.4, -4.1)
1 (1.5, -2.4)
3 (-2.7, -1.1)
4 (-1.5, -2.6)
6 (-0.9, -3.1)
7 (-2.4, -1.5)
8 (-3.2, 0.4)
:
etc
我尝试使用以下方法创建一个空的 numpy 数组:
x_size = int(max(list(df['x'])))
y_size = int(max(list(df['y'])))
my_array = np.zeros((x_size+1,y_size+1), np.int16)
但我不确定如何将 bin 坐标与数组坐标相关联以便对它们进行计数..
只需groupby
你的垃圾箱并使用GroupBy.count
方法
bins.groupby(bins).count()