python - 从带有权重的 pandas DataFrame 中随机选择一行
问题描述
我正在尝试根据提供的权重从 pandas DataFrame 中随机选择一行。我尝试对这些参数使用 .sample() 方法,但无法使语法正常工作:
import pandas as pd
df = pd.DataFrame({
'label': [1,0,1,-1],
'ind': [2,3,6,8],
})
df.sample(n=1, weights=[0.5, 0.4, 0.1], axis=0)
标签是 1,0 和 -1,我想为每个标签分配不同的权重以进行随机选择。
解决方案
您应该缩放权重,使其与预期分布相匹配:
weights = {-1:0.1, 0:0.4, 1:0.5}
scaled_weights = (pd.Series(weights) / df.label.value_counts(normalize=True))
df.sample(n=1, weights=df.label.map(scaled_weights) )
具有 10000 个样本的测试分布
(df.sample(n=10000, replace=True, random_state=1,
weights=df.label.map(scaled_weights))
.label.value_counts(normalize=True)
)
输出:
1 0.5060
0 0.3979
-1 0.0961
Name: label, dtype: float64
推荐阅读
- android - 构建发布 APK 时的 Android Gradle 插件警告
- java - 如何覆盖文本文件特定部分的整数?
- python - 有条件的减少
- java - 如何在 IntelliJ IDEA 插件 DevKit 中从我的操作中显示 ColorPicker?
- android - 动态密钥 json 从 WebService 获取响应?
- swift - 如何在swift中使用字典设置多部分“withname”?
- routes - 如何在不使用`as`方法的情况下使用具有组前缀的资源路由
- php - 如何在 WordPress 的“functions.php”中有条件地加载 JavaScript 脚本?
- python - 按值排序的多索引 - Pandas
- react-native - 显示加载器,直到实时链接图像未完全加载 React native 0.58