Skip to content

8.3 構造化されたバイナリファイル

ファイルフォーマットのなかには、リレーショナルデータベースなどには向いていなくても、特定のデータ構造を格納するために設計されたものがあります。この章では、そのような構造化されたバイナリファイルの代表例を紹介します。

Microsoft Excelなどのスプレッドシートは、広く普及しているバイナリデータ形式です。Pythonでこれらのデータを扱うには、主に2つのアプローチがあります。

  1. CSVに変換して扱う: スプレッドシートの機能を使ってCSVファイルとして保存し、Pythonの標準ライブラリである csv モジュールで読み込む方法です。
  2. サードパーティ製パッケージを使う: バイナリの .xls ファイルを直接読み書きしたい場合は、xlrd などのパッケージを使用します。
Terminal window
# xlrd パッケージのインストール例
$ pip install xlrd

HDF5は、多次元の、または階層的な数値データを格納するためのバイナリデータ形式です。

  • 主な用途: ギガバイト(GB)からテラバイト(TB)クラスの大規模なデータセットに対する高速なランダムアクセスが必要な科学分野で主に使用されています。
  • 特徴: データベース保護が不要な「WORM (Write Once, Read Many: 一度書き込んで何度も読み出す)」アプリケーションに最も適しています。
  • 実例: 楽曲データの「Million Song dataset」などもHDF5形式で提供されています。

PythonでHDF5を扱うための主要なモジュールには以下の2つがあります。

  1. h5py: フル機能を提供する低水準インターフェースです。
  2. PyTables: h5py よりも少し高水準で、データベース的な機能を持っています。
Terminal window
# HDF5を扱うためのパッケージのインストール例
$pip install h5py$ pip install tables # PyTablesのインストール