웹 광고 클릭률 예측 AI 경진대회

RAM 사용량 감소를 위한 방법

2024.05.08 12:14 1,365 조회

이번 대회에서 사용할 데이터는 2,800만 개의 행을 포함하고 있으며, 문자열이 포함된 열로 인해 CSV 파일의 크기가 7GB를 초과합니다.

전처리를 진행하려면 최소 70GB 이상의 RAM이 필요합니다. 충분한 RAM이 확보되어 있다면 문제가 없지만, 그렇지 않다면 데이터를 전부 불러오는 것이 불가능할 수 있습니다.


그래서, duckdb 라이브러리를 활용하여, 데이터 중 일부 데이터만 불러오는 방법을 공유합니다.

RAM 용량을 초과하지 않는 선에서 LIMIT 변수를 조정하시면 됩니다.

import duckdb
import pandas as pd

train_path = './data/train.csv'

con = duckdb.connect()

df = con.query(f"""(SELECT *
                        FROM read_csv_auto('{train_path}')
                        WHERE Click = 0
                        ORDER BY random()
                        LIMIT 30000)
                        UNION ALL
                        (SELECT *
                        FROM read_csv_auto('{train_path}')
                        WHERE Click = 1
                        ORDER BY random()
                        LIMIT 30000)""").df()


con.close()

df.head()
로그인이 필요합니다
0 / 1000
진현림
2024.05.08 16:10

제가 처한 문제상황에 딱 들어 맞는 해법이네요. 좋은 솔루션 알려주셔서 감사합니다!!

병또먹
2024.05.08 22:13

감사합니다

콜리김
2024.05.10 10:31

이 문제때문에 고민하고있었는데 ! 
솔루션 주셔서 감사합니다 !