Excel形式でデータが提供されるケースも少なくありません。次は総務省が公開している「インターネット普及率の推移」を読み込んでみましょう。ExcelFileクラスを使います。
このクラスを使うには「xlrdモジュール」が必要ですので、あらかじめダウンロードしてインストールしておきます。ダウンロードしたファイルを展開し、展開してできたディレクトリでコマンドプロンプトから「python setup.py install」コマンドを実行するとインストールできます。
実際にExcelファイルを読み込むには、ExcelFile関数を使います。この関数は、read_csv関数と違い、HTTPでインターネット上のデータを直接取得することができません。そこで、「urllib2」ライブラリを使います。
具体的な処理手順は以下の通りです。
In [1]: import pandas as pd In [2]: import urllib2 In [3]: link = 'http://www.soumu.go.jp/johotsusintokei/field/data/gt010102.xls' In [4]: socket = urllib2.urlopen(link) In [5]: xls = pd.ExcelFile(socket) In [6]: df = xls.parse(xls.sheet_names[0], header=2, index_col=0, skip_footer=9) In [7]: df.T Out[7]: 世帯 個人 企業(従業者100人以上) 事業所(従業者5人以上) 平成9年末 6.4 9.2 68.2 12.3 平成10年末 11 13.4 63.8 19.2 平成11年末 19.1 21.4 78.3 31.8 平成12年末 34 37.1 89.3 44.8 平成13年末 60.5 46.3 94.5 68 平成14年末 81.4 57.8 96.1 79.1 平成15年末 88.1 64.3 97.5 82.6 平成16年末 86.8 66 98.1 81.8 平成17年末 87 70.8 97.6 85.7 平成18年末 79.3 72.6 98.1 85.6 平成19年末 91.3 73 98.7 - 平成20年末 91.1 75.3 99 - 平成21年末 92.7 78 99.5 - 平成22年末 93.8 78.2 98.8 - 平成23年末 86 79.1 98.8 -
xls.sheet_names[0]で1枚目のシートを指定し、2行目をヘッダーとし(header=2)、最後の9行は注釈なのでスキップします(skip_footer=9)。
一方、リレーショナルデータベースからデータを取り込んだり、分析結果を格納したりする場合にもpandasに付属する「pandas.io.sql」モジュールを使ってDataFrameのデータをまるごと入出力できます。このモジュールはPython DB-APIに準拠していて、MySQLやPostgreSQL、SQlite、Oracle、IBM DB2など、さまざまなデータベースに対応しています。今回はPythonに標準で付属しているSQliteを使います。具体的な処理手順は以下の通りです。
In [1]: import pandas as pd In [2]: import sqlite3 In [3]: from pandas.io import sql In [4]: df = pd.read_csv('http://www.tepco.co.jp/forecast/html/images/juyo-2013.csv', skiprows=3, names=['date', 'time', 'actual'], encoding='Shift_JIS') In [5]: cnx = sqlite3.connect(':memory:') In [6]: sql.write_frame(df, name='csv_table', con=cnx) In [7]: df2 = sql.read_frame('select actual from csv_table', cnx) In [8]: df2 Out[8]: <class 'pandas.core.frame.DataFrame'> Int64Index: 3696 entries, 0 to 3695 Data columns (total 1 columns): actual 3696 non-null values dtypes: int64(1)
まずは必要なライブラリをインポートし(In [1]、In [2]、In [3])、電力の使用状況データを取り込んだ後(In [4])、csv_tableという名前のテーブルにデータを格納します(In [5]、In [6])。格納したデータは、SQL文を使って取り出せます(In [7])。
このほかにもXML/XHTML形式やJSON形式のデータなどを扱うケースもありますので、これらのフォーマットについては、次回説明するデータ変換の中で詳しく説明します。
第3回では「データの収集と読み込み」をテーマに、どのようなデータを収集すべきかを解説しました。さらに、IPythonとpandasについて説明しながら、具体的なデータの読み込みや書き出しの方法を紹介しました。インターネット上にはいろいろなデータがさまざまな形式で公開されていますが、今回説明した方法を応用すれば多様なデータを読み込めます。ただし気を付けなければいけないのは、データがあるから分析するのではなく、あくまでも目的のためのデータである、ということです。
次回は、「データを分析できる状態にする」というテーマで、Webサイトのログデータのように、構造化されていないデータを構造化する方法などについて、具体的な手順も含めて説明します。
Copyright © ITmedia, Inc. All Rights Reserved.