我正在处理大型CSV。我怎样才能随机抽取一行记录 - 比如说总共200行 - 并将它们重新组合为一个与原始结构相同的CSV文件?从CSV采样随机行
0
A
回答
1
我想使用的程序如下:
- 生成和0之间200个唯一编号在CSV文件的行数。
- 阅读CSV文件的每一行,并记录您正在阅读的行号。如果其行号与上述数字中的一个匹配,则输出它。
1
使用Resevoir Sampling随机抽样技术,不要求所有记录在内存中或实际记录的数量是已知的。有了它,您可以一个接一个地记录您的记录,并将它们概率性地选入样本。一旦流被用尽,输出最终的样本记录。该技术保证流中的每个记录与最终样本中的相同概率。也就是说,它会生成一个简单的随机样本。
0
您可以使用随机模块的random.sample方法随机化线偏移列表,如下所示。
import random
# Fetching line offsets.
# Courtesy: Adam Rosenfield's tip about how to read a HUGE text file.
# http://stackoverflow.com/questions/620367/
# Read in the file once and build a list of line offsets
line_offset = []
offset = 0
for line in file:
line_offset.append(offset)
offset += len(line)
file.seek(0)
# Part where you pick the random lines and copy to your new file
# My 2 cents.
randoffsets = random.sample(line_offset, 200)
with open('your_file') as f:
for k in randoffsets:
f.seek(k)
f.readline() # and append to your new file
你可以尝试使用linecache它是否适合你,但因为linecache将整个文件读取到内存中,我不知道它会如何为6GB的文件工作。
相关问题
- 1. MATLAB - 采样随机值
- 2. 随机采样与熊猫数据帧
- 3. R中的多个随机采样
- 4. CSV阅读器和随机样本
- 5. 从包含NAs的data.frame的每一列随机采样
- 6. 随机抽样完成行
- 7. 从CSV加载的随机样本与熊猫
- 8. 如何使用OpenCV在随机森林中停止随机采样?
- 9. 采摘随机在python
- 10. 使用动态采样计数对采样进行采样
- 11. 约束n维空间的高效随机采样
- 12. 没有任何重叠的随机重新采样
- 13. 二维numpy数组的加权随机采样
- 14. 复制分层随机采样无需替换R
- 15. 像素网格中非相邻单元的随机采样
- 16. Python在很大的列表上很慢的随机采样
- 17. 熊猫:使用列值的随机采样替换NaN
- 18. 采样随机浮点数在numpy范围内
- 19. 优化随机访问双线性采样
- 20. 音频采样率时机
- 21. 如何随机采样具有唯一列值的数据帧行
- 22. 如何使用Spark Dstreams进行简单的随机采样?(pyspark使用spark 1.6.1)
- 23. 从CSV中为特定列随机选择一行
- 24. CSV随机存取; C#
- 25. jmeter CSV停止采样错误
- 26. 从数据采样
- 27. 如何采取随机单词的句子后,随机指标
- 28. Python熊猫随机抽样行
- 29. 从随机样本中写出
- 30. Android本机录音机采样率
你指的是哪种语言? – Premraj 2011-03-22 14:29:36
我们谈论的CSV有多大?大到几MB,或者大到几GB? – SWeko 2011-03-22 14:31:10
它需要的随机程度如何? – 2011-03-22 14:45:51