Python pandas-datareaderでVIX(恐怖指数)取得

# ライブラリの読み込み
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import pandas as pd

# fredからVixを取得する
vix = web.DataReader("VIXCLS", "fred", "1949/1/1")

FREDというのはアメリカにあるセントルイス中央銀行のデータベース。

pandas-datareaderは仕様上時々死ぬことがあるそうなので注意。

ネタ元

tkstock.site

Python 日付や時刻をYYMMDDhhmmssなどの形式に書式化する

ネタ元

atmarkit.itmedia.co.jp

# datetimeモジュールを使用
import datetime

t_delta = datetime.timedelta(hours=9)
JST = datetime.timezone(t_delta, 'JST')
now = datetime.datetime.now(JST)
print(repr(now))
# 出力例
#datetime.datetime(2021, 11, 4, 17, 37, 28, 114417, tzinfo=datetime.timezone
#(datetime.timedelta(seconds=32400), 'JST'))
print(now)  # 2021-11-04 17:37:28.114417+09:00

# YYYYMMDDhhmmss形式に書式化
d = now.strftime('%Y%m%d%H%M%S')
print(d)  # 20211104173728

d = f'{now:%Y%m%d%H%M%S}'  # f文字列
d = format(now, '%Y%m%d%H%M%S')  # format関数
d = '{:%Y%m%d%H%M%S}'.format(now)  # 文字列のformatメソッド
print(d)  # 20211104173728

# YYYY/MM/DD hh:mm:ss形式に書式化
d = now.strftime('%Y/%m/%d %H:%M:%S')
print(d)  # 2021/11/04 17:37:28

# MM/DD/YY hh:mm:ss形式に書式化
d = now.strftime('%x %X')
print(d)  # 11/04/21 17:37:28

# 日付のみを書式化
d = now.date().strftime('%Y/%m/%d')
print(d)  # 2021/11/04

# 時刻のみを書式化
t = now.time().strftime('%X')
print(t)  # 17:37:28

# 西暦を2桁に
d = now.strftime('%y/%m/%d %H:%M:%S')
print(d)  # 21/11/04 17:37:28

# 12時間制+AM/PM表示
d = now.strftime('%Y/%m/%d %I:%M(%p)')
print(d)  # 2021/11/04 05:11(PM)

# 曜日を含む日付
d = now.strftime('%Y年%m月%d日(%a)')
print(d)  # 2021年11月04日(Thu)

d_week = {'Sun': '日', 'Mon': '月', 'Tue': '火', 'Wed': '水',
          'Thu': '木', 'Fri': '金', 'Sat': '土'}
key = now.strftime('%a')
w = d_week[key]
d = now.strftime('%Y年%m月%d日') + f'({w})' #f'{now:%Y年%m月%d日}({w})'
print(d)  # 2021年11月04日(木)

d_week = '日月火水木金土日'  # インデックス0の'日'は使用されない
idx = now.strftime('%u')  # '%u'では月曜日がインデックス'1'となる
w = d_week[int(idx)]
d = now.strftime('%Y年%m月%d日') + f'({w})'
print(d)  # 2021年11月04日(木)

# タイムゾーン
d = now.strftime('%X%z(%Z)')
print(d)  # 17:37:28+0900(JST)

# timeモジュールを使用
import time

now = time.localtime()
print(now)
# 出力例
#time.struct_time(tm_year=2021, tm_mon=11, tm_mday=4, tm_hour=19, tm_min=40,
#tm_sec=1, tm_wday=3, tm_yday=308, tm_isdst=0)

d = time.strftime('%Y%m%d%H%M%S', now)  # YYYYMMDDhhmmssに書式化
d = time.strftime('%Y/%m/%d %H:%M:%S', now)  # YYYY/MM/DD hh:mm:ssに書式化
d = time.strftime('%x %X', now)  # MM/DD/YY hh:mm:ssに書式化
d = time.strftime('%y/%m/%d %H:%M:%S', now)  # YY/MM/DD hh:mm:ssに書式化
d = time.strftime('%Y/%m/%d %I:%M(%p)', now)  # 12時間制+AM/PM表示
d = time.strftime('%Y年%m月%d日(%a)', now)  # 曜日を含む日付

d_week = {'Sun': '日', 'Mon': '月', 'Tue': '火', 'Wed': '水',
          'Thu': '木', 'Fri': '金', 'Sat': '土'}
key = time.strftime('%a', now)
w = d_week[key]
d = time.strftime('%Y年%m月%d日', now) + f'({w})'
print(d)  # 2021年11月04日(木)