LoginSignup
2
3

More than 1 year has passed since last update.

streamlitとplotlyによるnikkei225のplot

Posted at

streamlitとplotlyで日経平均225のチャートをプロットです。

株式チャートのプロットについて、plotlyを使った、日本語の文書があまり見つからなかったので、投稿したいと思います。
plotlyは、jupyterで表示出来ますが、ここではstreamlitを使用する為、pycharm ceで書きました。

【環境】Linux Mint20
python3.8
plotly==5.3.1
streamlit==1.0.0

1.ライブラリのインポート

使ってないライブラリも読んでおりますが、悪しからず。

# Nikkei225のplot

# starandard libarary
import datetime as dt
import numpy as np
import os
import pandas as pd
import pandas_datareader as pdr

# for plot
import matplotlib.pyplot as plt
import plotly.express as px
import plotly.graph_objs as go
import plotly.figure_factory as ff
import seaborn as sns
import streamlit as st

# for ml, statistics
import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa

2.データセットの読み込み

ここでは、yahooからデータを取得しました。

OHLCと全てのデータが取得できます。
@st.cacheがポイント、streamlitでの以降のplotの処理速度が大幅に変わります。
データを取得がyahooからの場合: information_source='yahoo'
yahooからNikkei225を取得する場合: ticker_symbol='^N225'
取得する銘柄によって、また同じNikkei225でも他から取得する場合は、変更になる。
ここでは、関数にしてみました。

# dataset
@st.cache
def load_dataset():
    start ='2019-01-01'
    end = dt.date.today()
    information_source='yahoo'
    ticker_symbol='^N225'
    df = pdr.DataReader(ticker_symbol, information_source, start, end)
    return df

3.データフレーム表示
取得したデータをstreamlitで表示する関数を作成してみました。

def show_df():
    data = load_dataset()
    df = st.write(data)
    df = st.write(df)
    return df

4.streamlitでデータフレーム表示
先程、定義したデータフレーム表示の関数を実行。

show_df()

5.plot
5-1.plotly.expressで、時系列データを表示する関数を作成。
ここでは、closeだけを抽出。

def plot_ts():
    df = load_dataset()
    # df = df
    plot_line = px.line(data_frame=df, x=df.index, y=df['Close'], title="Close")
    return plot_line

5-2.変化率のplot
pct_change関数で、変化率をplot
デフォルトなので、前日のcloseから変化が大きければ、変化の大きい折れ線グラフがplotされる。
こちらも、関数にまとめました。

def plot_PctChange():
    df = load_dataset()
    plot_line = px.line(data_frame=df, x=df.index, y=df['Close'].pct_change(), title="Rate of Change")
    return plot_line

6.streamlitによる、データフレームとグラフのplot
streamlitのwrite関数で、ブラウザに表示。
基本構文: st.write()
この書き方で、データフレームもグラフの描画等も可能。

6-1.closeのplot
plot_ts()として、st.write()の中に作成した関数を書いて、実行。

st.write('時系列データをline plot')
st.write(
    plot_ts()
)

6-2.変化率のplot
plot_PctChange()として、st.write()の中に作成した関数を書いて、実行。

st.write(
    plot_PctChange()
)

plotly.graph_objs等を使用して、candlestickや複数のグラフを重ねたり、その他の統計データを使用したり等、機会がありましたら、また時系列データとplotlyのについて、投稿したいと思います。
以上、streamlitとplotlyによるnikkei225のplotでした。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3