Traffine I/O

日本語

2023-02-10

Streamlit

Streamlitとは

Streamlitとは、データサイエンスや機械学習のアプリケーションの開発を簡単に行うことができるPythonフレームワークです。HTMLやCSSなどの知識を要することなくデータの可視化が可能です。

インストール

以下のコマンドでStreamlitをインストールします。

bash
$ pip install streamlit

Streamlitの実行

app.pyファイルを作成します。

app.py
import streamlit as st

st.title("hello world")

そしてstreamlit run app.pyを実行します。

bash
$ streamlit run app.py
You can now view your Streamlit app in your browser.

Local URL: http://localhost:8555

http://localhost:8555にアクセスするとStreamlitアプリケーションを確認することができます。

Streamlit | 1

テキスト

Streamlitでは、Markdownなどを使用してテキストを表示することができます。

app.py
import streamlit as st

st.title("title") # Title
st.header("header") # Header
st.write("write") # Display
st.markdown("# markdown") # markdown
st.text("text") # Text

Streamlit | 2

ウィジェット

Streamlitには、スライダー、チェックボックス、ラジオボタンなどのインタラクティブなウィジェットが用意されています。

app.py
import streamlit as st

st.button("Button")  # Button
st.selectbox("Selectbox", ("Option 1", "Option 2"))  # Select box
st.multiselect("Multi selectbox", ("Option 1", "Option 2"))  # Multi select box
st.slider("Slider", 0, 100, 20)  # Slider
st.radio("Radio button", ("Radio 1", "Radio 2"))  # Radio button
st.checkbox("Check button")  # Checkbox
st.text_input("Text input")  # Text input (one line)
st.text_area("Text area")  # Text input (multiple line)
st.file_uploader("Choose file")  # File upload

Streamlit | 3

ウィジェットの戻り値を変数に入れることで表示制御も行うことができます。

app.py
import streamlit as st

checked = st.checkbox("Check button")

if checked:
    st.button("Button")

Streamlit | 4
Streamlit | 5

サイドバー

Streamlitでは、主要なアプリケーションのエリアとは別に、サイドバーを使用してウィジェットを表示することができます。

app.py
import streamlit as st

st.button("Button")

st.sidebar.text_input("Text input")
st.sidebar.text_area("Text area")
st.sidebar.slider("Slider", 0, 100, 20)

Streamlit | 6

テーブル

StreamlitはPandasのDataFrameを直接表示する機能を持っています。これにより、データを整形されたテーブル形式で表示できます。また、大量のデータに対しても高速に動作します。

app.py
import numpy as np
import pandas as pd

import streamlit as st

df = pd.DataFrame(np.random.randn(5, 10))
st.dataframe(df)  # Pandas dataframe
st.table(df)  # Table
st.metric(
    label="Temperature",
    value=f"{round(df[0].mean(), 2)} °F",
    delta=f"{round(df[0].max() - df[0].min(), 2)} °F",
)  # Metrics

Streamlit | 7

グラフ

Streamlitを使って、データをグラフ化して視覚的に理解することができます。

app.py
import streamlit as st
import pandas as pd
import numpy as np

dataframe = pd.DataFrame(np.random.randn(20,3), columns=["a", "b", "c"])
st.line_chart(dataframe) # Line
st.area_chart(dataframe) # Chart
st.bar_chart(dataframe) # Bar

Streamlit | 8

マップ

Streamlitでは、地理的なデータを表示するための組み込みサポートが提供されています。

app.py
import streamlit as st
import pandas as pd
import numpy as np

df = pd.DataFrame(
    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
    columns=['lat', 'lon'])
st.map(df)

Streamlit | 9

参考

https://docs.streamlit.io/
https://docs.streamlit.io/library/api-reference

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!