从 len 18000 的 Dask 数据帧中采样 n= 2000 会产生错误当“replace=False”时不能采用比总体更大的样本

mob*_*cdi 17 python dask

我有一个从 csv 文件创建的 dask 数据框并len(daskdf)返回 18000 但是当ddSample = daskdf.sample(2000)我收到错误时

ValueError: Cannot take a larger sample than population when 'replace=False'
Run Code Online (Sandbox Code Playgroud)

如果数据框大于样本大小,我可以在不替换的情况下进行采样吗?

MRo*_*lin 7

示例方法仅支持frac=关键字参数。请参阅API 文档

您得到的错误来自 Pandas,而不是 Dask。

In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'x': [1]})
In [3]: df.sample(frac=2000, replace=False)
ValueError: Cannot take a larger sample than population when 'replace=False'
Run Code Online (Sandbox Code Playgroud)

解决方案

正如 Pandas 错误所暗示的那样,考虑替换抽样

In [4]: df.sample(frac=2, replace=True)
Out[4]: 
   x
0  1
0  1

In [5]: import dask.dataframe as dd
In [6]: ddf = dd.from_pandas(df, npartitions=1)
In [7]: ddf.sample(frac=2, replace=True).compute()
Out[7]: 
   x
0  1
0  1
Run Code Online (Sandbox Code Playgroud)