当 'replace=False' 时,从 len 18000 的 Dask Dataframe 中采样 n= 2000 会产生错误 Cannot take a larger sample than population
Sampling n= 2000 from a Dask Dataframe of len 18000 generates error Cannot take a larger sample than population when 'replace=False'
我有一个从 csv 文件创建的 dask 数据框和 len(daskdf)
returns 18000 但是当我 ddSample = daskdf.sample(2000)
我得到错误
ValueError: Cannot take a larger sample than population when 'replace=False'
如果数据帧大于样本大小,我可以不放回地进行采样吗?
示例方法仅支持 frac=
关键字参数。参见 API documentation
您收到的错误来自 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'
解决方案
正如 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
在sample
方法中,将参数replace
更改为True
。
df.sample(samples, replace=True)
说明DataFrame的大小大于他们需要的样本数。所以这是一个临时解决方法。
也许关键是他想从原始数据框中提取行样本,所以恕我直言,我认为您应该指定 axis=0
从行中抽样。
我有一个从 csv 文件创建的 dask 数据框和 len(daskdf)
returns 18000 但是当我 ddSample = daskdf.sample(2000)
我得到错误
ValueError: Cannot take a larger sample than population when 'replace=False'
如果数据帧大于样本大小,我可以不放回地进行采样吗?
示例方法仅支持 frac=
关键字参数。参见 API documentation
您收到的错误来自 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'
解决方案
正如 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
在sample
方法中,将参数replace
更改为True
。
df.sample(samples, replace=True)
说明DataFrame的大小大于他们需要的样本数。所以这是一个临时解决方法。
也许关键是他想从原始数据框中提取行样本,所以恕我直言,我认为您应该指定 axis=0
从行中抽样。