Pandas 中定义间隔的样本数据

Sample data from defined interval in Pandas

假设我的数据呈正态分布,我在我的数据区域中定义了一个 置信区域,仅考虑彩色点。我调用上限 ub 和下限 lb.

我想在那个椭圆内对我的数据进行采样,我是这样做的:

sampled_ids = pd_pca.loc[
    pd_pca.pc1.between(pd_pca_stats.loc['pc1', 'lb'], pd_pca_stats.loc['pc1', 'ub']) & \
    pd_pca.pc2.between(pd_pca_stats.loc['pc2', 'lb'], pd_pca_stats.loc['pc2', 'ub'])] \
.sample(10)

但是,上述方法并不完全正确,因为它是从正方形而不是椭圆中采样的。
您有从椭圆中抽取我的数据的好方法吗?

您需要为椭圆蒙版。假设它以 (x,y) 为中心,半轴为 (a,b),并假设椭圆的主轴遵循笛卡尔轴(否则您需要旋转)。

那你的面具就是

ellipse_mask = (pd_pca_stats.loc['pc1'] - x)**2/a**2 + (pd_pca_stats.loc['pc2'] - y)**2/b**2 <= 1
sampled_ids = pd_pca[ellipse_mask].sample(10)