Python) csv 파일을 parquet 파일로 만드는 방법
2022. 9. 3. 21:03ㆍ분석 Python/구현 및 자료
특정 파일을 paruqet으로 만드는 방법에 대해서 알아야 해서 정리해봅니다.
Library Load
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
TXT (CSV) FILE TO Parquet file 변환
csv_file = "./ml-25m/movies.csv"
parquet_file = "./my.parquet"
chunksize = 500
csv_stream = pd.read_csv(csv_file, sep=',', chunksize=chunksize, low_memory=False)
chunk =next(iter(csv_stream))
chunk로 schema를 추정할 수 있지만, 미리 정해져 있다면, 그 형식에 맞게 하는 것이 좋습니다.
parquet_schema_old = pa.Table.from_pandas(df=chunk).schema
parquet_schema_new = pa.schema([
('movieId', pa.int64()),
('title', pa.string()),
('genres', pa.string()),
])
parquet_schema_old == parquet_schema_new
아래 코드를 이용해서 csv를 부분적으로 읽어서 parquet 파일에 쌓을 수 있습니다.
chunksize = 500
csv_stream = pd.read_csv(csv_file, sep=',', chunksize=chunksize, low_memory=False)
for i, chunk in enumerate(csv_stream):
print("Chunk", i)
if i == 0:
# Guess the schema of the CSV file from the first chunk
parquet_schema = parquet_schema_new
# Open a Parquet file for writing
parquet_writer = pq.ParquetWriter(parquet_file, parquet_schema, compression='snappy')
# Write CSV chunk to the parquet file
table = pa.Table.from_pandas(chunk, schema=parquet_schema)
parquet_writer.write_table(table)
else :
parquet_writer.close()
이렇게 특정 파일이 크거나 작은 데이터 파일을 parquet 파일로 변환하는 방법을 알아봤습니다.
한 가지 아쉬운 점은 기존 parquet 파일에 추가로 쌓을 수 있는 지는 확인을 못했습니다.
끝
Reference
https://stackoverflow.com/questions/26124417/how-to-convert-a-csv-file-to-parquet
https://stackoverflow.com/questions/47113813/using-pyarrow-how-do-you-append-to-parquet-file
728x90
'분석 Python > 구현 및 자료' 카테고리의 다른 글
[Pandas][꿀팁] string 데이터를 pandas data frame으로 바꾸기 (1) | 2022.09.09 |
---|---|
Python) Data Drift 탐지 KS로 구현해보기 (0) | 2022.09.03 |
Python) 특정 코드의 패턴 조합 찾기 (0) | 2022.08.28 |
[Python] 이산화된 공간 안에 속하는 좌표 찾기 (0) | 2022.05.19 |
Python) list와 nested list안에 값을 기준으로 병합하는 코드 (2) | 2022.05.06 |