我正在處理大型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