TechBull運営/データアナリストのOka(@okmokm_ml)です。前回からコミュニティの参加振り返りブログを書いてから3ヶ月が経ちました。今回はデータアナリストの仕事をしている私から、Pythonで簡単にWebアプリを構築できるライブラリであるStreamlitを紹介したいと思います。
Streamlitとは
StreamlitはPythonのライブラリで、フロントエンドの知識なしでデータ可視化のWebアプリを作成することができます。Pythonはデータ分析によく使われる言語のため、PythonだけでWebアプリの構築ができるようになっています。
Streamlitでできること
作成したいWebアプリのパーツに応じて、streamlit.hogehogeといった関数が用意されているので、欲しいパーツを組み合わせることで簡単にWebアプリを作ることができます。
以下のようにAPIの中で用意されているWebページの要素を組み合わせることで開発していきます。
- ページ全体のレイアウトを作りたいとしたらLayouts and ContainersのAPIから必要な関数を取ってくる
- ボタンを表示させたいとしたらInput widgetsから必要な関数を取ってくる
- チャートを表示させたいとChart elementsから必要な関数を取ってくる
実装例
sample.pyに以下の内容を記載します。コード中にあるst.sidebar、st.ragio、st.line_chart、st.bar_chartがstreamlitを使用している部分です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import streamlit as st import pandas as pd import numpy as np with st.sidebar: add_radio = st.radio( "可視化したい内容を選択してください", ("売上", "顧客数") ) # サンプルデータの作成 chart_data_sales = pd.DataFrame( np.random.randint(100, 500, size=(20, 3)), columns=["a", "b", "c"]) chart_data_customer = pd.DataFrame( np.random.randint(1, 50, size=(20, 3)), columns=["a", "b", "c"]) # ラジオボタン選択後の処理 if add_radio == "売上": # 売上の折れ線グラフを表示 st.line_chart(chart_data_sales) elif add_radio == "顧客数": # 顧客数の棒グラフを表示 st.bar_chart(chart_data_customer) |
上記のファイル作成ができたら、以下を実行しましょう。
1 |
$ streamlit run sample.py |
Streamlitサーバーが立ち上がり、ブラウザ上でWebアプリが表示されていると思います。
まとめ
Streamlitを使うと、たった1つのファイル、たったこれだけのコードでWebアプリの作成ができます。データアナリストとしては、フロントエンドの知識がなくてもあっという間にダッシュボードの構築ができるのが大きなメリットです。もちろんデプロイには別の知識が必要なので、それは違う技術スタックが必要ですが・・・Pythonはデータサイエンティスト、データアナリストによく使われる言語であり、ライブラリの開発が活発なので、今後もこういったツールがたくさん出てくると思います!
未経験からキャリアチェンジして5年目のデータアナリスト。顧客データ分析、ダッシュボード構築などの業務に携わる。データ分析基盤構築等のプロジェクトに関わるためのインフラ知識を身に着けて、キャリアの幅を広げていく目的でTechBullへ参加。