「streamlit勉強会」に参加しました
streamlitってなんだろう?
と思いながら参加しまししました。
fin-pyというPython x 金融のコミュニティ主催の勉強会です。
目次
streamlit
https://docs.streamlit.io/en/stable/getting_started.htmlにStreamlitを動かすソースコードがあります。
streamlitはインタラクティブな機械学習にちょうどよいそうです。
ストリームリットって読むのですね。
今日の勉強会のソースコードはGithubで公開されています。https://github.com/lightondust/finteract_streamlit
すでに動くアプリはこちらで確認できます。
https://share.streamlit.io/lightondust/finteract_streamlit
すごくご準備万端でご用意されていました。
手元で動く環境を触りながらお話を聞けるのはわかりやすくて嬉しいですね。
streamlitはPythonだけで手軽に動くWebアプリにできるそうです。
アプリの起動
1 2 3 |
pip install streamlit streamlit hello |
これだけでデモ画面が用意されたHelloアプリが起動できるそうです。
1 2 |
streamlit run streamlit_app.py |
アプリの起動時はrunコマンドで起動できます。
コーディング
1 2 |
st.markdown() |
コードでマークダウンが使えるので、Webページへの表示もだいたいなんでもできる。
サンプルアプリでもラジオボタンとかで表示を切り替えたりしてます。
Display interactive widgetsというチェックボックスやボタンやラジオボタンなどのメソッドが用意されています。
例えばチェックボックスだとこんな感じ。
1 2 |
log_y = st.checkbox('対数スケール', key='log_total') |
log_yにはチェックしたかどうかのBoolean値が代入されます。
selectboxだとデータフレームの列を選択肢にできる。
1 2 3 |
sectors = list(set(company_info_df['セクター'].to_list())) sector = st.selectbox('セクター', sectors) |
選択した値がsectorに代入されます。
書きやすいコードですね。
デプロイ
Streamlit Shareを使うとサクッとデプロイしてアプリを動かせます。
プライベートな認証情報とかは扱えないと。
無料のパブリックな環境なので仕方ないですね。
他にはHerokuを使う場合もあります。
もちろんサーバーを用意してデプロイすることも可能。
パフォーマンス
ユーザー操作、選択のたびに画面の関連コードが実行し直すので遅くなる。
対処法は、@st.cacheを使って共通処理を一回だけ実行にする、
そして一画面分の再実行なので、画面をメニューで分ける。
処理順と表示順
streamlitはコードを書いた順に実行される。
シンプルに書けるがゆえの制約ですね。
Placeholdersを使うとコードの順番を変更できる。
まとめ
Jupyter Notebookとかで解析や可視化したものを、簡単にアプリ化できるのがstreamlitなんですね。
素早く試して検証するプロトタイピングがこれからさらに重要になるなかで、このようなツールを知れることはすごくいいですね。
発表いただいた@sea85419さん、運営の皆さま、ありがとうございました!
当日の資料はconnpassのイベントページstreamlit勉強会で公開されています。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
Redmine REST APIを操作するpython_redmineを試してみた
Redmine のGUIの登録が面倒なのでコマンドで登録、更新、時間の記録が出来 …
-
SQLAlchemyのModelクラスをMySQLから自動生成する
SQLAlchemyのMySQLモデルを書くのが面倒で、きっと何かツールがあるの …
-
PyCharmでテキストを折り返す
超小ネタです。 コーディングしているときは1行でそんなに長いコードを書かないので …
-
「MonotaRo Tech #3 テスト自動化」に行ってきました
モノタロウさんの「MonotaRo Tech #3 テスト自動化」に行ってきまし …
-
Python openpyxlで結合セルを含むExcelファイルを開くと罫線が消える
PythonのExcelを読み書きするためのライブラリ、openpyxlで結合セ …
-
Linux Mint 17 MATE 64bit にTensorFlowをインストールする
勉強会でTensorFlowを使用しますので、Linux Mint 17 MAT …
-
IPython Notebookで梅田のラーメン屋さんの統計情報を抽出するというハンズオンに行ってきました
IPython Notebookで梅田のラーメン屋さんの情報をWebスクレイピン …
-
pythonのsqlalchemyで嵌った話
エラーメッセージ InvalidRequestError: SQL expres …
-
PythonでHTMLエスケープされた全角ハイフンをアンエスケープする
PythonでHTMLエスケープとアンエスケープについて調べていると、 xml. …
-
SendGrid(Python)で添付ファイル付きのメールを送信する
SendGridを使って添付ファイル付きのメールを送信するサンプルをPython …