1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Parquet形式をCSVに変換する

1
Posted at

はじめに

業務で 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 ファイルに変換できました。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?