データ分析や機械学習に取り組んでいると、CSVファイル以外の形式に出会うことがあります。その中でも「Parquet」というファイル形式は、特に大量のデータを扱う現場でよく使われています。
でも、「Parquetって何?」「CSVと何が違うの?」「Pythonでどう扱うの?」という疑問を持っている方も多いのではないでしょうか。
この記事では、Parquetファイルの基本から、Pythonでの読み書き方法、可視化までを丁寧に解説します。CSVファイルとの違いや、どんな場面で便利なのかも具体例を交えて紹介します。
目次
Parquetファイルとは?
Parquet(パーケイ)ファイルは、Apache Parquetという列指向(columnar)のデータフォーマットで、Hadoopエコシステムの一部として開発されました。
特徴
- 列指向フォーマット:行単位ではなく列単位でデータを格納
- 高速な読み込み:必要な列だけを読み込むことで、I/Oを大幅に削減
- 圧縮効率が高い:同じ型のデータが続くため、圧縮しやすい
- 構造化データに強い:スキーマ情報を持つため、型が保持される
Parquetファイルはどんな時に使う?
具体例として、100万件以上の売上データを分析する場合を考えてみましょう。
CSVで保存すると…
- ファイルサイズが巨大になる(数百MB~GB)
- 読み込みに時間がかかる
- データ型が保存されない(数値が文字列になることも)
一方、Parquetで保存すると…
- ファイルサイズが小さくなる(圧縮されるため)
- 必要な列だけ読み込めるため、処理が速い
- データ型が保持されるので、再読み込みも安心
つまり、データ量が多くなるほどParquetの利点が大きくなります。
PythonでParquetファイルを扱う方法
Pythonでは、pandas
やpyarrow
ライブラリを使ってParquetファイルを簡単に扱うことができます。
まずは、必要なライブラリをインストールしましょう。
pip install pandas pyarrow
Parquetファイルの書き出し
CSVファイルをParquetに変換してみましょう。
import pandas as pd
# サンプルデータを作成
df = pd.DataFrame({
'商品名': ['りんご', 'みかん', 'ぶどう', 'バナナ'],
'価格': [120, 80, 150, 100],
'売上数': [30, 50, 20, 60]
})
# Parquet形式で保存
df.to_parquet('sales.parquet', engine='pyarrow')
Parquetファイルの読み込み
# Parquetファイルを読み込む
df_parquet = pd.read_parquet('sales.parquet', engine='pyarrow')
print(df_parquet)
CSVとのファイルサイズ比較
実際に100万行のデータを使って、CSVとParquetのサイズを比較してみましょう。
import numpy as np
# 大量データを生成
large_df = pd.DataFrame({
'商品ID': np.arange(1, 1000001),
'価格': np.random.randint(100, 500, size=1000000),
'数量': np.random.randint(1, 10, size=1000000)
})
# CSVとParquetで保存
large_df.to_csv('large.csv', index=False)
large_df.to_parquet('large.parquet', engine='pyarrow')
この2つのファイルを比較すると、CSVは約80MB、Parquetは約20MB程度になります(※PC環境により差はあります)。Parquetの圧縮効率の良さが分かりますね。
Parquetファイルの可視化(グラフ)
読み込んだParquetファイルを使って、売上個数の棒グラフを描いてみましょう。
import matplotlib.pyplot as plt
df = pd.read_parquet('sales.parquet', engine='pyarrow')
plt.bar(df['商品名'], df['売上数'])
plt.xlabel('商品名')
plt.ylabel('売上数')
plt.title('商品の売上個数')
plt.tight_layout()
plt.show()
このように、ParquetファイルでもPandasで普通のDataFrameとして扱えるので、グラフ描画も簡単です。
Parquetの注意点
便利なParquetですが、いくつか注意点もあります。
- Excelでは直接開けない(専用ツールやPythonなどが必要)
- JSONなどと違い、人間が直接中身を見るのは難しい
- ライブラリ依存がある(
pyarrow
やfastparquet
など)
とはいえ、データ分析や機械学習の文脈では、Parquetの使いやすさと効率性は非常に魅力的です。
まとめ:Parquetはデータ分析の強い味方
- Parquetは列指向・圧縮可能な高性能ファイル形式
- データ型が保持され、I/Oが高速
- Pythonなら
pandas
とpyarrow
で簡単に読み書きできる - CSVより軽量で、大量データに向いている
今後、大規模なデータを扱う予定がある方は、ぜひParquet形式に慣れておくと、作業効率が格段にアップします。