본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
EPL과 유튜브 데이터로 배우는 DuckDB

DuckDB + Python: SQL로 CSV 파일 다루기 part 1

by 아참형인간 2026. 6. 20.

https://product.kyobobook.co.kr/detail/S000220221456

 

LUVIT EPL과 유튜브 데이터로 배우는 DuckDB | 이기준 - 교보문고

LUVIT EPL과 유튜브 데이터로 배우는 DuckDB | 복잡한 데이터 분석 흐름을 더 단순하게 만드는 DuckDB 최근 주목받고 있는 DuckDB를 활용해 SQL 기반 데이터 분석과 실전 프로젝트를 학습할 수 있도록 구

product.kyobobook.co.kr

 

 

대용량 CSV나 Parquet 파일을 다룰 때는 보통 모든 데이터를 Pandas로 불러온 뒤 컴퓨터가 버텨주기를 기대합니다.

하지만 데이터를 데이터베이스로 가져오지 않고도 파일에 직접 SQL 쿼리를 실행할 수 있다면 어떨까요? 바로 DuckDB가 이를 가능하게 합니다.

이 튜토리얼에서는 다음 내용을 배웁니다.

  • DuckDB 설치
  • SQL을 사용한 CSV 파일 조회
  • 데이터 필터링 및 집계
  • 결과를 Pandas DataFrame으로 내보내기

왜 DuckDB인가?

DuckDB는 OLAP(Online Analytical Processing) 워크로드를 위해 설계된 분석용 데이터베이스입니다. 전통적인 데이터베이스와 달리 Python 프로세스 내부에서 실행되며 파일을 직접 조회할 수 있습니다.

주요 장점은 다음과 같습니다.

  • 서버 설정이 필요 없음
  • CSV 및 Parquet 파일 지원
  • 매우 빠른 성능
  • Pandas 및 Polars와 통합 가능
  • 표준 SQL 사용 가능

Step 1: DuckDB 설치

pip install duckdb pandas pyarrow

Step 2: 샘플 데이터 생성

다음과 같은 CSV 파일이 있다고 가정해 보겠습니다.

sales.csv

id,product,category,price
1,Laptop,Electronics,1500
2,Mouse,Electronics,25
3,Chair,Furniture,120
4,Desk,Furniture,300
5,Keyboard,Electronics,80

Step 3: SQL로 CSV 파일 조회하기

Python 파일이나 Jupyter Notebook을 생성합니다.

import duckdb

result = duckdb.sql("""
SELECT *
FROM 'sales.csv'
""")

print(result.df())

출력 결과:

여기서 주목할 점은 데이터베이스에 데이터를 가져오는 과정이 전혀 필요하지 않았다는 것입니다.

Step 4: 행 필터링하기

query = """
SELECT product, price
FROM 'sales.csv'
WHERE price > 100
"""

result = duckdb.sql(query)

print(result.df())

출력 결과:

Step 5: 데이터 집계하기

카테고리별 평균 가격을 계산해 보겠습니다.

query = """
SELECT
    category,
    AVG(price) AS avg_price,
    COUNT(*) AS total_products
FROM 'sales.csv'
GROUP BY category
"""

df = duckdb.sql(query).df()

print(df)

출력 결과:

Step 6: 결과를 Pandas로 변환하기

df = duckdb.sql("""
SELECT *
FROM 'sales.csv'
WHERE category='Electronics'
""").df()

print(df)

출력 결과:

결론

DuckDB는 데이터 분석을 매우 단순하게 만들어 줍니다. 몇 줄의 Python 코드와 SQL만으로 CSV 및 Parquet 파일을 직접 조회하고, 집계를 수행하며, 데이터셋을 조인하고, 결과를 Pandas로 내보낼 수 있습니다. 이 모든 과정에서 별도의 데이터베이스 서버를 구축할 필요가 없습니다.

데이터를 다루는 업무를 하고 있다면 DuckDB는 반드시 도구 상자에 추가할 가치가 있는 훌륭한 도구입니다.

 

<출처: https://medium.com/@omalehappiness1/duckdb-python-query-csv-file-with-sql-8c03d7562d09>

댓글