はじめに
業務で Parquet ファイルの中身を確認したかったので CSV に変換して確認しました。pandas を使うと簡単に CSV に変換できました。備忘録として残しておきます。
なお Parquet は大規模なデータセットを扱う際に CSV よりもファイルサイズが小さく、データの読み込みが高速であるという利点があります。そのためデータ分析でよく利用されていますが、圧縮ファイルのためそのままでは読むことができません。
デモ環境
Python 3.12
pandas 2.3.3
pyarrow 21.0.0
fastparquet 2024.11.0
サンプルコード
read_parquet 関数に Parquet ファイルパスを渡し、to_csv 関数で出力するだけです。
main.py
import pandas as pd
def parquet_to_csv(parquet_file_path, csv_file_path):
"""
Parquet ファイルを CSV ファイルに変換する
"""
df = pd.read_parquet(parquet_file_path)
df.to_csv(csv_file_path, index=False, encoding='utf-8')
def main():
parquet_file_path = 'data/input.parquet'
csv_file_path = 'data/output.csv'
parquet_to_csv(parquet_file_path, csv_file_path)
print(f'変換完了: {parquet_file_path} -> {csv_file_path}')
if __name__ == '__main__':
main()
以下のサイトから Parquet ファイルのサンプルをダウンロードできます。作成する手間が省けました。
必要なライブラリを pyproject.toml に記述します。
pyproject.toml
[project]
name = "parquet-demo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"pandas",
"pyarrow",
"fastparquet"
]
実行結果
$ uv run main.py
変換完了: data/input.parquet -> data/output.csv
$ head -n 5 data/output.csv
model,mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb
Mazda RX4,21.0,6,160.0,110,3.9,2.62,16.46,0,1,4,4
Mazda RX4 Wag,21.0,6,160.0,110,3.9,2.875,17.02,0,1,4,4
Datsun 710,22.8,4,108.0,93,3.85,2.32,18.61,1,1,4,1
Hornet 4 Drive,21.4,6,258.0,110,3.08,3.215,19.44,1,0,3,1
正常に CSV ファイルに変換できました。
参考