【问题标题】:How do I sample a dataset based on a column value? [duplicate]如何根据列值对数据集进行采样? [复制]
【发布时间】:2020-08-18 20:58:47
【问题描述】:

我有一个包含 150,000 个数据点的数据集。每个数据点都有几个字段,包括一个值列。我想对数据集进行采样,以便选择具有较高值的​​行比具有较低值的项目更有可能被选中。因此,根据下面的示例,在新数据集中,值 1000 的项目将比值为 5 的项目多得多。

我不确定 Pandas 执行此操作的方式。请问有人可以帮忙吗?

╔══════════════════════════════════════╗
║ id    description    number    value ║
╠══════════════════════════════════════╣
║ 0   A           1           20       ║
║ 1   A           11          50       ║
║ 2   A           1           10       ║
║ 3   A           14          1000     ║
║ 4   A           1           20       ║
║ 5   A           13          50       ║
║ 6   A           1           800      ║
║ 7   A           1           30       ║
║ 8   A           13          5        ║
║ 9   A           12          500      ║
╚══════════════════════════════════════╝

非常感谢大家的帮助!

【问题讨论】:

    标签: python pandas data-science sampling


    【解决方案1】:

    如果您想从两者中采样,您可以使用 groupby 函数为每个值采样不同数量的元素。 weights 参数可用于为不同的值获取不同的权重。 Documentation

    df_values = df.groupby("value").sample(n=100, weights=[1, 2])
    

    【讨论】:

    • 感谢您的回复!
    【解决方案2】:

    您应该使用 pandas sample 方法并提供一个 weights 参数,在这种情况下将是您的 df["value"]。见this documentation

    df.sample(n=10, weights=df["value"])
    

    【讨论】:

    • 感谢这个例子 - 我不知道!我试试看
    【解决方案3】:

    您可以使用以权重作为列值的样本方法

    df.sample(n,weights="value")
    

    【讨论】:

    • 感谢这个例子 - 我不知道!
    猜你喜欢
    • 2019-11-27
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 2020-10-27
    • 2018-10-29
    • 1970-01-01
    • 2017-05-20
    • 2019-03-19
    相关资源
    最近更新 更多