コンテンツにスキップ

第1章 Streamlit基本

1 Streamlit

StreamlitはPythonのみでWebページを作成できるライブラリです。フォームの利用やデータの表示が簡単なため、特にデータサイエンスのフロントエンドとして使われます。

まず、ターミナルでインストールしておきます。

pip install streamlit streamlit-folium

st_sample.py ファイルに、以下のように記述します。

import streamlit as st

st.title('Sample Site')
st.text('こんにちは')

実行はこのファイルを直接実行するのではなく、ターミナルで「streamlit run ソースファイルのパス名」を入力します。

もし、直接実行した場合、「streamlit run パス名」がターミナルに表示されるので、それをコピーし貼り付けてEnterを押して実行します。

初回実行時

初回実行時にはメールアドレスを聞かれますが、入力せずEnterを押します。

すると、自動的に、http://localhost:8501/ をブラウザで開きます。 ファイルを更新した場合、ブラウザを再読み込みしてください。

終了時には、ターミナルで Ctrl+C を押します。

注意

他のファイルを実行したい場合には、すでに実行したstreamlitを終了(Ctrl+C)させてから実行します。

2 画面表示の基本

st.title(文字列) で文字列を見出しとして表示します。 また、st.text(文字列) で文字列を表示します。

変数はJupyter同様にそのまま書くと表示されます。 データフレームは表の形で表示されます。

import pandas as pd
df =  pd.read_csv("data/seiseki.csv")
df

グラフはいったん変数に入れて、st.pylot()で表示します。

import seaborn as sns
sns.set_theme(font=["Meiryo"])

ax = df.plot.scatter(x="算数",y="理科")
st.pyplot(ax.get_figure())

メトリクス表示では、タイトルと内容、変化量を表示することができます。

st.metric("気温", "15.2℃", "1.2℃")
st.metric("湿度", "60%", "-5.2")

3 フォームの基本

フォームは 変数名 = st.フォーム部品(引数) でユーザが入力した内容が得られます。得られた変数をすぐに利用できます。

ラジオボタンで複数から1つを選択します。

radio = st.radio("性別", ["男", "女"])

df[df["性別"] == radio]  # 表示

セレクトボックスも同じです。

sel = st.selectbox("クラス", ["A", "B"])
df[df["クラス"] == sel]

テキストボックスに数値を入力します。

kokugo = st.number_input('国語')

他にも文字入力用の text_input、日付入力用のdate_inputがあります。

ボタンを押したときの処理を記述します。

btn = st.button("点数以上")
if btn:
   df[df["国語"] >= kokugo]

数値入力の範囲が決まっている場合、スライダーも便利です。

suu = st.slider('数学', 0, 100, 50) # 最小, 最大, 初期値

btn = st.button("点数以上")
if btn:
   df[df["数学"] >= suu]

ファイルを指定して読み込むことも可能です。

f = st.file_uploader('ファイルアップロード')

# ファイルを読み込んで表示
if f is not None:
    df2 =  pd.read_csv(f)
    df2
    st.write(df2.describe()) # 基本統計量

サイドバーに設置

st.sidebar.radio("性別", ["男", "女"]) のように書くことで、サイドバーに部品を設置できます。