Pythonで取得した株式情報をGoogleスプレッドシートに書き込んでみた話

始めに

以前投稿した記事の続きになりますので、データ取得につきましては下記記事を参照してください。
今回はyfinanceを用いてデータの取得からスプレッドシートへの書き込みまでを書いていきます。スプレッドシートへの書き込みにつきましては、調べるのに非常に苦労したので備忘録も兼ねた記事となっております。
また、goolgeスプレッドシートは無料で使えますので、興味のある方は是非やってみてください。

今回使用したライブラリ

・ yfinance
・ gspread

目標

yfinanceを使用して取得したデータをgoogleスプレッドシートへの書き出し

解説

① お使いのPython環境のコマンドライン (コマンドプロンプトなど) で下記コマンドを実行し、スプレッドシートのAPIをインストールします。
※今回使用するスプレッドシートのAPIは事前準備が必要となります。
詳しい方法は後述する記事を参照してください。

pip install gspread

② ここから、Pythonコード上でのお話になります。
下記コマンドを入力していただき、gspreadをインポートします。

import gspread

③ 以前の記事を参考にデータを取得します。
※ ここでは、例として過去の配当金データを取得します。

# 取得データを表示
dividends = ticker_info.dividends

④ ここからスプレッドシートの操作部分になります。
まずは、作業フォルダを取得します。

#作業フォルダの取得
dir_path = os.path.dirname(__file__) 

gc = gspread.oauth(
                    credentials_filename = os.path.join(dir_path, "client_secret.json"),
                    authorized_user_filename = os.path.join(dir_path, "authorized_user.json")
                    )

⑤作業するスプレッドシートを作成します。
add_worksheet("配当金",rows=100, cols=20)
上記のrows及びcolsは必須となりますので、記述してください。
また、wb.del_worksheet(wb.sheet1)で「シート1」を削除しています。削除不要の場合は記述しなくて大丈夫です。

#スプレッドシート作成
wb = gc.create("Stock information")
print(wb.id)
wb = gc.open_by_key(wb.id)
ws = wb.add_worksheet("配当金",rows=100, cols=20)
wb.del_worksheet(wb.sheet1)

⑥ pandasのデータフレームに格納します。

#pandasのDataFrameで格納する。
dividends_df = pd.DataFrame(dividends)

⑦ 日付をスプレッドシートに書き込む為に、文字列に変換しデータフレームに格納します。

#日付を文字列に変換して追加
dividends_df['Date'] = dividends_df.index.strftime('%Y-%m-%d')

⑧今の状態では、「配当金」列の後ろに「日付」列が来るので、「配当金」列の前に書き込むようにします。
※「日付」列の箇所が気にならない方は、飛ばしていただいて大丈夫です。

#Date列を先頭に移動
cols = dividends_df.columns.tolist()
cols = ['Date'] + [col for col in cols if col != 'Date']
dividends_df = dividends_df[cols]

⑨リストに変換する前に「日付」列を削除、その後再度「日付」を追加し
ws.update(values=data_to_write, range_name='A1')でスプレッドシートに書き込めば完了です。

#リストに変換する前に日付列を削除
dividends_df_reset = dividends_df.reset_index(drop=True)
data_to_write = [dividends_df_reset.columns.tolist()] + dividends_df_reset.values.tolist()
ws.update(values=data_to_write, range_name='A1')

終わりに

私自身がMicrosoftOfficeの契約をしておらずExcelを使用できないため、代わりにGoogleのスプレッドシートに書き込むようにしたのですが、やり方が色々とあるらしく検索するたびに違う方法がヒットするため、予想以上に苦戦を強いられることになりました。ですので、ここで紹介した方法はあくまでも、色々ある方法の一つに過ぎず絶対に正しい方法とは限りませんので、ご自身がやりやすい方法を見つけるための一つの材料になれば幸いです。

参考にさせていただいた記事やサイト

①【python】Googleスプレッドシートを操作するための事前準備
GoogleスプレッドシートのAPIを使用する際に必須となる事前準備の方法を親切に解説してもらえている記事になります。

② ChatGPT
今回、スプレッドシートの操作部分のプログラムを組む際に一番お世話になったサイトです。ひたすらに問答を繰り返していました(笑)
最近になりアカウントを作成せずとも使用できるようになりましたので、最近流行のAIに興味のある方は是非一度触ってみてください。

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?