以前から気になっていたのですが、Streamlitというライブラリを最近本格的に使い始めました。これは、簡単にWebアプリケーションを作成できるPythonライブラリなのですが、データの可視化や分析を行うアプリケーションの作成に使うことを念頭において開発されており、僕らの業務と大変相性の良いライブラリです。
インストールとサンプルの実行
インストールはPyPIからpipで行えます。
参考: streamlit · PyPI
インストールしたあと、PyPIのサイトに掲載されているコマンドでサンプルを起動できます。
$ pip install streamlit
$ streamlit hello
結構面白いサンプルなので、これからStreamlitを使っていこうというモチベーションを上げる意味でも一度試すことをお勧めします。
ここから超基礎的な使い方の説明に入ります。(上記のサンプルよりしょぼくてすいません。今後の記事でもう少し色々解説します。)
最もシンプルなアプリの実装
最初に、起動の確認としてただテキストを表示するだけのアプリを作ってみましょう。
app.py というファイルに以下のコードを書いて保存します。
import streamlit as st
st.title('初めてのStreamlitアプリケーション')
st.write('こんにちは、Streamlit!')
そして、次のコマンドで起動します。
$ streamlit run app.py
これで、タイトルとテキストを表示するだけのアプリが起動します。(localhostの8501番ポートです)
インタラクティブなウィジェットの利用
少しだけ動きを出してみます。ドキュメントのウィジェットのページ に色々紹介されているのですが、ここではスライダーを試します。選択した値を表示してみましょう。
import streamlit as st
st.title('スライダーの例')
value = st.slider('数値を選んでください', 0, 100, 50)
st.write('選択した数値:', value)
これを同じように実行すると、スライダーが表示され、0から100の整数(初期値が50)を一つ選べ、スライダーを動かすとその下のテキストボックスに選んだ数値が表示されます。
データフレームの表示
次は、データフレームの表示方法を紹介します。StreamlitはPandas (と他にもPyArrow, Snowpark,PySpark) のDataFrameを表示する専用のメソッドを持っているのです。
参考: st.dataframe – Streamlit Docs
import streamlit as st
import pandas as pd
st.title('データフレームの表示')
data = {
'名前': ['Alice', 'Bob', 'Charlie'],
'年齢': [24, 27, 22],
'得点': [88, 92, 85]
}
df = pd.DataFrame(data)
st.write('データフレーム:')
st.dataframe(df)
これでデータフレームが表示されます。
matplotlibのグラフの表示
最後にmatplotlibのグラフを表示する方法を紹介します。一応、データフレームとグラフが表示できたら超最低限のダッシュボードは作れます。
matplotlibのグラフは、st.pyplotメソッドで表示します。とりあえずsinのグラフでも表示しておきましょう。
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# タイトルを設定
st.title('matplotlibのグラフを表示する例')
# データを作成
x = np.linspace(0, 10, 100)
y = np.sin(x)
# matplotlibでグラフを作成
fig, ax = plt.subplots()
ax.plot(x, y, label='sin(x)')
ax.set_xlabel('X軸')
ax.set_ylabel('Y軸')
ax.set_title('Sine Wave')
ax.legend()
# Streamlitでグラフを表示
st.pyplot(fig)
matplotlibの使い方に慣れている人(ぼくもそうです)はとりあえずいつものノリでグラフを書いて渡すだけで表示できるので便利です。
これ以外にも、Streamlit自体の機能でのグラフ描写等も行えるので今後の記事で紹介していきたいと思います。