Colaboratoryを使用して、米金利のデータをGoogleスプレッドシートに記入する方法

当ページのリンクには広告が含まれています。

ども♪真毅です。

↓良ければ応援クリックお願いします!
にほんブログ村 株ブログへ

Googleスプレッドシートにスプレッドシート金利 取得用」、シート名「米国金利」「FFレート」「社債」を作成し、以下のプログラムをColaboratoryで実行すれば、データを取得できるはずです。

import sys
import time

import pandas as pd
import datetime as dt
import pandas_datareader.data as web
import matplotlib.pyplot as plt
import re

# 認証のためのコード
from google.colab import auth
auth.authenticate_user()

import gspread
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)


open = dt.date(1900,1,1)
stop = dt.date.today()

try:

  # 実行時間を測るStart
  start = time.time()
  print ("開始時間:{0}".format(time.strftime('%Y/%m/%d %H:%M:%S')) )

  def toAlpha(num):
    if num<=26:
        return chr(64+num)
    elif num%26==0:
        return toAlpha(num//26-1)+chr(90)
    else:
        return toAlpha(num//26)+chr(64+num%26)

  def Getdata(code,start,stop,start_cell,filename,sheetname):
    ## スプレッドシートを開く(名前から)
    ss = gc.open(filename)
    # シートを特定する(シート名で特定)
    st = ss.worksheet(sheetname)

    #シートクリア
    st.clear()

    # FREDからデータを取得
    df = web.DataReader(code, 'fred', open, stop)

    col_lastnum = len(df.columns) # DataFrameの列数
    row_lastnum = len(df.index)   # DataFrameの行数

    #googleスプレッドシートの開始位置
    start_cell_col = re.sub(r'[\d]', '', start_cell)
    start_cell_row = int(re.sub(r'[\D]', '', start_cell))

    # アルファベットから数字を返すラムダ式(A列~Z列まで)
    # 例:A→1、Z→26
    alpha2num = lambda c: ord(c) - ord('A') + 1

    # 展開を開始するセルからA1セルの差分
    row_diff = start_cell_row-1
    col_diff = alpha2num(start_cell_col)-alpha2num('A')

    cell_list = st.range(start_cell+':'+toAlpha(col_lastnum+1+col_diff)+str(row_lastnum+1+row_diff))

    #googleスプレッドシートに記載
    for cell in cell_list:
        if cell.col == 1+col_diff and cell.row == 1+row_diff:
            val = ''
        elif cell.col == 1+col_diff:
            val = df.index[cell.row-(2+row_diff)]
        elif cell.row == 1+row_diff:
            val = df.columns[cell.col-(2+col_diff)]
        else:
            val = df.iloc[cell.row-(2+row_diff)][cell.col-(2+col_diff)]

        cell.value = str(val)

    st.update_cells(cell_list)

  #PAYEMS 全従業員、非農業部門合計
  #雇用されており、通常はフルタイムで働いています(LNS12500000)
  # 雇用されており、通常はパートタイムで働いています(LNS12600000)
  #UNRATE 失業率
  #CIVPART 労働力参加率
  #CES0500000003 平均時給
  Getdata(["PAYEMS","LNS12500000","LNS12600000","UNRATE","CIVPART","CES0500000003"],open,stop,'A2','経済指標 取得用','雇用統計')
  #ICSA 新規失業保険申請件数
  #CCSA 継続失業保険申請件数
  #IURSA 保険失業率
  Getdata(["ICSA","CCSA","IURSA"],open,stop,'A2','経済指標 取得用','新規失業保険申請件数')

  #求人情報: 非農業部門合計(JTSJOL)
  #募集職種: 建設業(JTS2300JOL)
  #募集職種: 製造(JTS3000JOL)
  #求人情報: プロフェッショナルおよびビジネス サービス(JTS540099JOL)
  #求人情報: 小売業(JTS4400JOL)
  Getdata(["JTSJOL","JTS2300JOL","JTS3000JOL","JTS540099JOL","JTS4400JOL"],open,stop,'A2','経済指標 取得用','求人情報')

  #CPIAUCSL CPI
  #CPILFESL CPI 食料とエネルギーを除く
  #STICKCPIM157SFRBATL スティッキープライス消費者物価指数
  #CORESTICKM159SFRBATL スティッキープライス消費者物価指数(食料とエネルギーを除く)
  #PPIACO PPI
  #PPIFIS PPI 最終需要
  #PPICOR PPI 最終需要 食料とエネルギーを除く
  #PCE
  #PCEPI 個人消費支出:連鎖型物価指数
  #PCEPILFE 個人消費支出:連鎖型物価指数 食料とエネルギーを除く
  #DSPIC96  実質可処分個人所得
  #RSXFS 小売売上高
  #MARTSSM44W72USS 事前小売販売:自動車および部品ディーラーおよびガソリン スタンドを除く小売業および食品サービス
  #B069RC1 個人的な利息の支払い
  Getdata(["CPIAUCSL","CPILFESL","STICKCPIM157SFRBATL","CORESTICKM159SFRBATL","PPIACO","PPIFIS","PPICOR","PCE","PCEPI","PCEPILFE","DSPIC96","RSXFS","MARTSSM44W72USS","B069RC1"],open,stop,'A2','経済指標 取得用','CPI&PPI')

  #住宅関連
  #S&P/ケース・シラー米国全国住宅価格指数(CSUSHPINSA)
  #S&P/ケース・シラー20都市総合住宅価格指数(SPCS20RSA)
  Getdata(["CSUSHPINSA","SPCS20RSA"],open,stop,'A2','経済指標 取得用','住宅')

  #延滞率
  #クレジット カード ローンの延滞率、全商業銀行(DRCCLACBS)
  Getdata(["DRCCLACBS"],open,stop,'A2','経済指標 取得用','延滞率')

  #M2REAL 米M2マネーストック
  Getdata(["M2REAL"],open,stop,'A2','経済指標 取得用','マネーストック')

except Exception:

  e = sys.exc_info()[1]
  print("エラー",e.args)

finally:

  # 実行時間を測るEnd
  print ("終了時間:{0}".format(time.strftime('%Y/%m/%d %H:%M:%S')) )
  elapsed_time = time.time() - start
  print ("処理時間:{0}".format(elapsed_time) + "[sec]")
目次

各プログラムの説明

googleスプレッドと連携

# 認証のためのコード
from google.colab import auth
auth.authenticate_user()

import gspread
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)

fredで取得する期間

open = dt.date(1900,1,1)
stop = dt.date(2024,1,1)

googleスプレッドシートの行のアルファベットを数値に変換

  def toAlpha(num):
    if num<=26:
        return chr(64+num)
    elif num%26==0:
        return toAlpha(num//26-1)+chr(90)
    else:
        return toAlpha(num//26)+chr(64+num%26)

FREDからデータ取得及び、googleスプレッドシートに記述

  def Getdata(code,start,stop,start_cell,filename,sheetname):
    ## スプレッドシートを開く(名前から)
    ss = gc.open(filename)
    # シートを特定する(シート名で特定)
    st = ss.worksheet(sheetname)

    #シートクリア
    st.clear()

    # FREDからデータを取得
    df = web.DataReader(code, 'fred', open, stop)

    col_lastnum = len(df.columns) # DataFrameの列数
    row_lastnum = len(df.index)   # DataFrameの行数

    #googleスプレッドシートの開始位置
    start_cell_col = re.sub(r'[\d]', '', start_cell)
    start_cell_row = int(re.sub(r'[\D]', '', start_cell))

    # アルファベットから数字を返すラムダ式(A列~Z列まで)
    # 例:A→1、Z→26
    alpha2num = lambda c: ord(c) - ord('A') + 1

    # 展開を開始するセルからA1セルの差分
    row_diff = start_cell_row-1
    col_diff = alpha2num(start_cell_col)-alpha2num('A')

    cell_list = st.range(start_cell+':'+toAlpha(col_lastnum+1+col_diff)+str(row_lastnum+1+row_diff))

    #googleスプレッドシートに記載
    for cell in cell_list:
        if cell.col == 1+col_diff and cell.row == 1+row_diff:
            val = ''
        elif cell.col == 1+col_diff:
            val = df.index[cell.row-(2+row_diff)]
        elif cell.row == 1+row_diff:
            val = df.columns[cell.col-(2+col_diff)]
        else:
            val = df.iloc[cell.row-(2+row_diff)][cell.col-(2+col_diff)]

        cell.value = str(val)

    st.update_cells(cell_list)

  #PAYEMS 全従業員、非農業部門合計
  #雇用されており、通常はフルタイムで働いています(LNS12500000)
  # 雇用されており、通常はパートタイムで働いています(LNS12600000)
  #UNRATE 失業率
  #CIVPART 労働力参加率
  #CES0500000003 平均時給
  Getdata(["PAYEMS","LNS12500000","LNS12600000","UNRATE","CIVPART","CES0500000003"],open,stop,'A2','経済指標 取得用','雇用統計')
  #ICSA 新規失業保険申請件数
  #CCSA 継続失業保険申請件数
  #IURSA 保険失業率
  Getdata(["ICSA","CCSA","IURSA"],open,stop,'A2','経済指標 取得用','新規失業保険申請件数')

  #求人情報: 非農業部門合計(JTSJOL)
  #募集職種: 建設業(JTS2300JOL)
  #募集職種: 製造(JTS3000JOL)
  #求人情報: プロフェッショナルおよびビジネス サービス(JTS540099JOL)
  #求人情報: 小売業(JTS4400JOL)
  Getdata(["JTSJOL","JTS2300JOL","JTS3000JOL","JTS540099JOL","JTS4400JOL"],open,stop,'A2','経済指標 取得用','求人情報')

  #CPIAUCSL CPI
  #CPILFESL CPI 食料とエネルギーを除く
  #STICKCPIM157SFRBATL スティッキープライス消費者物価指数
  #CORESTICKM159SFRBATL スティッキープライス消費者物価指数(食料とエネルギーを除く)
  #PPIACO PPI
  #PPIFIS PPI 最終需要
  #PPICOR PPI 最終需要 食料とエネルギーを除く
  #PCE
  #PCEPI 個人消費支出:連鎖型物価指数
  #PCEPILFE 個人消費支出:連鎖型物価指数 食料とエネルギーを除く
  #DSPIC96  実質可処分個人所得
  #RSXFS 小売売上高
  #MARTSSM44W72USS 事前小売販売:自動車および部品ディーラーおよびガソリン スタンドを除く小売業および食品サービス
  #B069RC1 個人的な利息の支払い
  Getdata(["CPIAUCSL","CPILFESL","STICKCPIM157SFRBATL","CORESTICKM159SFRBATL","PPIACO","PPIFIS","PPICOR","PCE","PCEPI","PCEPILFE","DSPIC96","RSXFS","MARTSSM44W72USS","B069RC1"],open,stop,'A2','経済指標 取得用','CPI&PPI')

  #住宅関連
  #S&P/ケース・シラー米国全国住宅価格指数(CSUSHPINSA)
  #S&P/ケース・シラー20都市総合住宅価格指数(SPCS20RSA)
  Getdata(["CSUSHPINSA","SPCS20RSA"],open,stop,'A2','経済指標 取得用','住宅')

  #延滞率
  #クレジット カード ローンの延滞率、全商業銀行(DRCCLACBS)
  Getdata(["DRCCLACBS"],open,stop,'A2','経済指標 取得用','延滞率')

  #M2REAL 米M2マネーストック
  Getdata(["M2REAL"],open,stop,'A2','経済指標 取得用','マネーストック')

プログラムで取得できる経済指標

  •   #全従業員、非農業部門合計(PAYEMS)
  •   #雇用されており、通常はフルタイムで働いています(LNS12500000)
  •   #雇用されており、通常はパートタイムで働いています(LNS12600000)
  •   #失業率(UNRATE)
  •   #労働力参加率(CIVPART)
  •   #全従業員の平均時給、非公開合計(CES0500000003)
  •   #新規失業保険申請件数(ICSA)
  •   #継続失業保険申請件数(CCSA)
  •   #保険失業率(IURSA)
  •   #求人情報: 非農業部門合計(JTSJOL)
  •   #募集職種: 建設業(JTS2300JOL)
  •   #募集職種: 製造(JTS3000JOL)
  •   #求人情報: プロフェッショナルおよびビジネス サービス(JTS540099JOL)
  •   #求人情報: 小売業(JTS4400JOL)
  •   #すべての都市消費者の消費者物価指数: 米国都市平均の全項目 CPI(CPIAUCSL)
  •   #すべての都市部の消費者の消費者物価指数: 米国都市平均の食料とエネルギーを除いたすべての品目 CPI食料とエネルギーを除く(CPILFESL)
  •   #スティッキープライス消費者物価指数(STICKCPIM157SFRBATL)
  •   #スティッキープライス消費者物価指数(食料とエネルギーを除く)(CORESTICKM159SFRBATL)
  •   #商品別生産者物価指数: 全商品 PPI(PPIACO)
  •   #商品別生産者物価指数: 最終需要 PPI最終需要(PPIFIS)
  •   #商品別生産者物価指数: 最終需要: 最終需要から食料とエネルギーを除いたもの PPI 最終需要 食料とエネルギーを除く(PPICOR)
  •   #個人消費支出(PCE)
  •   #個人消費支出:連鎖型物価指数(PCEPI)
  •   #食料・エネルギーを除く個人消費支出(連鎖型物価指数)(PCEPILFE)
  •   #実質可処分個人所得(DSPIC96)
  •   #事前小売販売: 小売取引(RSXFS)
  •   #事前小売販売:自動車および部品ディーラーおよびガソリン スタンドを除く小売業および食品サービス(MARTSSM44W72USS)
  •   #個人的な利息の支払い(B069RC1)
  •   #S&P/ケース・シラー米国全国住宅価格指数(CSUSHPINSA)
  •   #S&P/ケース・シラー20都市総合住宅価格指数(SPCS20RSA)
  •   #クレジット カード ローンの延滞率、全商業銀行(DRCCLACBS)
  •   #資産規模別の最大100銀行に含まれない銀行のクレジットカードローン延滞率(DRCCLOBS)
  •   #クレジットカードローンの延滞率、資産規模別1位から100位までの銀行(DRCCLT100S)
  •   #M2REAL 米M2マネーストック

プログラミングを学びたいなら、テックジムへ!

テックジムは、2016年に設立された自習型・定額制プログラミングスクールです。全国に12校(2023年11月現在)を展開しており、プログラミング初心者から経験者まで、幅広い層の受講者がいます。

テックジムの特徴は、以下の3点

  • 自習型で、自分のペースで学習できる

テックジムでは、講師による授業は行われません。受講生は、専用の教材とカリキュラムに沿って、自習でプログラミングを学習します。そのため、自分のペースで学習を進めることができ、プログラミングに集中することができます。

  • 200時間でビジネスで使えるスキルを身につけることができる

テックジムのカリキュラムは、プログラミング初心者でも200時間でビジネスで使えるスキルを身につけることができるように設計されています。カリキュラムは、基礎から実践まで、段階的に学習できるようになっており、受講生は着実にスキルを向上させることができます。

  • 転職・就職サポートも充実している

テックジムでは、転職・就職サポートも充実しています。転職・就職活動に必要なスキルや知識を身につけるための講座や、転職・就職相談会など、受講生のニーズに合わせてサポートを受けることができます。

テックジムで学んだら、こんなことができるようになります!

  • 自分のオリジナルのWebサイトやアプリを作れる
  • データサイエンスやAIを使って、ビジネスに貢献できる
  • プログラミングスキルを活かして、転職や就職に成功できる

テックジムは、プログラミングを学習したい人にとって、まさに理想のスクール!

  • 自分のペースで、効率的にプログラミングを学びたい人
  • ビジネスで使えるスキルを身につけたい人
  • 転職や就職に成功したい人

そんな方に、テックジムをぜひおすすめします。

テックジムに入会して、プログラミングのスキルを身につけて、新しい世界を切り拓きませんか


この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

真毅のアバター 真毅 自由人

趣味はカメラ、ランニング、読書。職業はシステムエンジニア。昔はリサーチハウスで企業調査、産業分析を行っていました。目標は投資で稼いでゆっくり生きる。資格はFP2級、証券アナリスト。投資対象は日本株、米国ETF、金、暗号資産、不動産。金融資産と実物資産の両輪で資産形成。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次