에코프로.AI

[Python] pickle vs parquet 본문

카테고리 없음

[Python] pickle vs parquet

AI_HitchHiker 2024. 11. 7. 18:54

 

Python에서 pickle과 parquet은 데이터를 저장하고 교환하는 데 사용되는 두 가지 중요한 형식입니다. 
각각의 특징과 사용법에 대해 알아보겠습니다.

 


Pickle

Pickle은 Python 객체를 직렬화하고 역직렬화하는 데 사용되는 내장 모듈입니다1.

특징

  • Python 객체를 바이트 스트림으로 변환하여 저장하거나 네트워크를 통해 전송할 수 있습니다
  • 딕셔너리, 리스트, 클래스 인스턴스 등 거의 모든 Python 객체를 직렬화할 수 있습니다
  • Python에 특화된 형식으로, 다른 언어와의 호환성은 제한적입니다.

사용 예시

  • 이 코드는 딕셔너리를 pickle 형식으로 저장하고 다시 로드하는 과정을 보여줍니다.
import pickle

# 객체 생성
data = {'name': 'Alice', 'age': 30, 'city': 'New York'}

# 객체를 파일에 저장 (직렬화)
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)

# 파일에서 객체 로드 (역직렬화)
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)

print(loaded_data)

Parquet

Parquet은 열 기반 스토리지 형식으로, 대규모 데이터 처리에 최적화되어 있습니다

특징

  • 열 기반 저장 방식으로 데이터를 압축하여 저장 공간을 절약합니다
  • 빠른 쿼리 처리와 데이터 스키핑 기능을 제공합니다
  • 여러 프로그래밍 언어와 호환되며, 특히 빅데이터 분석에 적합합니다

사용 예시

  • 이 코드는 pandas를 사용하여 데이터프레임을 Parquet 형식으로 저장하고 다시 읽는 과정을 보여줍니다
import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'city': ['New York', 'San Francisco', 'London']
})

# Parquet 파일로 저장
df.to_parquet('data.parquet')

# Parquet 파일 읽기
loaded_df = pd.read_parquet('data.parquet')

print(loaded_df)
  • 추가옵션
df.to_parquet('data.parquet', index=False)  # index=Fasle (index를 저장안함)

_columns = ['자전거번호', '대여일자', '이용시간(분)', '이용거리(M)']
df_BikeRent_2023 = pd.read_parquet('G:\\내 드라이브\\DataSet\\서울특별시 공공자전거 대여이력 정보_2023.parquet', columns = _columns)

비교

  • Pickle은 Python 객체를 그대로 저장할 수 있어 편리하지만, 보안 위험이 있을 수 있습니다
  • Parquet은 대용량 데이터 처리에 더 적합하며, 다양한 빅데이터 도구와 호환됩니다


두 형식 모두 Python에서 쉽게 사용할 수 있으며, 각각의 장단점을 고려하여 적절한 상황에 활용하면 됩니다.

 

 

끝~