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)
假设我的数据呈正态分布,我在我的数据区域中定义了一个 伪 置信区域,仅考虑彩色点。我调用上限 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)