連載
» 2013年06月25日 18時00分 公開

データを取り込む・格納するための方法を理解するITエンジニアのためのデータサイエンティスト養成講座(3)(3/4 ページ)

[中林紀彦,日本アイ・ビー・エム]

pandasでデータの読み込み・書き出しを実行する

 ここからは、データの読み込みや書き出しのためのライブラリである「pandas(powerful Python data analysis toolkit)」を使って、実際にデータを読み込んだり書き出したりしてみましょう。

pandasとは

 pandasはその名の通り、データ分析のためのライブラリで、特にDataFrame(データフレーム)と呼ばれる行列を扱うためのクラスライブラリが提供されています。

 また、時系列(Time Series)データの取り扱いに優れた「Series」と呼ばれるクラスライブラリも提供されていて、時系列データを扱うときに課題となる時間間隔を合わせたり、足りないデータを補完するなど、便利な機能が提供されています。

 さらにデータの読み書きに向けた使いやすい関数が用意されており、CSV形式やExcelデータ、リレーショナルデータベースに格納されたデータとの親和性も高くなっています。

 このほかにもpandasにはさまざまな機能があり、500ページものリファレンスマニュアルが用意されていて使いこなすのが大変そうですが、チュートリアル「10 Minutes to Pandas」を一通り実行すると、どのような機能があるか概要がつかめるでしょう。

CSV形式のデータを読み込む方法

 では実際にデータを読み込んでみましょう。まずは前回試した電力の使用状況データがCSV形式ですので、ここでもこのデータを使います。実際に実行するコマンドは以下の通りです。

In [1]: import pandas as pd
In [2]: 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 [3]: df.head(10)
Out[3]:
       date  time  actual
0  2013/1/1  0:00    2873
1  2013/1/1  1:00    2716
2  2013/1/1  2:00    2592
3  2013/1/1  3:00    2482
4  2013/1/1  4:00    2412
5  2013/1/1  5:00    2405
6  2013/1/1  6:00    2499
7  2013/1/1  7:00    2646
8  2013/1/1  8:00    2778
9  2013/1/1  9:00    2773
In [4]: df.tail(10)
Out[4]:
          date   time  actual
3686  2013/6/3  14:00    3417
3687  2013/6/3  15:00    3405
3688  2013/6/3  16:00    3415
3689  2013/6/3  17:00    3331
3690  2013/6/3  18:00    3335
3691  2013/6/3  19:00    3370
3692  2013/6/3  20:00    3227
3693  2013/6/3  21:00    3064
3694  2013/6/3  22:00    2994
3695  2013/6/3  23:00    2790
In [5]: df.to_csv("table1.csv", index=False)
In [6]: df.to_csv('table2.csv', index_label='id')

 pandasライブラリをインポートし(In [1])、read_csv関数を使ってHTTP経由でCSVデータを取得します(In [2])。この電力の使用状況データでは、実際のデータは4行目から格納されているので、skiprowsオプションを指定して3行スキップし、namesオプションで列名を明示的に指定します。また文字コード(エンコーディング)はシフトJISなので、encodingオプションに「'Shift_JIS'」を指定します。

 読み込んだデータはdfというDataFrameオブジェクトに格納され、headやtailメソッドを使って中身を確認できます(In [3]、In [4])。to_csvメソッドを使えば、CSV形式でデータをファイルに書き出せます(In [5]、In [6])。この例では2つのファイルにデータを保存していますので、違いを比べてみてください。

 気象庁が提供している「過去の気象データ・ダウンロード」もCSV形式でダウンロードできるので、早速読み込んでみましょう。

 data.csvというファイル名のデータを、さきほどと同様にread_csv関数を使って読み込みます。今回はデータの最初の行をヘッダとして使用するので、headerオプションで「1」を指定しています。

In [1]: import pandas as pd
In [2]: df = pd.read_csv('data.csv', skiprows=2, header=1, encoding='Shift_JIS')
In [3]: df.head(10)
Out[3]:
         年月日  最高気温(℃)  最低気温(℃)  平均湿度(%)
0  1963/7/15     33.5     24.0       74
1  1964/7/15     32.3     21.7       71
2  1965/7/15     31.1     22.0       74
3  1966/7/15     28.3     22.3       74
4  1967/7/15     32.9     24.6       73
5  1968/7/15     24.3     21.6       76
6  1969/7/15     31.0     23.0       58
7  1970/7/15     29.9     22.4       77
8  1971/7/15     30.1     24.1       73
9  1972/7/15     24.3     19.6       90

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。