판다스 메모리 부족으로 데이터 분석이 멈춘다면
TuBrief 편집팀
2026년 7월 13일
0
컴퓨터/소프트웨어원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
판다스는 데이터를 한꺼번에 램에 올립니다. 16GB 램을 가진 노트북에서 20GB짜리 CSV를 열려고 하면 파이썬이 비명횡사하는 이유입니다. 데이터가 조금만 커져도 노트북이 멈추고 주피터 노트북 커널이 죽습니다. 매번 데이터를 샘플링하거나 컴퓨터를 업그레이드할 수는 없습니다.
대신 DuckDB를 쓰십시오. 이 녀석은 필요한 데이터만 조금씩 가져옵니다. 전체 데이터를 램에 올리지 않고, SQL 문법으로 필요한 부분만 훑습니다. 데이터 엔지니어들 사이에서 판다스의 대안으로 주목받는 이유가 있습니다.
데이터 분석 환경을 바꾸는 일은 생각보다 간단합니다. 기존에 쓰던 판다스 데이터프레임을 그대로 두고 엔진만 교체하십시오.
duckdb.sql() 함수로 필요한 조건과 집계를 적습니다. 실제 연산은 아직 일어나지 않습니다..df()를 호출할 때만 진짜 계산을 합니다.이 방식은 단순히 코드를 바꾸는 것 이상의 효율을 줍니다. 판다스에서 groupby를 할 때 램이 터지던 작업이, DuckDB에서는 디스크를 활용해 안정적으로 돌아갑니다.
대용량 데이터를 다루다 보면 램을 다 쓰고 프로그램이 죽는 상황이 발생합니다. 이를 막으려면 작업 환경에 가드레일을 설치해야 합니다.
스크립트 상단에 다음 코드를 넣으십시오.
import duckdb
con = duckdb.connect()
con.execute("SET memory_limit = '4GB'")
con.execute("SET temp_directory = './tmp'")
memory_limit은 DuckDB가 램을 얼마나 쓸지 정하는 한도입니다. 4GB로 설정하면 16GB 램을 가진 내 노트북에서도 시스템 전체가 얼어붙지 않습니다. 램이 부족하면 DuckDB는 자동으로 디스크 임시 파일에 데이터를 적습니다. 2023년 벤치마크에 따르면 140GB Parquet 파일을 처리할 때 DuckDB는 1.3GB 램만으로 작업을 마쳤습니다. 판다스라면 수십 기가바이트 램을 차지하다가 결국 죽었을 작업입니다.
데이터 분석에서 가장 짜증 나는 순간은 잘못된 형식 때문에 파싱이 멈추는 때입니다. CSV 파일을 불러올 때 타입이 맞지 않으면 분석은 시작도 못 합니다.
read_csv 함수를 쓸 때 다음 옵션을 켜십시오.
con.execute("""
SELECT * FROM read_csv('data.csv',
columns={'id': 'INTEGER', 'value': 'DOUBLE'},
store_rejects=true,
strict_mode=false)
""")
이렇게 하면 형식에 맞지 않는 데이터 때문에 전체 프로세스가 죽지 않습니다. 잘못된 행은 별도 테이블에 격리됩니다. 나중에 reject_errors 테이블만 따로 조회해서 왜 데이터가 깨졌는지 확인하면 됩니다.
분석은 도구를 고치는 작업이 아닙니다. 데이터에서 인사이트를 뽑아내는 일입니다. 램 때문에 코드를 수십 번 다시 돌리는 일을 멈추고, 엔진을 바꿔 처리 효율부터 확보하십시오.