min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

python3 ビックテックGAFAMの株価を(引数の日付を1として)可視化する

 

GAFAM株価(起点日を1として)

こうなる。

 

今年の年初来だとこう(起点が2022/1/1)

2月にFacebook(現Meta)が30%近く株価下落したらしい。

www.bloomberg.co.jp

 

直近1か月だとこう。株価って起点をどこで見るかで全然印象が違う。

 

作ろうと思ったきっかけ

コレ。こういうグラフをコマンド一発で作りたいなと。

note.com

 

できた。実行。

$ python3 myKINRI26Arg.py 20190101

引数にとった日付(20190101)を起点にグラフを書いてpng画像で保存される。

 

リーマンショック前夜の2007年01月01日を起点にしてみよう。

 

Appleって(2007年当時からすると)株価が100倍くらいになってる…?

まだiPhone3Gも発売されてないときだから、そんなもんか。

 

ソース

 

ソース(コピペ用)

import pandas as pd
import pandas_datareader as web

import matplotlib.pyplot as plt
# %matplotlib inline
from matplotlib import rcParams
rcParams['figure.figsize']=15,10
rcParams['font.size']=15
import sys
import os
import numpy as np

import datetime

#if len(sys.argv) != 2 or ".pdf" not in sys.argv[1].lower():
if len(sys.argv) != 2:
        print(f"Usage: python {sys.argv[0]} 20220101(start date)")
        sys.exit()

print(f"引数: {sys.argv[1]}")
#print(sys.argv[1])

myARG1 = sys.argv[1]

# 20220101
# 01234567
myYEARR = myARG1[:4]
myMONTH = myARG1[4:6]
myDATEE = myARG1[6:]

#myDATE = myYEARR + '-' + myMONTH + '-' + myDATEE
myDATE = myYEARR + myMONTH + myDATEE

print(f"開始日:" + myDATE)

start=myDATE
enddd=datetime.date.today()
print(enddd)

fig = plt.figure()

print('GAFAM株価データ')

# ['Adj Close']で列指定しないと
# Open,Close,High,Low,AdjClose 全部出ちゃう
# df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd)
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd)['Adj Close']
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd).dropna
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd)
df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT','META','AMZN'], 'yahoo', start, enddd)
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT','META','AMZN', 'TSLA'], 'yahoo', start, enddd)

print('kj株価の推移はチェックできますが、そもそもの価格が違うので比較がしにくいです')
print('ので、open、開始価格を揃えて比較してみます。')
df_GAFAM['Adj Close', 'AAPL'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'AAPL']
df_GAFAM['Adj Close', 'GOOG'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'GOOG']
df_GAFAM['Adj Close', 'MSFT'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'MSFT']
df_GAFAM['Adj Close', 'META'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'META']
df_GAFAM['Adj Close', 'AMZN'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'AMZN']
#df_GAFAM['Adj Close', 'TSLA'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'TSLA']

###
# https://docs.pyq.jp/python/pydata/pandas/loc.html
###
#DataFrame.locを使うと行名、列名を利用してデータを取得できます。
#
# Attributes Adj Close                                ...      Volume
# Symbols         AAPL      GOOG      MSFT      META  ...        GOOG        MSFT        META        AMZN
# Date                                                ...
# 2021-12-31  1.000000  1.000000  1.000000  1.000000  ...  17298000.0  18000800.0  12870500.0  47830000.0
# 2022-01-03  1.025004  1.002730  0.995332  1.006511  ...  25214000.0  28865100.0  14537900.0  63520000.0

# 2022-01-04  1.011995  0.998182  0.978265  1.000535  ...  22928000.0  32674300.0  15998000.0  70726000.0
# 2022-01-05  0.985076  0.951437  0.940711  0.963788  ...  49642000.0  40054300.0  20564500.0  64302000.0
# 2022-01-06  0.968632  0.950729  0.933278  0.988435  ...  29050000.0  39646100.0  27962800.0  51958000.0
#
# [5 rows x 30 columns]
#

## #print('web.DataReader(data_source=\'yahoo\',name=\'^GAFAM\',start=yyyymmdd,end=yyyymmdd)[Adj Close]')
## #df_GAFAM = web.DataReader('^GAFAM', 'yahoo', start2, enddd2)
## df_GAFAM = web.DataReader(data_source='yahoo',
## #name='GAFAM',
## name=['AAPL', 'GOOG', 'MSFT'],
## #start=start).dropna()
## start=start)['Adj Close'].dropna()
## #start=start).dropna()['Adj Close']
## #start=start)['Adj Close']

## #end=enddd)['Adj Close']

#df_GAFAM.loc[:,'Adj Close'].plot()
###//  df_GAFAM['Adj Close'].plot()
# df_GAFAM['Adj Close'].plot(title='AAPL vs GOOG vs MSFT vs META vs AMZN', grid=True)
df_GAFAM['Adj Close'].plot(title=datetime.datetime.now(), grid=True)


# df_GAFAM.head()
print(df_GAFAM.head())
print('--------------------------')

 

ax1 = fig.add_subplot(1,1,1)
###ax1 = fig.add_subplot(2,1,1)
##ax1 = fig.add_subplot(3,1,2)
###ax1 = fig.add_subplot(2,1,1)
#ax1 = fig.add_subplot(3,1,1)
#ax1.plot(df_GAFAM,color='blue', lw=3)
ax1.plot(df_GAFAM,color='blue', lw=3, label="df_GAFAM")
#ax1.set_title('GAFAM'.join([str(datetime.datetime.now())]),fontsize=20)
#ax1.set_title(datetime.date.today(),fontsize=20)

plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)

plt.grid(True)
#plt.savefig("myKINRI26_df_GAFAM.png")
plt.savefig("/media/hoge/fuga/myKINRI26_df_GAFAM.png")
print('myKINRI26_df_GAFAM.pngを保存しました')


print('--------------------------')
#print('https://qiita.com/innovation1005/items/5be026cf7e1d459e9562')
print('https://nanjamonja.net/archives/303')

 

 

 

 

その買うを、もっとハッピーに。|ハピタス