Million Song Dataset
あけましておめでとうございます.今年もよろしくお願いいたします.
Rでbigmemoryやffなどを使用して大規模なデータを扱うときのサンプルデータとして,Data Expo 2009のフライトデータが用いられることが多いようです.しかし,このデータのサイズは約12GBであり,最近のコンピュータではメモリに載ってしまうという指摘もよく受けるようになって来ました.
そこで,より大規模なデータセットを探してみました.次のようなデータセットが手軽に利用できます.
- Million Song Dataset
楽曲の音声やそのメタデータに関するデータセットです.全体で約280GBあります. - Page view statistics for Wikimedia projects
Wikipediaの各ページのページビューを時間単位で集計したデータです.全体で約2.3TBあります. - NCDC Hourly Global Weather Measurements
米国の時間単位での気象観測データです.全体で約59GBあります. - 1998 World Cup access logs
1998年のワールドカップ時のアクセスログです.全体で約123GBあります.
この中から,"Million Song Dataset"を選んでみましょう.
HDF5とは
Million Song Datasetは,HDF5というデータ形式で提供されています.HDF5は,Hierarchical Data Format 5の略で,データを階層的に保持するデータ形式で,衛星データなどでよく用いられているようです.
HDF5のデータ形式のモチベーションについては,id:salondunordさんの「HDF5フォーマットに関するメモ書き」でCSVとの対比の説明が分かりやすいです.
データのダウンロード
Million Song Datasetは,infochimpsおよびAWSで提供されています.
今回は10,000レコードに限定したMillion Song Subsetを利用してみましょう.まずファイルをダウンロードして解凍します.
$ wget http://static.echonest.com/millionsongsubset_full.tar.gz $ tar xzvf millionsongsubset_full.tar.gz
作成されたMillionSongSubsetディレクトリのdataディレクトリにデータが入っています.階層的にデータが格納されていることを確認できます.
$ ls MillionSongSubset millionsongsubset_full.tar.gz $ tree MillionSongSubset/ | head -n 35 MillionSongSubset/ ├── AdditionalFiles │ ├── LICENSE │ ├── README │ ├── subset_artist_location.txt │ ├── subset_artist_similarity.db │ ├── subset_artist_term.db │ ├── subset_msd_summary_file.h5 │ ├── subset_track_metadata.db │ ├── subset_tracks_per_year.txt │ ├── subset_unique_artists.txt │ ├── subset_unique_mbtags.txt │ ├── subset_unique_terms.txt │ └── subset_unique_tracks.txt └── data └── A ├── A │ ├── A │ │ ├── TRAAAAW128F429D538.h5 │ │ ├── TRAAABD128F429CF47.h5 │ │ ├── TRAAADZ128F9348C2E.h5 │ │ ├── TRAAAEF128F4273421.h5 │ │ ├── TRAAAFD128F92F423A.h5 │ │ ├── TRAAAMO128F1481E7F.h5 │ │ ├── TRAAAMQ128F1460CD3.h5 │ │ ├── TRAAAPK128E0786D96.h5 │ │ ├── TRAAARJ128F9320760.h5 │ │ ├── TRAAAVG12903CFA543.h5 │ │ └── TRAAAVO128F93133D4.h5 │ ├── B │ │ ├── TRAABCL128F4286650.h5 │ │ ├── TRAABDL12903CAABBA.h5 │ │ ├── TRAABJL12903CDCF1A.h5 │ │ ├── TRAABJV128F1460C49.h5 │ │ ├── TRAABLR128F423B7E3.h5
HDF5は,C++, R, Pythonなど様々なアプリケーションで使用できます.ここでは,Million Song Datasetの説明に従って,Pythonを使用してみます.
PythonでHDF5を扱う
PythonでHDF5形式のデータを扱うためのパッケージはPyTablesとh5pyの2つです.データ解析パッケージのpandasはPyTablesへのインタフェースを提供しています.
import pandas as pd def readHDF5(fn): store = HDFStore(fn) print(store)
参考文献
Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython
- 作者: Wes McKinney
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/11/01
- メディア: ペーパーバック
- この商品を含むブログ (6件) を見る