我有一个大数据框,我想根据target列值上的值进行采样,该值是二进制的:0/1
我想在“目标”列中提取相同数量的具有 0 和 1 的行。我正在考虑使用 Pandas 采样函数,但不确定如何为基于target列的数据框声明我想要的两个类中相同数量的样本。
我正在考虑使用这样的东西:
df.sample(n=10000, weights='target', random_state=1)
Run Code Online (Sandbox Code Playgroud)
不确定如何编辑它以在列中获得 5k1's和 5k 的10k 条记录。任何帮助表示赞赏!0'starget
Vai*_*ali 12
您可以按目标对数据进行分组,然后进行采样,
df = pd.DataFrame({'col':np.random.randn(12000), 'target':np.random.randint(low = 0, high = 2, size=12000)})
new_df = df.groupby('target').apply(lambda x: x.sample(n=5000)).reset_index(drop = True)
new_df.target.value_counts()
1 5000
0 5000
Run Code Online (Sandbox Code Playgroud)
Ahm*_*mad 12
您可以使用DataFrameGroupBy.sample方法,如下所示:
sample_df = df.groupby("target").sample(n=5000, random_state=1)
Run Code Online (Sandbox Code Playgroud)
还发现这是一个很好的方法:
df['weights'] = np.where(df['target'] == 1, .5, .5)
sample_df = df.sample(frac=.1, random_state=111, weights='weights')
Run Code Online (Sandbox Code Playgroud)
frac根据您想要从原始数据帧返回的数据百分比更改 的值。
| 归档时间: |
|
| 查看次数: |
9102 次 |
| 最近记录: |