logo
Loading...

資料過於龐大,無法讀進python or R 內? - Cupoy

老師您好我目前有一組row data需要合併100個CSV,每個CSV內有21個變數由於資料過於龐大...

ml100,讀取資料

資料過於龐大,無法讀進python or R 內?

2019/07/04 上午 09:54
機器學習共學討論版
李元皓
觀看數:55
回答數:3
收藏數:0
ml100
讀取資料

老師您好


我目前有一組row data需要合併100個CSV,每個CSV內有21個變數

由於資料過於龐大沒辦法用迴圈的方式將所有資料讀進來

請問有無快速批次讀取資料,亦或是其他的方法能夠處理這樣的問題?


謝謝

回答列表

  • 2019/07/04 下午 05:57
    Jimmy
    贊同數:2
    不贊同數:0
    留言數:0

    Hi 元皓!


    如果你會寫 R 的話,要讀取大型 csv 檔, fread 套件是你的好幫手喔!

    https://www.rdocumentation.org/packages/data.table/versions/1.12.2/topics/fread

  • 2019/07/04 下午 11:29
    Seanyu.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) 

    ```