大規模データセットの取り扱い | データの取得と準備 | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

大規模データセットの取り扱い(HDF5、Parquet)

機械学習やデータ分析では、数GBから数TB規模のデータを扱うことがあります。CSVやExcelは扱いやすい反面、大規模データでは読み込み速度やメモリ使用量が問題になることがあります。

そこで利用されるのが、HDF5やParquetといった大規模データ向けの保存形式です。これらを利用することで、高速な読み込みや効率的なデータ管理が可能になります。

大規模データセットの取り扱いを図で理解する

大規模データセットの取り扱いを図で理解する

大規模データ向けフォーマットが必要な理由

CSVはシンプルで扱いやすい形式ですが、データ量が増えると読み込み速度やメモリ使用量が大きな課題になります。

形式 特徴
CSV 扱いやすいが大規模データでは処理が遅くなりやすい
Excel 閲覧しやすいが大量データには不向き
HDF5 階層構造で高速に保存・読み込みできる
Parquet 列単位で保存し高圧縮・高速処理が可能

HDF5とは

HDF5(Hierarchical Data Format)は、大規模データを階層構造で保存できるフォーマットです。

  • 大量データを効率的に保存できる
  • 必要な部分だけを読み込める
  • 階層構造でデータを整理できる
  • 科学技術計算や研究分野で広く利用される

HDF5のインストール

pip install pandas tables

HDF5データの保存

import pandas as pd

df = pd.DataFrame({
    'col1': [1, 2, 3],
    'col2': ['A', 'B', 'C']
})

df.to_hdf('data.h5', key='df', mode='w')

HDF5データの読み込み

df_loaded = pd.read_hdf('data.h5', 'df')

print(df_loaded)

Parquetとは

Parquetは列指向(カラムナ型)のデータフォーマットです。必要な列だけを効率よく読み込めるため、ビッグデータ処理や機械学習で広く利用されています。

  • 高い圧縮率を持つ
  • 読み込み速度が速い
  • 必要な列のみ取得できる
  • SparkやDuckDBなどとも相性が良い

Parquetのインストール

pip install pyarrow

Parquetデータの保存

import pandas as pd

df = pd.DataFrame({
    'col1': [1, 2, 3],
    'col2': ['A', 'B', 'C']
})

df.to_parquet('data.parquet')

Parquetデータの読み込み

df_loaded = pd.read_parquet('data.parquet')

print(df_loaded)

HDF5とParquetの違い

項目 HDF5 Parquet
保存方式 階層構造 列指向(カラムナ型)
読み込み速度 高速 非常に高速
圧縮効率 高い 非常に高い
部分読み込み 可能 列単位で特に得意
主な用途 科学計算・研究データ 機械学習・ビッグデータ分析

機械学習で利用される理由

機械学習では大量の学習データを扱うため、データの保存形式が処理速度に大きく影響します。

  • 読み込み時間を短縮できる
  • メモリ使用量を削減できる
  • 大規模データでも扱いやすい
  • 学習パイプライン全体を高速化できる