データ分析者のための最も簡単なWebアプリ開発ライブラリStreamlit
こんにちは! PA Labです。
今日は最近よく話題になっているStreamlitの紹介をしていきたいと思います。
主にこの記事では
- Web開発の知識がないが、Pythonで簡単な分析は行う事が出来る
- インタラクティブな操作でデータを操作出来る簡単なデモ開発
となります。これらがさっと出来るようになると、例えば本格的なBIツールを導入しなくてもPythonで分析をするスキルさえあれば社内向けに毎日の集計可視化結果などを共有できる事が出来ます。
目次
WebフレームワークStreamlitとは
Streamlitはデータ分析者にとって最も簡単に出来るWebアプリ開発ライブラリです。PythonにはFlask, Djangoなど沢山のWebライブラリがあるのですが、データ分析の可視化やJupyter Notebookで行ったデータ分析の処理を簡単にデモアプリとして作成する事が出来ます。
Streamlitのインストール
私の環境はM1/MacOS BigSur(11.2)ですが、いつもの通りpip installで簡単にインストールする事が出来ます。
$ pip install streamlit
Streamlitサーバーを立ち上げる
デモを見る事ができます。なんとコマンドはこれだけです。Pythonは徹底的に初心者に優しいインターフェースのライブラリが増えてきていますね。
$ streamlit hello
DataFrameのデモ
一番ユースケースとして多いのがDataFrameになるかと思うので、こちらのデモを見ていきましょう。
このようなグラフを作成することが出来て、Webブラウザを介してアクセスすることが出来ます。簡単ですね!
これは実際の農業総産出額のデータを使ったデモになります。国の名前が記載されている所で、他の国の名前を入れてみると複数の国で比較をする事が出来ます。今回は中国とアメリカで比較をしており、アメリカの農業総産出額は2倍程度上がっているのに対して、中国の農業総産出額はここ50年で7倍以上になっていることが分かります。
実際のコードは以下のようになります。
df = get_UN_data()
countries = st.multiselect(
"Choose countries", list(df.index), ["China", "United States of America"]
)
if not countries:
st.error("Please select at least one country.")
else:
data = df.loc[countries]
data /= 1000000.0
st.write("### Gross Agricultural Production ($B)", data.sort_index())
data = data.T.reset_index()
data = pd.melt(data, id_vars=["index"]).rename(
columns={"index": "year", "value": "Gross Agricultural Product ($B)"}
)
chart = (
alt.Chart(data)
.mark_area(opacity=0.3)
.encode(
x="year:T",
y=alt.Y("Gross Agricultural Product ($B):Q", stack=None),
color="Region:N",
)
)
st.altair_chart(chart, use_container_width=True)
簡単に抜粋をしていくと、
以下の行では中国とアメリカをデフォルトの設定として表示させるマルチセレクトを設定しています。
countries = st.multiselect(
"Choose countries", list(df.index), ["China", "United States of America"]
)
streamlitの一つの良い所はMarkdownをそのまま使用することが出来る事です。エンジニアの皆さんはMarkdownで書くことが多いかと思いますが、デモアプリにも使用することが出来るのは便利ですね。
st.write("### Gross Agricultural Production ($B)", data.sort_index())
最後に以下の行でchartを表示させています。Altairというグラフ作成ライブラリの機能で作成したチャートをstremlit上で表示させています。
st.altair_chart(chart, use_container_width=True)
まとめ
今回は簡単なStreamlitの扱い方を紹介していきました。簡単なデモアプリを社内で作成するぐらいなら簡単にできそうですね。技術選定の際にはこういった新しいライブラリも選択肢の一つとして覚えておくと大幅な工数削減に繋げていきやすいです。
この記事へのコメントはありません。