데이터 저장은 데이터 과학의 세계에서 끊임없는 토론의 주제입니다. 🌍 오늘은 두 가장 인기 있는 데이터 저장 형식, Parquet과 CSV를 비교해보려고 합니다. 각각의 형식이 어떤 상황에 가장 적합한지, 그리고 데이터 과학자와 분석가들이 왜 특정 형식을 선호하는지 살펴보겠습니다. 🧐
이 포스팅을 통해 각 형식의 장점을 탐구하고, 실제 Python 코드를 통해 AWS 클라우드로의 저장 과정을 단계별로 알아보겠습니다.
Parquet
Parquet 파일: 분석가의 최적화된 선택 Parquet 형식은 ‘분석 친화적’이라는 명성에 걸맞게, 빅데이터를 다룰 때 눈부신 성능을 발휘합니다. 이진 형식의 Parquet은 데이터를 컬럼별로 저장하며, 각 컬럼의 데이터 유형에 가장 효율적인 압축 방식을 적용합니다. 이는 특히 대용량의 데이터를 빠르게 읽고 쓰는 데 이점을 제공하죠.
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
import boto3
from io import BytesIO
# 데이터 프레임을 생성하고 Parquet 파일로 변환
df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35]
})
table = pa.Table.from_pandas(df)
buffer = BytesIO()
pq.write_table(table, buffer)
# S3에 저장
s3_client = boto3.client('s3')
bucket_name = 'your-bucket-name'
parquet_file_name = 'data.parquet'
s3_client.put_object(Bucket=bucket_name, Key=parquet_file_name, Body=buffer.getvalue())
이 코드는 pyarrow 라이브러리를 이용해 데이터프레임을 Parquet으로 변환하고, boto3의 put_object 함수를 사용해 S3 버킷에 바로 업로드합니다.
CSV
CSV 파일: 범용성과 접근성의 대명사 반면, CSV는 텍스트 기반으로 데이터를 쉼표로 구분하여 저장하는 형식입니다. 이는 사람이 직접 읽고 이해할 수 있으며, 대부분의 프로그래밍 언어와 데이터 분석 도구에서 널리 지원되는 형식입니다. 간단하고 이해하기 쉬운 CSV는 작업의 빠르고 효율적인 진행을 돕습니다. 😌
import pandas as pd
import boto3
from io import StringIO
# 데이터 프레임을 생성하고 CSV 문자열로 변환
df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35]
})
csv_buffer = StringIO()
df.to_csv(csv_buffer, index=False)
# S3에 저장
s3_client = boto3.client('s3')
bucket_name = 'your-bucket-name'
csv_file_name = 'data.csv'
s3_client.put_object(Bucket=bucket_name, Key=csv_file_name, Body=csv_buffer.getvalue())
이 코드는 Pandas to_csv 메서드를 사용해 데이터프레임을 CSV 문자열로 변환하고, 이를 S3 버킷에 업로드합니다
결국, 선택은 여러분의 데이터의 특성과 요구에 달려 있습니다. 대규모 데이터셋에 복잡한 데이터 처리가 필요하다면 Parquet이 당연한 선택일 것입니다. 반면에, 간단한 작업이나 빠른 작업이 필요한 경우, 혹은 데이터를 쉽게 읽고 싶을 때는 CSV가 여전히 유용할 수 있습니다. 🤔 데이터의 세계는 다양하고 복잡하지만, 올바른 도구를 선택함으로써 여러분의 데이터를 더욱 빛나게 만들 수 있습니다. ✨
'프로그래밍 언어(Programming Languages) > 파이썬(Python)' 카테고리의 다른 글
[Redis] Redis 파이썬 클래스 - 메모리 내 데이터 처리의 마법✨ (23) | 2023.11.16 |
---|---|
[Python] 🎒 Python의 컬렉션 상자들: 어떤 상자를 언제 써야 할까요? 📦 (29) | 2023.11.15 |
[Python] Virtual Environment 마스터하기 (4) | 2023.11.12 |
[Python] 파이썬 f-string 활용법 (4) | 2023.11.11 |
[Redis] 초보자를 위한 Redis 입문하기 📈🗂 (23) | 2023.11.10 |