python - 如何从另一个数据框中选择具有相同分布的数据
问题描述
我有两个关于病人和健康人的数据框。它们的大小不同,年龄分布也不同。我需要计算一些统计数据,但我需要根据年龄匹配的队列来做。这意味着我需要从一个数据集中随机选择与初始年龄分布相同的多次数据。
简单的例子。x
数组包含病人的年龄,而不是y
数组包含健康人的年龄。我创建了两个索引为的数据框id
import numpy as np
from numpy import random
x=random.randint(100, size=(1000))
y = random.randint(100, size=(700))
x_df = pd.DataFrame({'x':x})
y_df = pd.DataFrame({'y':y})
x_df['id'] = range(1, len(x_df) + 1)
x_df.set_index('id', inplace=True)
我想在两个数据集中随机选择多次相似的年龄分布。我的脚本如下:
result = []
exclude_hlthy = []
for i in set(x_df['x']):
sick_ppl = x_df.index[x_df['x'] == i].tolist()
L_sick = len(sick_ppl)
if L_sick == 0:
continue
hlth_peers = y_df[y_df.y == i]
L_healthy = hlth_peers.shape[0]
if L_healthy < len(sick_ppl):
pass
else:
hlthy_subsample = list(np.random.choice([x for x in hlth_peers.index if not x in exclude_hlthy],
L_sick, replace = False))
exclude_hlthy += hlthy_subsample
result += hlthy_subsample
我想从具有相同和相似(步骤+1 +2 ....)年龄分布的小型数据集中获取索引列表。我的脚本不起作用。在实际数据中,它只选择两个样本。
解决方案
推荐阅读
- javascript - 如何检查数组是否包含 Javascript 中 JSON 数据的值?
- node.js - 如何在nodejs中使函数同步
- reactjs - 当我在 redux saga 中提交表单数据时有时会返回成功有时不会
- flutter - Flutter:在小部件测试中未调用 Mapbox onMapCreated
- c# - CosmosDB 文档客户端 - 如何为查询隐式添加类型?
- little-man-computer - 对输入数字求和的程序不起作用
- r - 在无状态(谷歌云引擎)docker上保留来自R的永久日志的最佳方法是什么?
- php - 仅在结帐时禁用特定运输方式的支付网关
- amazon-web-services - 具有固定 IP 的 AWS 客户端 VPN
- c# - EpiServer 网站注销不再起作用