我可以使用熊猫来创建有偏差的样本吗?

问题描述 投票:0回答:1

我的代码使用一列称为“预订状态”的列,“是”为1,“否”为0(还有许多其他列,信息将取决于预订状态而从中获取)-除了“是”以外,还有很多其他内容,因此我想用所有“是”和相同数量的“否”进行采样。

我使用时

samp = rslt_df.sample(n=298, random_state=1, weights='bookingstatus')

我收到错误:

ValueError:p中的非零条目少于大小

是否可以通过这种方式进行此示例?

pandas sample
1个回答
0
投票
如果我们有一些数据:

print(df) c1 c2 0 1 1 1 0 2 2 0 3 3 0 4 4 0 5 5 0 6 6 0 7 7 1 8 8 0 9 9 0 10

我们可能决定使用DataFrame.sample函数从中进行采样。默认情况下,该函数将采样而不进行替换。意思是,如果您指定的观察数大于初始数据集中的观察数,则会收到错误消息:

DataFrame.sample

根据您的情况,ValueError来自df.sample(20)
ValueError: Cannot take a larger sample than population when 'replace=False'
参数:

weights

用[[c1列作为我们的权重参数来解释df.sample(3,weights='c1')
ValueError: Fewer non-zero entries in p than size
文档,这意味着

c1列中具有较大值的行更可能被采样。具体来说,DataFrame.sample函数不会从此列中选择零值。我们可以使用以下任一方法解决此错误。


方法1:
将replace设置为true:

sample

方法2:
确保m1 = df.sample(3,weights='c1', replace=True) print(m1) c1 c2 0 1 1 7 1 8 0 1 1 参数等于或小于

c1列中的1s:

n如果您决定使用此方法,则您实际上不会进行抽样。您实际上只是过滤掉
c1
的值为0的任何行。
© www.soinside.com 2019 - 2024. All rights reserved.