python - 数据帧中的平衡行样本与给定分类目标列的熊猫
问题描述
给定一个数据框,我的目标是对行进行采样,以使一列中的值尽可能平衡。假设我在下面有一个数据框,样本大小是3
,目标列是c
a | b | c
1 | 2 | 0
3 | 4 | 0
5 | 6 | 1
7 | 8 | 2
9 | 10| 2
11| 12| 2
可能的样本之一是
a | b | c
1 | 2 | 0
5 | 6 | 1
7 | 8 | 2
如果样本量不是唯一类数量的倍数,则可以有 1 个左右的差异。
我将如何在熊猫中解决这个问题?
编辑:提供了对我有用的解决方案
解决方案
我首先为 c 列的每个唯一值生成样本大小,以使其平衡。其余部分分布在前几个元素上
unique_values = df['c'].unique()
sample_sizes = [(k//len(df.columns))] * len(unique_values)
i = 0
while i < k%len(df.columns):
sample_sizes[i]+= 1
i= I+1
该位根据生成的样本大小生成样本
df2= pd.concat([df.loc[df['c'] == unique_values[i]].sample() for i in range(len(sample_sizes)) for j in range(sample_sizes[i])])
推荐阅读
- pandas - 尝试调用 fit_transform 时自定义类引发错误
- firebase - 使用什么标准将每日数据从 Firebase Crashlytics 传输到 Big-Query
- php - Guzzle 6 结果返回 HTTP 标头
- php - 如何解决 woocommerce - adaranth.com 重定向问题
- php - 连接mysql后多个搜索框的php代码
- python - 如何修复python错误(对象不可调用)
- ios - 带有自定义单元格的可扩展/可折叠 TableView 常见问题解答
- javascript - 如何从 json 数据中删除并在 React App 中显示纯文本
- c# - 如何在命令行中从 msbuild 配置 csc?
- keras - 将 keras.applications.resnet50 转换为 Sequential 会出错