データ分析をPythonで行うには必須のプラグインPandasがあります。
csvを読み込み、グラフを描いたり、複数あるcsvを一つのデータフレームにマージしたり出来ます。
データを読み込む
pandas-datareaderを利用すると、yahooから株価情報を取得することができます。
Googleの株価を取得してみましょう。
pip install pandas-datareader
import pandas_datareader.data as web
import datetime
start = datetime.datetime(2015, 1, 1)
end = datetime.datetime(2020, 4, 4)
f = web.DataReader('GOOG', 'yahoo', start, end)
f.head()
Date | High | Low | Open | Close | Volume | Adj Close |
---|---|---|---|---|---|---|
2015-01-02 | 529.815369 | 522.665039 | 527.561584 | 523.373108 | 1447500.0 | 523.373108 |
2015-01-05 | 522.894409 | 511.655243 | 521.827332 | 512.463013 | 2059800.0 | 512.463013 |
2015-01-06 | 514.761719 | 499.678131 | 513.589966 | 500.585632 | 2899900.0 | 500.585632 |
2015-01-07 | 505.855164 | 498.281952 | 505.611847 | 499.727997 | 2065000.0 | 499.727997 |
2015-01-08 | 502.101471 | 489.655640 | 496.626526 | 501.303680 | 3353500.0 | 501.303680 |
グラフを描画する
f[‘Close’]でデータフレームの列、Closeにアクセスできます。Series型で取得できますので
Series.plotでグラフが書けます。
この場合indexがDatetime型ですので、時系列の終値でグラフが描画されます。
高値 = High
安値 = Low
始値 = Open
終値 = Close
など、描画したいデータを指定しましょう。
f['Close'].plot()

タイトルを付ける
plot(title='Google Stock Chart')

複数データフレームを結合する
日付やカラム名が同じ列を持っている複数のデータフレームはまとめて一つに
結合することができます。
pandas.concatを使います。縦方向に結合されます。
天気データや、売上データで年別、月別でcsvファイルが分かれている時など
同じテーブル構造で一つのデータフレームにまとめる時に利用します。
df_1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'], 'C': ['C0', 'C1', 'C2']})
df_2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'], 'B': ['B3', 'B4', 'B5'], 'C': ['C3', 'C4', 'C5']})
df_3 = pd.concat([df_1, df_2])
df_3
A | B | C | |
---|---|---|---|
0 | A0 | B0 | C0 |
1 | A1 | B1 | C1 |
2 | A2 | B2 | C2 |
0 | A3 | B3 | C3 |
1 | A4 | B4 | C4 |
2 | A5 | B5 | C5 |
pandas.mergeは横方向に結合されます。
例えば、日本の人口情報と、米国の人口情報のデータフレーム二つがある場合、indexを基準に結合して一つのデータフレームにする時に利用します。
country=[‘JP’, ‘US’]で一度に取得できますが、mergeの説明として分けて取得しています。
jp = wb.download(indicator='SP.POP.TOTL', country=['JP'], start=1960, end=2020)
us = wb.download(indicator='SP.POP.TOTL', country=['US'], start=1960, end=2020)
jp = jp.unstack(level=0)
us = us.unstack(level=0)
f = pd.merge(jp, us, how='left', left_index=True, right_index=True)
f.plot()

まとめ
今回の記事では、Pandasの操作方法について説明させていただきました。
データ分析は複数csvデータを操作する場面が多いのでぜひ覚えましょう。
・pandas-datareaderからデータを取得する
・pandas.concatで結合する
・pandas.mergeで結合する
・pandas.Series.plotで可視化する
以上について開設しました、今回触れなかった関数についてはまた次回解説したいと思います。