資料過於龐大,無法讀進python or R 內?
2019/07/04 上午 09:54
機器學習共學討論版
李元皓
觀看數:55
回答數:3
收藏數:0
ml100
讀取資料
老師您好
我目前有一組row data需要合併100個CSV,每個CSV內有21個變數
由於資料過於龐大沒辦法用迴圈的方式將所有資料讀進來
請問有無快速批次讀取資料,亦或是其他的方法能夠處理這樣的問題?
謝謝
回答列表
-
2019/07/04 下午 05:57Jimmy贊同數:2不贊同數:0留言數:0
Hi 元皓!
如果你會寫 R 的話,要讀取大型 csv 檔, fread 套件是你的好幫手喔!
https://www.rdocumentation.org/packages/data.table/versions/1.12.2/topics/fread
-
2019/07/04 下午 11:29Seanyu.TW贊同數:1不贊同數:0留言數:0
R 的話,建議使用 fread + lapply 來操作; Python 的話,使用 pd.concat([pd.read_csv(i) for i in path], axis=0) 這樣會快很多唷 :)
-
2019/07/08 上午 10:37張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
嗨,如果只是要部份讀取的話 Python pandas 的 read_csv 有一個參數是「skiprows」,可以跳過某些列不要讀取,可以搭配 lambda + % 來使用:
```
n = 100 # every 100th line = 1% of the lines
df = pd.read_csv(filename, header=0, skiprows=lambda i: i % n != 0)
```
如果要真的讀進來的話,且你確保你的記憶體是夠大的,可以這樣用 chunksize 分批存取:
```
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
process(chunk)
```