第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("性別", ["男", "女"]) のように書くことで、サイドバーに部品を設置できます。