CSVとParquetの違い
データの保存形式を理解する
以前、仮想通貨の価格データを分析しようとした際に、データの保存形式で悩みました。 仮想通貨の価格データは、1分足や約定履歴など細かい粒度で取得すると、数年分を蓄積するだけでもデータ量が大きくなります。
当初はCSVファイルで保存していましたが、データ量が増えるにつれて読み込み等の処理速度が気になるようになり、より効率的な保存形式を探していました。 そこで採用したのがParquetです。
本記事では、Parquetとは何か?CSVとは何が違うのか?大量のデータを扱う際になぜ適しているのか?を整理します。
CSVもParquetも「ファイル形式」
最初に整理しておきたいのが、CSVとParquetの位置付けです。
CSVもParquetも、データをファイルとして保存するときの「ファイル形式(ファイルフォーマット)」です。
例えば、普段使うファイルには次のようなものがあります。
data.csv
data.json
data.xlsx
それぞれ、データを「どのようなルール・構造でファイルに保存するか」が異なります。 Parquetも、これらと並ぶ保存形式の一つです。
CSVとは何か
CSVはComma-Separated Valuesの略で、日本語にすると「カンマで区切られた値」という意味です。 例えば、仮想通貨の価格データを次のように保存するとします。
timestamp,symbol,price,volume
2026-08-01 10:00:00,BTC,12000000,1.5
2026-08-01 10:01:00,BTC,12010000,0.8
2026-08-01 10:02:00,BTC,12005000,2.1
1行目には、
timestamp
symbol
price
volume
という列名があります。 その下に、各時点のデータが1行ずつ並んでいます。
CSVの大きな特徴は、テキストとしてデータを保存していることです。 そのため、専用のソフトがなくてもテキストエディタで開けば内容を確認できます。
CSVのメリット
CSVの強みは、そのシンプルさです。 Excelなどの表計算ソフトはもちろん、Pythonをはじめとした多くのプログラミング言語や分析ツールから読み込めます。 人間がファイルを直接開いてデータの中身を確認することが可能です。
そのため、
- 少量のデータを保存する
- 他の人にデータを渡す
- とりあえずデータを書き出して確認する
- さまざまなソフトウェアとの互換性を重視する
といった用途では非常に便利です。
CSVの弱点
一方で、大量のデータを保存・分析しようとすると、CSVのシンプルさが弱点になることもあります。 例えば、先ほどのCSVでは、
2026-08-01 10:00:00,BTC,12000000,1.5
というレコードがすべて文字としてファイルに記録されています。 ファイル自体には「この列は整数」「この列は日時」といったデータ型の情報が記録されていません。 そのため、読み込む側でデータ型を指定したり、内容から推測したりする必要があります。
また、大量の数値データをテキストとして保存するため、後述するParquetと比較するとファイルサイズが大きくなりやすく、分析時の読み込みにも時間がかかることがあります。
さらに、分析に必要な特定の列だけを取得するといった処理も苦手です。CSVでは各レコード内に複数の列が並んでいるため、必要な列だけを使う場合でも、基本的にはファイル全体を解析しながら目的の列を取り出す必要があります。
Parquetとは何か
前述のとおり、ParquetもCSVと同じくデータをファイルとして保存するためのファイル形式です。 ただし、その設計思想はCSVと大きく異なります。 Parquetは一言で表すと、
大量のデータを効率よく保存し、分析することを意識して設計された列指向のファイル形式
です。 CSVのようにテキストエディタで直接開いて読むための形式ではなく、ソフトウェアから効率的に処理することを重視しています。
その結果、Parquetには次のような特徴があります。
- データをバイナリ形式で保持する
- ファイルにデータ型を保持できる
- 圧縮効率が高い
- 必要な列だけ効率よく読み込める
- 大量データの分析に向いている
一方で、
- テキストエディタで直接中身を読むのには向かない
- CSVほど構造が単純ではない
- 読み書きにはParquetに対応したソフトウェアやライブラリが必要
という弱点もあります。 このような差は、「行」と「列」のどちらを意識してデータを配置するかによって生じています。
CSVとParquetを「行指向・列指向」から理解する
例えば、次の4列を持つ仮想通貨の価格データがあるとします。
timestamp
symbol
price
volume
CSVでは、概念的には次のように1レコードずつデータが並びます。
timestamp1, BTC, price1, volume1
timestamp2, BTC, price2, volume2
timestamp3, BTC, price3, volume3
1行目に「ある時点のBTCの情報」がまとまり、その次に別の時点の情報が続きます。
これに対して、列指向のParquetは、イメージとしては次のように同じ列のデータをまとめて扱いやすい構造になっています。
timestamp
timestamp1
timestamp2
timestamp3
symbol
BTC
BTC
BTC
price
price1
price2
price3
volume
volume1
volume2
volume3
つまり、price列を指定することで
price1
price2
price3
...
のように、同じ列のデータをまとめて処理しやすくなっています。
データ分析を行う際は、特定の列だけを抜き出して可視化したり、分析モデルに渡すことがよくあります。 データが行指向のCSVで保存されている場合、特定の列だけを効率的に読み込むことができません。 一方で、列指向のParquetで保存されている場合、必要な列だけ選択して読み込むことができます。これにより、不要な情報を読み込む必要がなくなり、処理速度も速くなります。
Parquetはファイルサイズが小さくなりやすい
Parquetのもう一つ大きな特徴が圧縮効率です。
例えば、symbol列を考えてみます。
BTC
BTC
BTC
BTC
...
同じ列には、同じ種類・似た性質のデータが集まりやすくなります。
priceなら数値が並び、timestampなら日時が並び、symbolならBTCやETHなどの文字列が並びます。
このように性質の似たデータがまとまっていると、その特徴に適したエンコーディングや圧縮を適用しやすくなります。 Parquetではこうした仕組みを利用して、データを効率的に保存します。 そのため、特に大量のデータでは、CSVよりParquetの方がファイルサイズを小さくできるケースが多くあります。
ただし、
「Parquetなら必ずCSVの何分の1になる」わけではありません。
圧縮率はデータの内容やデータ型、使用する圧縮方式などによって変わります。
Parquetはデータ型を保持できる
CSVとの違いとして、もう一つ分かりやすいのがデータ型です。 例えば、
timestamp,symbol,price,volume
2026-08-01 10:00:00,BTC,12000000,1.5
というCSVがあったとします。 人間が見れば、
timestampは日時symbolは文字列priceは整数volumeは小数
のように判断できます。 しかし、CSVそのものは基本的にテキストデータです。 読み込むソフトウェア側が、
2026-08-01 10:00:00は日時型で扱おう12000000は整数として扱おう1.5は小数として扱おう
と一つずつ判断する必要があります。
一方、Parquetはスキーマ情報を持つことができ、各列のデータ型をファイル内に保持できます。 大量のデータを何度も読み書きするようになると、この違いも扱いやすさにつながります。
CSVとParquetの比較
ここまでの違いをまとめると、次のようになります。
| 比較項目 | CSV | Parquet |
|---|---|---|
| 基本的な保存方法 | テキスト | バイナリ |
| 人間による可読性 | 高い | 低い |
| データ型 | ファイル自体には明示的な型情報を持たない | 型情報を保持できる |
| ファイルサイズ | 大きくなりやすい | 小さくなりやすい |
| 圧縮 | 外部圧縮などは可能だが、形式自体は単純 | 列指向を活かした効率的な圧縮に対応 |
| 大量データの読み込み | 不利になりやすい | 得意 |
| 特定列だけの読み込み | 効率面では不利 | 得意 |
| 対応ツール | 非常に多い | CSVほど普遍的ではない |
| 人間が直接確認 | 簡単 | 専用ツールなどが必要 |
| データ分析との相性 | 小規模なら十分 | 大規模な分析に強い |
CSVとParquetは、それぞれ強みがあり、用途に応じて使い分けることが重要です。 例えば、
10行 × 5列
程度の小さなデータを誰かに渡すだけなら、CSVの方が便利なこともあります。 受け取った人はExcelでも開けますし、テキストエディタでも確認できます。 一方、
数千万行 × 数十列
のデータを繰り返し分析するのであれば、Parquetのメリットが大きくなります。
まとめ
今回、仮想通貨の価格データをどう保存するか調べたことをきっかけに、CSVとParquetの違いを整理しました。
CSVはテキスト形式で情報を保持するため人間が確認しやすく、対応しているツールも多くあります。Parquetは大容量データや列の抜き出しに強く、特にデータ分析で効果を発揮します。
状況に応じて、適した保存形式を選択することが重要です。