8.3 構造化されたバイナリファイル
ファイルフォーマットのなかには、リレーショナルデータベースなどには向いていなくても、特定のデータ構造を格納するために設計されたものがあります。この章では、そのような構造化されたバイナリファイルの代表例を紹介します。
8.3.1 スプレッドシート
Section titled “8.3.1 スプレッドシート”Microsoft Excelなどのスプレッドシートは、広く普及しているバイナリデータ形式です。Pythonでこれらのデータを扱うには、主に2つのアプローチがあります。
- CSVに変換して扱う: スプレッドシートの機能を使ってCSVファイルとして保存し、Pythonの標準ライブラリである
csvモジュールで読み込む方法です。 - サードパーティ製パッケージを使う: バイナリの
.xlsファイルを直接読み書きしたい場合は、xlrdなどのパッケージを使用します。
# xlrd パッケージのインストール例$ pip install xlrd8.3.2 HDF5
Section titled “8.3.2 HDF5”HDF5は、多次元の、または階層的な数値データを格納するためのバイナリデータ形式です。
- 主な用途: ギガバイト(GB)からテラバイト(TB)クラスの大規模なデータセットに対する高速なランダムアクセスが必要な科学分野で主に使用されています。
- 特徴: データベース保護が不要な「WORM (Write Once, Read Many: 一度書き込んで何度も読み出す)」アプリケーションに最も適しています。
- 実例: 楽曲データの「Million Song dataset」などもHDF5形式で提供されています。
PythonでHDF5を扱うための主要なモジュールには以下の2つがあります。
h5py: フル機能を提供する低水準インターフェースです。PyTables:h5pyよりも少し高水準で、データベース的な機能を持っています。
# HDF5を扱うためのパッケージのインストール例$pip install h5py$ pip install tables # PyTablesのインストール