著者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温かく見守ってください。皆さんと共に勉強していきましょう。第19回では、データの可視化などにも活用できるWebアプリケーションフレームワーク「Streamlit」の基本的な使い方を紹介します。
シェルスクリプトマガジン Vol.89は以下のリンク先でご購入できます。
図7 「magic.py」ファイルに記述するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import streamlit as st # 素のテキストはマークダウンで表示される(docstring以外) ''' # Magicという仕組み 説明を _markdown_ で書けます。 ''' '### 文字列や変数の取り扱い' a = st.number_input("整数aの値を入れてください:+1:", value=0) b = st.number_input("整数bの値を入れてください:+1:", value=0) x = a + b 'a + b = ', x # 文字列と変数の値を並べて直接描画する '### 表の取り扱い' import pandas as pd df = pd.DataFrame({'名前': ['あや','ゆみ','みなこ','とめ'], '年齢': [24,22,32,95]}) df # データフレームを直接描画する '### チャートの取り扱い' import matplotlib.pyplot as plt import numpy as np arr = np.random.normal(1, 1, size=100) fig, ax = plt.subplots() ax.hist(arr, bins=20) fig # チャートも直接描画できる |
図9 キャッシュを設定するコードの例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'### チャートの取り扱い' import matplotlib.pyplot as plt import numpy as np @st.cache_data def make_chart(): arr = np.random.normal(1, 1, size=100) fig, ax = plt.subplots() ax.hist(arr, bins=20) return fig fig = make_chart() fig # チャートも直接描画できる |
図10 山手線の駅の位置を地図上にプロットするWebアプリのコード
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import streamlit as st import pandas as pd import json with open('yamate.geojson','r') as f: data = json.load(f) coords = [f['geometry']['coordinates'] \ for f in data ['features'] if f['geometry']['type'] == 'Point'] map_data = pd.DataFrame(coords, columns=['lon', 'lat']) st.map(map_data) |
図12 ウィジェットをサイドバーに配置するコードの例
1 2 3 4 5 6 7 8 |
import streamlit as st selected = st.sidebar.selectbox( 'なに食べる?', ('ramen', 'curry', 'katsudon'), ) st.image(selected + '.jpg') |