著者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温かく見守ってください。皆さんと共に勉強していきましょう。第19回では、データの可視化などにも活用できるWebアプリケーションフレームワーク「Streamlit」の基本的な使い方を紹介します。
シェルスクリプトマガジン Vol.89は以下のリンク先でご購入できます。![]()
![]()
図7 「magic.py」ファイルに記述するコード
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 キャッシュを設定するコードの例
'### チャートの取り扱い'
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アプリのコード
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 ウィジェットをサイドバーに配置するコードの例
import streamlit as st
selected = st.sidebar.selectbox(
'なに食べる?',
('ramen', 'curry', 'katsudon'),
)
st.image(selected + '.jpg')