株価の取得と表示

株価の取得

株価の取得をpandas_datareaderを使って行います。

まずは、必要なモジュールのインポート

In [1]:
import pandas as pd
import pandas_datareader.data as web
import datetime

株価を取得する開始日と終了日を変数に代入します。現在は2020年以降のデータは取得できるようです。

In [2]:
start = datetime.datetime(2000,1,1)
end = datetime.datetime(2021,11,19)

NTT, KDDI, ソフトバンク, 楽天の株価を順番に取得します。

In [3]:
ntt = web.DataReader("9432.T", 'yahoo', start, end)
In [4]:
kddi = web.DataReader("9433.T", 'yahoo', start, end)
In [5]:
softbank = web.DataReader("9984.T",'yahoo',start,end)
In [6]:
rakuten = web.DataReader('4755.T','yahoo',start,end)

データの取り込みの相応の時間がかかるので、今後のためにデータをCSVに保存

In [7]:
ntt.to_csv('NTT_Stock.csv')
kddi.to_csv('KDDI_Stock.csv')
softbank.to_csv('softbank_Stock.csv')
rakuten.to_csv('rakuten_Stock.csv')

データを取り込むとこんな感じ

High(高値), Low(安値), Open(始値), Close(終値), Volumeの数字は、分割が考慮されている値のようです。

Adj Close(調整後終値)は配当も考慮されている金額のようです。

In [8]:
ntt.head()
Out[8]:
High Low Open Close Volume Adj Close
Date
2000-01-04 4550.0 4450.0 4475.0 4475.0 184000000.0 2654.374756
2000-01-05 4350.0 4200.0 4300.0 4300.0 249000000.0 2550.572266
2000-01-06 4300.0 4150.0 4250.0 4175.0 175000000.0 2476.427246
2000-01-07 4150.0 4075.0 4075.0 4125.0 222000000.0 2446.769287
2000-01-10 4125.0 4125.0 4125.0 4125.0 0.0 2446.769287

株価の表示

株価を表示するために、4銘柄の調整後終値を結合します。

In [9]:
adj_close_price = pd.concat([ntt['Adj Close'],kddi['Adj Close'],softbank['Adj Close'],rakuten['Adj Close']],axis=1)

列名がすべて同じになってしまうので、銘柄名に変更します。

In [10]:
adj_close_price.columns = ['NTT','KDDI','ソフトバンク','楽天']
adj_close_price
Out[10]:
NTT KDDI ソフトバンク 楽天
Date
2000-01-04 2654.374756 1544.448242 5162.070801 NaN
2000-01-05 2550.572266 1522.998047 4340.241699 NaN
2000-01-06 2476.427246 1501.547607 4089.603760 NaN
2000-01-07 2446.769287 1415.744141 3838.963379 NaN
2000-01-10 2446.769287 1415.744141 3838.963379 NaN
2021-11-15 3293.000000 3446.000000 7000.000000 1193.0
2021-11-16 3286.000000 3460.000000 7113.000000 1194.0
2021-11-17 3242.000000 3409.000000 7132.000000 1205.0
2021-11-18 3215.000000 3418.000000 6986.000000 1251.0
2021-11-19 3184.000000 3410.000000 6856.000000 1247.0

5482 rows × 4 columns

グラフを表示します。

日本語で表示するために必要なライブラリも取り込んでます。

こうやって見るとソフトバンクは大きく伸びていることがわかりますね。配当金が大きいことも関連していると思いますが。楽天はこうやって見ると大して伸びてない。

In [11]:
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set()
from matplotlib import rcParams
from matplotlib import cm
rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'VL PGothic', 'Noto Sans CJK JP']
import matplotlib.dates as dates
adj_close_price.plot(figsize=(12,4))
fig.autofmt_xdate()
plt.tight_layout()

NTTの終値と調整後終値の推移をグラフ化

NTTは後述の通り、何度か株式分割していますが、終値がその時に大きく変動していないので、先に述べた通り、分割に関しては、終値等の値に反映されているようです。

In [12]:
ntt[['Close','Adj Close']].plot(figsize=(12,4))
fig.autofmt_xdate()
plt.tight_layout()

その他のデータ取得

yahoo-acitonsをパラメータで指定すれば、株式分割や配当の情報も取得できます。

In [13]:
ntt_action = web.DataReader('9432.T','yahoo-actions',start,end)
ntt_action
Out[13]:
action value
2021-09-29 DIVIDEND 55.00
2021-03-30 DIVIDEND 50.00
2020-09-29 DIVIDEND 50.00
2020-03-30 DIVIDEND 47.50
2019-12-27 SPLIT 0.50
2019-09-27 DIVIDEND 47.50
2019-03-27 DIVIDEND 47.50
2018-09-26 DIVIDEND 42.50
2018-03-28 DIVIDEND 37.50
2017-09-27 DIVIDEND 37.50
2017-03-29 DIVIDEND 30.00
2016-09-28 DIVIDEND 30.00
2016-03-29 DIVIDEND 30.00
2015-09-28 DIVIDEND 25.00
2015-06-26 SPLIT 0.50
2015-03-27 DIVIDEND 22.50
2014-09-26 DIVIDEND 22.50
2014-03-27 DIVIDEND 22.50
2013-09-26 DIVIDEND 20.00
2013-03-27 DIVIDEND 20.00
2012-09-26 DIVIDEND 20.00
2012-03-28 DIVIDEND 17.50
2011-09-28 DIVIDEND 17.50
2011-03-29 DIVIDEND 15.00
2010-09-28 DIVIDEND 15.00
2010-03-29 DIVIDEND 15.00
2009-09-25 DIVIDEND 15.00
2009-03-26 DIVIDEND 13.75
2009-01-04 SPLIT 0.01
2008-09-25 DIVIDEND 13.75
2008-03-26 DIVIDEND 11.25
2007-09-25 DIVIDEND 11.25
2007-03-27 DIVIDEND 10.00
2006-09-26 DIVIDEND 10.00
2006-03-28 DIVIDEND 7.50
2005-09-27 DIVIDEND 7.50
2005-03-28 DIVIDEND 7.50
2004-09-27 DIVIDEND 7.50
2004-03-26 DIVIDEND 6.25
2003-09-25 DIVIDEND 6.25
2003-03-26 DIVIDEND 6.25
2002-09-25 DIVIDEND 6.25
2002-03-26 DIVIDEND 6.25
2001-09-25 DIVIDEND 6.25
2001-03-27 DIVIDEND 6.25
2000-09-26 DIVIDEND 6.25
2000-03-28 DIVIDEND 6.25

yahoo-dividendsをパラメータで指定すれば、配当の情報だけ取得できます。

In [14]:
rakuten = web.DataReader('9432.T','yahoo-dividends',start,end)
rakuten
Out[14]:
action value
2021-09-29 DIVIDEND 55.00
2021-03-30 DIVIDEND 50.00
2020-09-29 DIVIDEND 50.00
2020-03-30 DIVIDEND 47.50
2019-09-27 DIVIDEND 47.50
2019-03-27 DIVIDEND 47.50
2018-09-26 DIVIDEND 42.50
2018-03-28 DIVIDEND 37.50
2017-09-27 DIVIDEND 37.50
2017-03-29 DIVIDEND 30.00
2016-09-28 DIVIDEND 30.00
2016-03-29 DIVIDEND 30.00
2015-09-28 DIVIDEND 25.00
2015-03-27 DIVIDEND 22.50
2014-09-26 DIVIDEND 22.50
2014-03-27 DIVIDEND 22.50
2013-09-26 DIVIDEND 20.00
2013-03-27 DIVIDEND 20.00
2012-09-26 DIVIDEND 20.00
2012-03-28 DIVIDEND 17.50
2011-09-28 DIVIDEND 17.50
2011-03-29 DIVIDEND 15.00
2010-09-28 DIVIDEND 15.00
2010-03-29 DIVIDEND 15.00
2009-09-25 DIVIDEND 15.00
2009-03-26 DIVIDEND 13.75
2008-09-25 DIVIDEND 13.75
2008-03-26 DIVIDEND 11.25
2007-09-25 DIVIDEND 11.25
2007-03-27 DIVIDEND 10.00
2006-09-26 DIVIDEND 10.00
2006-03-28 DIVIDEND 7.50
2005-09-27 DIVIDEND 7.50
2005-03-28 DIVIDEND 7.50
2004-09-27 DIVIDEND 7.50
2004-03-26 DIVIDEND 6.25
2003-09-25 DIVIDEND 6.25
2003-03-26 DIVIDEND 6.25
2002-09-25 DIVIDEND 6.25
2002-03-26 DIVIDEND 6.25
2001-09-25 DIVIDEND 6.25
2001-03-27 DIVIDEND 6.25
2000-09-26 DIVIDEND 6.25
2000-03-28 DIVIDEND 6.25

Follow me!