데이터분석

DuckDB-3 (Parquet 및 Copy)

DEDS 2025. 4. 10. 09:46
728x90
반응형

Parquet 파일 생성 및 조회

우선 Parquet 파일이 없으면 생성부터 시작합니다.

import pandas as pd

# 예시 DataFrame
df = pd.DataFrame({
    'region': ['Seoul', 'Busan', 'Seoul', 'Incheon', 'Busan', 'Seoul'],
    'sales': [100, 200, 150, 180, 210, 170]
})

# Parquet 저장
df.to_parquet("sales.parquet", index=False)

 

Parquet 파일 조회하는 예입니다.

import duckdb

# DuckDB에서 Parquet 읽기 (Pandas 없이)
query = """
    SELECT region, COUNT(*) AS cnt, AVG(sales) AS avg_sales
    FROM 'sales.parquet'
    GROUP BY region
    ORDER BY cnt DESC
"""

result = duckdb.query(query).to_df()
result ## output이 없으면 print로 출력

colab 출력 결과

 

 

 

지역별 Sales 순위로 구하는 분석함수 사용 예입니다.

query = """
    SELECT *,
           RANK() OVER (PARTITION BY region ORDER BY sales DESC) AS rank_in_region
    FROM 'sales.parquet'
    WHERE sales >= 150
"""

df = duckdb.query(query).to_df
df

colab 출력 결과

 

폴더 내 파일 여러개 조회

# 폴더 내 모든 parquet 파일을 분석
duckdb.query("""
    SELECT * FROM 'data/*.parquet'
""").to_df()
# data파일내 여러개 parquet 파일 조회

 

Copy 로 출력 파일 생성

import duckdb

# 추출, 변환 및 로드
query = """
    COPY (
         SELECT *,
           RANK() OVER (PARTITION BY region ORDER BY sales DESC) AS rank_in_region
    FROM 'sales.parquet'
    WHERE sales >= 150
    ) TO 'output.csv' (FORMAT CSV, HEADER TRUE)
"""
duckdb.query(query)
print ( "ETL 작업이 완료되었습니다. 데이터가 'output.csv'에 저장되었습니다." )

parquet 파일을 가공하여 output.csv 파일로 생성하는 코드입니다.

 

DuckDB 소개는 이것으로 마치도록 하겠습니다. 웬만한 작업은 db 별도 설치 없이 작업이 가능하니 많은 분들

잘 활용하시기 바랍니다.

 

상세한 옵션들은 공식 홈페이지를 참고하세요.

https://duckdb.org/docs/stable/

728x90
반응형

'데이터분석' 카테고리의 다른 글

분석을 위한 통계(Statistics)1  (0) 2025.04.10
Colab 한글폰트 문제 해결  (0) 2025.04.10
DuckDB-2(테이블 활용)  (0) 2025.04.09
DuckDB-1 (파일SQL)  (0) 2025.04.08
pandas 컬럼명 변경  (0) 2025.04.08