Streamlit 超入門〜爆速でPythonアプリ開発からデプロイまで
Streamlit(ストリームリット)は、オープンソースのPython GUIライブラリで、データ分析系のWebアプリケーションフレームワークとして広く利用されている。Pythonのみを使って簡単なコーディングでWebアプリケーションやフロントエンドのGUIを作成できる。
公式サイト
- デプロイする際はアカウント登録必要
- docのAPIリファレンスに各種ウィジェット(UIデザイン)あり
Get Started
❶ Pythonファイルを作成 <file名>.py
❷ ターミナルで以下を打ち立ち上げ
$ pip install streamlit
$ streamlit run <file名>.py
❸ http://localhost:8501でブラウザが立ち上がる
文字を表示する
❶ streamlitをimportする
import streamlit as st
❷ st.writeでタイトルやテキストを表示する
st.title(‘Streamlit 超入門’)
st.write(‘これはStreamlit 超入門です。’)
テキスト以外でも基本「st.xxx()」の形で使用する
マークダウンを表示する
“””
# Streamlit 超入門
```
$ pip install streamline
```
```python
import streamlit as st
```
“””
表を表示する
❶ pandasをimportする
import pandas as pd
❷ DataFrameを作成して表示する
df = pd.DataFrame({
‘1列目’: [1, 2, 3, 4],
‘2列目’: [10, 20, 30, 40]
})
st.dataframe(df.style.highlight_max(axis=0), width=1100, height=300)
チャートを表示する
❶ 線グラフ
st.line_chart(df)
❷ エリアグラフ
st.area_chart(df)
❸ 棒グラフ
st.bar_chart(df)
地図を表示する
❶ サンプルのデータフレームを用意する
import pandas as pd
import numpy as np
df = pd.DataFrame(
np.random.rand(100, 2) / [50, 50] + [35.69, 139.70],
columns = [ ‘lat’, ‘lon’]
)
❷地図を表示する
st.map(df, size=10, color=‘#0000ff’)
画像を表示する
❶ 画像処理ライブラリPillow(PIL)をimportする
from PIL import Image
❷ 画像を読み込む
sampleImg = Image.open(‘./img/sample.jpg’)
❸ 画像を読み込む
st.image(sampleImg, caption=‘Streamlit’, use_column_width=True)
フォームを表示する
❶ テキストフォームを表示する
text = st.text_input(‘趣味を教えてください’)
‘趣味: ‘, text
❷ セレクトボックスを表示する
option = st.selectbox(
‘好きな数字を教えてください’,
list(range(1, 11))
)
‘好きな数字: ‘, option
❸ スライダーを表示する
condition = st.slider(‘今の調子は?’, 0, 100, 50)
‘コンディション: ‘, condition
❹ 格納メニューを表示する
ex1 = st.expander(‘expander1’)
ex1.write(‘expander1の内容’)
ex2 = st.expander(‘expander2’)
ex2.write(‘expander2の内容’)
2カラムレイアウト
left_column, right_column = st.columns(2)
button = left_column.button(‘テキスト表示’)
if button:
right_column.write(‘右カラム’)
3カラムなら変数を1個追加しculumns(3)をする
サイドバーレイアウト
text = st.sidebar.text_input(‘趣味を教えてください’)
condition = st.sidebar.slider(‘今の調子は?’, 0, 100, 50)
sidebarを付与された要素全てサイドバーで表示される
プログレスバーを表示する
❶ Python独自ライブラリtimeをimport
import time
❷ プログレスバーを表示する
latest_iteration = st.empty()
bar = st.progress(0)
for i in range(100):
latest_iteration.text(i + 1)
bar.progress(i + 1)
time.sleep(0.01)
アプリをデプロイする
❶ requirements.txtを作成する
streamlit==1.31.1
バージョンを確認する場合は$ pip freezeで表示可能
❷ GitHubにプッシュする
❸ Streamlitのサイトでアカウント登録する
❹ New appをクリック
❺ 各種設定をする