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