【Python】Pandasデータフレームプラグインを学習する

Pandas
この記事は約5分で読めます。

データ分析をPythonで行うには必須のプラグインPandasがあります。
csvを読み込み、グラフを描いたり、複数あるcsvを一つのデータフレームにマージしたり出来ます。

データを読み込む

pandas-datareaderを利用すると、yahooから株価情報を取得することができます。
Googleの株価を取得してみましょう。

pandas-datareader — pandas-datareader 0.9.0rc1+2.g427f658 documentation
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()
DateHighLowOpenCloseVolumeAdj Close
2015-01-02529.815369522.665039527.561584523.3731081447500.0523.373108
2015-01-05522.894409511.655243521.827332512.4630132059800.0512.463013
2015-01-06514.761719499.678131513.589966500.5856322899900.0500.585632
2015-01-07505.855164498.281952505.611847499.7279972065000.0499.727997
2015-01-08502.101471489.655640496.626526501.3036803353500.0501.303680

グラフを描画する

f[‘Close’]でデータフレームの列、Closeにアクセスできます。Series型で取得できますので
Series.plotでグラフが書けます。
この場合indexがDatetime型ですので、時系列の終値でグラフが描画されます。

高値 = High
安値 = Low
始値 = Open
終値 = Close

など、描画したいデータを指定しましょう。

f['Close'].plot()

タイトルを付ける

plot(title='Google Stock Chart')

複数データフレームを結合する

日付やカラム名が同じ列を持っている複数のデータフレームはまとめて一つに
結合することができます。
pandas.concatを使います。縦方向に結合されます。
天気データや、売上データで年別、月別でcsvファイルが分かれている時など
同じテーブル構造で一つのデータフレームにまとめる時に利用します。

pandas.concat — pandas 1.1.2 documentation
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
ABC
0A0B0C0
1A1B1C1
2A2B2C2
0A3B3C3
1A4B4C4
2A5B5C5

pandas.mergeは横方向に結合されます。
例えば、日本の人口情報と、米国の人口情報のデータフレーム二つがある場合、indexを基準に結合して一つのデータフレームにする時に利用します。

pandas.DataFrame.merge — pandas 1.1.2 documentation

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で可視化する

以上について開設しました、今回触れなかった関数についてはまた次回解説したいと思います。

タイトルとURLをコピーしました