我想要读取的CSV文件不适合主内存.如何读取它的几个(~10K)随机行并对所选数据帧进行一些简单的统计?
你知道是否有办法让python random.sample与生成器对象一起工作.我试图从一个非常大的文本语料库中获取随机样本.问题是random.sample()引发以下错误.
TypeError: object of type 'generator' has no len()
Run Code Online (Sandbox Code Playgroud)
我在想,也许有一些方法itertools可以用来自某些东西来做这件事但却找不到任何有点搜索的东西.
一个有点组成的例子:
import random
def list_item(ls):
for item in ls:
yield item
random.sample( list_item(range(100)), 20 )
Run Code Online (Sandbox Code Playgroud)
UPDATE
按照MartinPieters的要求,我做了目前提出了三种方法的一些具体时机.结果如下.
Sampling 1000 from 10000
Using iterSample 0.0163 s
Using sample_from_iterable 0.0098 s
Using iter_sample_fast 0.0148 s
Sampling 10000 from 100000
Using iterSample 0.1786 s
Using sample_from_iterable 0.1320 s
Using iter_sample_fast 0.1576 s
Sampling 100000 from 1000000
Using iterSample 3.2740 s
Using sample_from_iterable 1.9860 s
Using …Run Code Online (Sandbox Code Playgroud) 我有一个collections.deque()元组,我想从中抽取随机样本.在Python 2.7中,我可以使用batch = random.sample(my_deque, batch_size).
但是在Python 3.4中提出了这个问题 TypeError: Population must be a sequence or set. For dicts, use list(d).
什么是最好的解决方法,或推荐的方法从Python 3中的双端队列中有效地采样?