我正在处理大型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. Mongo随机采样
- 2. 如何以随机顺序运行采样器/采样器组
- 3. 不使用随机采样()?
- 4. 构建为随机采样
- 5. MATLAB - 采样随机值
- 6. 从反伽玛分布随机生成随机采样C++
- 7. 如何从大文本文件中随机采样行 - 从命令行
- 8. R中的多个随机采样
- 9. 随机采样与熊猫数据帧
- 10. python中的随机通用采样GA
- 11. 随机地从一个数据组进行采样然后删除采样条目(R)
- 12. CSV阅读器和随机样本
- 13. 从包含NAs的data.frame的每一列随机采样
- 14. 从Python中的列表中随机采样函数的语法
- 15. pandas:根据采样政策从大CSV中读取一个小的随机样本
- 16. 随机抽样完成行
- 17. 从CSV加载的随机样本与熊猫
- 18. 如何使用OpenCV在随机森林中停止随机采样?
- 19. 采摘随机在python
- 20. 如何删除数据帧的随机采样行,以避免再次采样它们?
- 21. 随机抽样
- 22. 随机抽样
- 23. 随机抽样
- 24. 从csv输出一个随机记录?
- 25. 使用动态采样计数对采样进行采样
- 26. 随机子采样线在一个文件
- 27. 复制分层随机采样无需替换R
- 28. 采样和更换载体的随机元素,有条件
- 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