Pythonのステキなライブラリ「Streamlit」でインタラクティブなツールを作る!
▼はじめに
Python好きな自分としては、シンプルにチャチャっとアプリを作りたいなあ、と強く願っています。
特に2021年は「マイクロアプリ開発元年」としてまして、「小さなアプリ」を持続的にリリースしていきたい、その中で役立ったアプリがあったらスケールしていきたい、と思っています。
そんな中、データサイエンス向けの手軽にアプリが作れるStreamlitというライブラリを発見しましたので、チュートリアルをやりながら、マイクロアプリを作っていくことにしました。
公式サイトをざっと見る限り、かなり手軽に作れそうですので、よろしければ皆様も一緒に手を動かして覚えていきましょう!
▼なぜやるのか?
・マイクロアプリを作れるようになりたいから
・なんだかステキなライブラリのような気がするから
▼なにをやるのか?
・マイクロアプリを作ってみる
▼どうやるのか?
・ローカルで開発する
・チュートリアルをやってみる
・公式サイトを読み下してみる
▼実装
Anaconda環境でやっていますが、普通のPython環境でもできます。
・インストールする
conda install -c conda-forge streamlit
普通の環境でしたら、
pip install streamlit
結果
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /Users/rw-mbp/opt/anaconda3/envs/st1
added / updated specs:
- streamlit
The following packages will be downloaded:
package | build
---------------------------|-----------------
abseil-cpp-20200923.2 | h046ec9c_1 886 KB conda-forge
altair-4.1.0 | py_1 614 KB conda-forge
appnope-0.1.2 | py39h6e9494a_0 10 KB conda-forge
argh-0.26.2 | pyh9f0ad1d_1002 26 KB conda-forge
argon2-cffi-20.1.0 | py39h5a22ff9_2 45 KB conda-forge
arrow-cpp-2.0.0 |py39hc542cae_9_cpu 15.9 MB conda-forge
astor-0.8.1 | pyh9f0ad1d_0 25 KB conda-forge
async_generator-1.10 | py_0 18 KB conda-forge
attrs-20.3.0 | pyhd3deb0d_0 41 KB conda-forge
aws-c-common-0.4.59 | hc929b4f_1 142 KB conda-forge
aws-c-event-stream-0.1.6 | hc90cea0_6 21 KB conda-forge
aws-checksums-0.1.10 | h38ed436_0 48 KB conda-forge
aws-sdk-cpp-1.8.70 | h154b968_1 1.9 MB conda-forge
backcall-0.2.0 | pyh9f0ad1d_0 13 KB conda-forge
backports-1.0 | py_2 4 KB conda-forge
backports.functools_lru_cache-1.6.1| py_0 8 KB conda-forge
base58-2.0.1 | py_0 7 KB conda-forge
bleach-3.2.1 | pyh9f0ad1d_0 111 KB conda-forge
blinker-1.4 | py_1 13 KB conda-forge
boto3-1.16.45 | pyhd8ed1ab_0 70 KB conda-forge
botocore-1.19.45 | pyhd8ed1ab_0 4.4 MB conda-forge
brotli-1.0.9 | hb1e8313_3 422 KB conda-forge
brotlipy-0.7.0 |py39h66d5b7b_1001 357 KB conda-forge
bzip2-1.0.8 | hc929b4f_4 155 KB conda-forge
c-ares-1.17.1 | hc929b4f_0 95 KB conda-forge
cachetools-4.1.1 | py_0 12 KB conda-forge
cffi-1.14.4 | py39h7786acb_1 219 KB conda-forge
chardet-4.0.0 | py39h6e9494a_0 198 KB conda-forge
click-7.1.2 | pyh9f0ad1d_0 64 KB conda-forge
cryptography-3.3.1 | py39h79a2c39_0 614 KB conda-forge
decorator-4.4.2 | py_0 11 KB conda-forge
defusedxml-0.6.0 | py_0 22 KB conda-forge
entrypoints-0.3 | pyhd8ed1ab_1003 8 KB conda-forge
gflags-2.2.2 | hb1e8313_1004 92 KB conda-forge
gitdb-4.0.5 | py_0 46 KB conda-forge
gitpython-3.1.11 | py_0 110 KB conda-forge
glog-0.4.0 | hb7f4fc5_3 89 KB conda-forge
grpc-cpp-1.33.2 | h1671c54_2 2.5 MB conda-forge
idna-2.10 | pyh9f0ad1d_0 52 KB conda-forge
importlib-metadata-3.3.0 | py39h6e9494a_2 20 KB conda-forge
importlib_metadata-3.3.0 | hd8ed1ab_2 3 KB conda-forge
ipykernel-5.4.2 | py39h71a6800_0 166 KB conda-forge
ipython-7.19.0 | py39h71a6800_0 1.1 MB conda-forge
ipython_genutils-0.2.0 | py_1 21 KB conda-forge
ipywidgets-7.6.2 | pyhd3deb0d_0 101 KB conda-forge
jedi-0.18.0 | py39h6e9494a_1 922 KB conda-forge
jinja2-2.11.2 | pyh9f0ad1d_0 93 KB conda-forge
jmespath-0.10.0 | pyh9f0ad1d_0 21 KB conda-forge
jsonschema-3.2.0 | py_2 45 KB conda-forge
jupyter_client-6.1.7 | py_0 76 KB conda-forge
jupyter_core-4.7.0 | py39h6e9494a_0 72 KB conda-forge
jupyterlab_pygments-0.1.2 | pyh9f0ad1d_0 8 KB conda-forge
jupyterlab_widgets-1.0.0 | pyhd8ed1ab_1 130 KB conda-forge
krb5-1.17.2 | h60d9502_0 1.2 MB conda-forge
libblas-3.9.0 | 3_openblas 11 KB conda-forge
libcblas-3.9.0 | 3_openblas 11 KB conda-forge
libcurl-7.71.1 | h9bf37e3_8 297 KB conda-forge
libev-4.33 | haf1e3a3_1 99 KB conda-forge
libevent-2.1.10 | hddc9c9b_3 1.0 MB conda-forge
libgfortran-5.0.0 | h6c81a4c_15 19 KB conda-forge
libgfortran5-9.3.0 | h6c81a4c_15 1.7 MB conda-forge
liblapack-3.9.0 | 3_openblas 11 KB conda-forge
libnghttp2-1.41.0 | h7580e61_2 831 KB conda-forge
libopenblas-0.3.12 |openmp_h54245bb_1 8.8 MB conda-forge
libprotobuf-3.14.0 | hfd3ada9_0 2.2 MB conda-forge
libsodium-1.0.18 | hbcb3906_1 516 KB conda-forge
libssh2-1.9.0 | h8a08a2b_5 214 KB conda-forge
libthrift-0.13.0 | h990abc0_6 351 KB conda-forge
libutf8proc-2.6.1 | h35c211d_0 93 KB conda-forge
llvm-openmp-11.0.0 | h73239a0_1 268 KB conda-forge
markupsafe-1.1.1 | py39h66d5b7b_2 25 KB conda-forge
mistune-0.8.4 |py39h5a22ff9_1002 54 KB conda-forge
nbclient-0.5.1 | py_0 60 KB conda-forge
nbconvert-6.0.7 | py39h6e9494a_3 530 KB conda-forge
nbformat-5.0.8 | py_0 100 KB conda-forge
nest-asyncio-1.4.3 | pyhd8ed1ab_0 9 KB conda-forge
notebook-6.1.6 | py39h6e9494a_0 6.3 MB conda-forge
numpy-1.19.4 | py39he588a01_2 5.1 MB conda-forge
orc-1.6.6 | h2742e8b_0 391 KB conda-forge
packaging-20.8 | pyhd3deb0d_0 34 KB conda-forge
pandas-1.2.0 | py39h089d6f7_0 10.7 MB conda-forge
pandoc-2.11.3.1 | h35c211d_0 14.3 MB conda-forge
pandocfilters-1.4.2 | py_1 9 KB conda-forge
parquet-cpp-1.5.1 | 2 3 KB conda-forge
parso-0.8.1 | pyhd8ed1ab_0 67 KB conda-forge
pexpect-4.8.0 | pyh9f0ad1d_2 47 KB conda-forge
pickleshare-0.7.5 | py_1003 9 KB conda-forge
prometheus_client-0.9.0 | pyhd3deb0d_0 44 KB conda-forge
prompt-toolkit-3.0.8 | pyha770c72_0 237 KB conda-forge
protobuf-3.14.0 | py39h81cd7d3_0 326 KB conda-forge
ptyprocess-0.6.0 | py_1001 15 KB conda-forge
pyarrow-2.0.0 |py39hc80f86d_9_cpu 2.2 MB conda-forge
pycparser-2.20 | pyh9f0ad1d_2 94 KB conda-forge
pydeck-0.5.0 | pyh9f0ad1d_0 3.6 MB conda-forge
pyopenssl-20.0.1 | pyhd8ed1ab_0 48 KB conda-forge
pyparsing-2.4.7 | pyh9f0ad1d_0 60 KB conda-forge
pyrsistent-0.17.3 | py39h5a22ff9_1 87 KB conda-forge
pysocks-1.7.1 | py39h2c36a5b_2 27 KB conda-forge
python-dateutil-2.8.1 | py_0 220 KB conda-forge
pytz-2020.5 | pyhd8ed1ab_0 244 KB conda-forge
pyyaml-5.3.1 | py39h66d5b7b_1 180 KB conda-forge
pyzmq-20.0.0 | py39h07c395c_1 466 KB conda-forge
re2-2020.11.01 | h2e338ed_0 190 KB conda-forge
requests-2.25.1 | pyhd3deb0d_0 51 KB conda-forge
s3transfer-0.3.3 | pyhd8ed1ab_5 51 KB conda-forge
send2trash-1.5.0 | py_0 12 KB conda-forge
six-1.15.0 | pyh9f0ad1d_0 14 KB conda-forge
smmap-3.0.4 | pyh9f0ad1d_0 22 KB conda-forge
snappy-1.1.8 | hb1e8313_3 29 KB conda-forge
streamlit-0.73.1 | pyhd8ed1ab_0 6.0 MB conda-forge
terminado-0.9.1 | py39h6e9494a_1 25 KB conda-forge
testpath-0.4.4 | py_0 85 KB conda-forge
toml-0.10.2 | pyhd8ed1ab_0 18 KB conda-forge
toolz-0.11.1 | py_0 46 KB conda-forge
tornado-6.1 | py39h5a22ff9_0 645 KB conda-forge
traitlets-5.0.5 | py_0 81 KB conda-forge
tzlocal-2.1 | pyh9f0ad1d_0 18 KB conda-forge
urllib3-1.26.2 | pyhd8ed1ab_0 98 KB conda-forge
validators-0.18.2 | pyhd3deb0d_0 18 KB conda-forge
watchdog-1.0.2 | py39hcbf5805_0 97 KB conda-forge
wcwidth-0.2.5 | pyh9f0ad1d_2 33 KB conda-forge
webencodings-0.5.1 | py_1 12 KB conda-forge
widgetsnbextension-3.5.1 | py39h6e9494a_4 1.8 MB conda-forge
yaml-0.2.5 | haf1e3a3_0 81 KB conda-forge
zeromq-4.3.3 | h74dc148_3 249 KB conda-forge
zipp-3.4.0 | py_0 11 KB conda-forge
------------------------------------------------------------
Total: 104.8 MB
The following NEW packages will be INSTALLED:
abseil-cpp conda-forge/osx-64::abseil-cpp-20200923.2-h046ec9c_1
altair conda-forge/noarch::altair-4.1.0-py_1
appnope conda-forge/osx-64::appnope-0.1.2-py39h6e9494a_0
argh conda-forge/noarch::argh-0.26.2-pyh9f0ad1d_1002
argon2-cffi conda-forge/osx-64::argon2-cffi-20.1.0-py39h5a22ff9_2
arrow-cpp conda-forge/osx-64::arrow-cpp-2.0.0-py39hc542cae_9_cpu
astor conda-forge/noarch::astor-0.8.1-pyh9f0ad1d_0
async_generator conda-forge/noarch::async_generator-1.10-py_0
attrs conda-forge/noarch::attrs-20.3.0-pyhd3deb0d_0
aws-c-common conda-forge/osx-64::aws-c-common-0.4.59-hc929b4f_1
aws-c-event-stream conda-forge/osx-64::aws-c-event-stream-0.1.6-hc90cea0_6
aws-checksums conda-forge/osx-64::aws-checksums-0.1.10-h38ed436_0
aws-sdk-cpp conda-forge/osx-64::aws-sdk-cpp-1.8.70-h154b968_1
backcall conda-forge/noarch::backcall-0.2.0-pyh9f0ad1d_0
backports conda-forge/noarch::backports-1.0-py_2
backports.functoo~ conda-forge/noarch::backports.functools_lru_cache-1.6.1-py_0
base58 conda-forge/noarch::base58-2.0.1-py_0
bleach conda-forge/noarch::bleach-3.2.1-pyh9f0ad1d_0
blinker conda-forge/noarch::blinker-1.4-py_1
boto3 conda-forge/noarch::boto3-1.16.45-pyhd8ed1ab_0
botocore conda-forge/noarch::botocore-1.19.45-pyhd8ed1ab_0
brotli conda-forge/osx-64::brotli-1.0.9-hb1e8313_3
brotlipy conda-forge/osx-64::brotlipy-0.7.0-py39h66d5b7b_1001
bzip2 conda-forge/osx-64::bzip2-1.0.8-hc929b4f_4
c-ares conda-forge/osx-64::c-ares-1.17.1-hc929b4f_0
cachetools conda-forge/noarch::cachetools-4.1.1-py_0
cffi conda-forge/osx-64::cffi-1.14.4-py39h7786acb_1
chardet conda-forge/osx-64::chardet-4.0.0-py39h6e9494a_0
click conda-forge/noarch::click-7.1.2-pyh9f0ad1d_0
cryptography conda-forge/osx-64::cryptography-3.3.1-py39h79a2c39_0
decorator conda-forge/noarch::decorator-4.4.2-py_0
defusedxml conda-forge/noarch::defusedxml-0.6.0-py_0
entrypoints conda-forge/noarch::entrypoints-0.3-pyhd8ed1ab_1003
freetype conda-forge/osx-64::freetype-2.10.4-h3f75d11_0
gflags conda-forge/osx-64::gflags-2.2.2-hb1e8313_1004
gitdb conda-forge/noarch::gitdb-4.0.5-py_0
gitpython conda-forge/noarch::gitpython-3.1.11-py_0
glog conda-forge/osx-64::glog-0.4.0-hb7f4fc5_3
grpc-cpp conda-forge/osx-64::grpc-cpp-1.33.2-h1671c54_2
idna conda-forge/noarch::idna-2.10-pyh9f0ad1d_0
importlib-metadata conda-forge/osx-64::importlib-metadata-3.3.0-py39h6e9494a_2
importlib_metadata conda-forge/noarch::importlib_metadata-3.3.0-hd8ed1ab_2
ipykernel conda-forge/osx-64::ipykernel-5.4.2-py39h71a6800_0
ipython conda-forge/osx-64::ipython-7.19.0-py39h71a6800_0
ipython_genutils conda-forge/noarch::ipython_genutils-0.2.0-py_1
ipywidgets conda-forge/noarch::ipywidgets-7.6.2-pyhd3deb0d_0
jedi conda-forge/osx-64::jedi-0.18.0-py39h6e9494a_1
jinja2 conda-forge/noarch::jinja2-2.11.2-pyh9f0ad1d_0
jmespath conda-forge/noarch::jmespath-0.10.0-pyh9f0ad1d_0
jpeg conda-forge/osx-64::jpeg-9d-hbcb3906_0
jsonschema conda-forge/noarch::jsonschema-3.2.0-py_2
jupyter_client conda-forge/noarch::jupyter_client-6.1.7-py_0
jupyter_core conda-forge/osx-64::jupyter_core-4.7.0-py39h6e9494a_0
jupyterlab_pygmen~ conda-forge/noarch::jupyterlab_pygments-0.1.2-pyh9f0ad1d_0
jupyterlab_widgets conda-forge/noarch::jupyterlab_widgets-1.0.0-pyhd8ed1ab_1
krb5 conda-forge/osx-64::krb5-1.17.2-h60d9502_0
lcms2 conda-forge/osx-64::lcms2-2.11-h11f7e16_1
libblas conda-forge/osx-64::libblas-3.9.0-3_openblas
libcblas conda-forge/osx-64::libcblas-3.9.0-3_openblas
libcurl conda-forge/osx-64::libcurl-7.71.1-h9bf37e3_8
libev conda-forge/osx-64::libev-4.33-haf1e3a3_1
libevent conda-forge/osx-64::libevent-2.1.10-hddc9c9b_3
libgfortran conda-forge/osx-64::libgfortran-5.0.0-h6c81a4c_15
libgfortran5 conda-forge/osx-64::libgfortran5-9.3.0-h6c81a4c_15
liblapack conda-forge/osx-64::liblapack-3.9.0-3_openblas
libnghttp2 conda-forge/osx-64::libnghttp2-1.41.0-h7580e61_2
libopenblas conda-forge/osx-64::libopenblas-0.3.12-openmp_h54245bb_1
libpng conda-forge/osx-64::libpng-1.6.37-h7cec526_2
libprotobuf conda-forge/osx-64::libprotobuf-3.14.0-hfd3ada9_0
libsodium conda-forge/osx-64::libsodium-1.0.18-hbcb3906_1
libssh2 conda-forge/osx-64::libssh2-1.9.0-h8a08a2b_5
libthrift conda-forge/osx-64::libthrift-0.13.0-h990abc0_6
libtiff conda-forge/osx-64::libtiff-4.2.0-h355d032_0
libutf8proc conda-forge/osx-64::libutf8proc-2.6.1-h35c211d_0
libwebp-base conda-forge/osx-64::libwebp-base-1.1.0-hbcb3906_3
llvm-openmp conda-forge/osx-64::llvm-openmp-11.0.0-h73239a0_1
lz4-c conda-forge/osx-64::lz4-c-1.9.2-hb1e8313_3
markupsafe conda-forge/osx-64::markupsafe-1.1.1-py39h66d5b7b_2
mistune conda-forge/osx-64::mistune-0.8.4-py39h5a22ff9_1002
nbclient conda-forge/noarch::nbclient-0.5.1-py_0
nbconvert conda-forge/osx-64::nbconvert-6.0.7-py39h6e9494a_3
nbformat conda-forge/noarch::nbformat-5.0.8-py_0
nest-asyncio conda-forge/noarch::nest-asyncio-1.4.3-pyhd8ed1ab_0
notebook conda-forge/osx-64::notebook-6.1.6-py39h6e9494a_0
numpy conda-forge/osx-64::numpy-1.19.4-py39he588a01_2
olefile conda-forge/noarch::olefile-0.46-pyh9f0ad1d_1
orc conda-forge/osx-64::orc-1.6.6-h2742e8b_0
packaging conda-forge/noarch::packaging-20.8-pyhd3deb0d_0
pandas conda-forge/osx-64::pandas-1.2.0-py39h089d6f7_0
pandoc conda-forge/osx-64::pandoc-2.11.3.1-h35c211d_0
pandocfilters conda-forge/noarch::pandocfilters-1.4.2-py_1
parquet-cpp conda-forge/noarch::parquet-cpp-1.5.1-2
parso conda-forge/noarch::parso-0.8.1-pyhd8ed1ab_0
pexpect conda-forge/noarch::pexpect-4.8.0-pyh9f0ad1d_2
pickleshare conda-forge/noarch::pickleshare-0.7.5-py_1003
pillow conda-forge/osx-64::pillow-8.0.1-py39h38d7768_0
prometheus_client conda-forge/noarch::prometheus_client-0.9.0-pyhd3deb0d_0
prompt-toolkit conda-forge/noarch::prompt-toolkit-3.0.8-pyha770c72_0
protobuf conda-forge/osx-64::protobuf-3.14.0-py39h81cd7d3_0
ptyprocess conda-forge/noarch::ptyprocess-0.6.0-py_1001
pyarrow conda-forge/osx-64::pyarrow-2.0.0-py39hc80f86d_9_cpu
pycparser conda-forge/noarch::pycparser-2.20-pyh9f0ad1d_2
pydeck conda-forge/noarch::pydeck-0.5.0-pyh9f0ad1d_0
pygments conda-forge/noarch::pygments-2.7.3-pyhd8ed1ab_0
pyopenssl conda-forge/noarch::pyopenssl-20.0.1-pyhd8ed1ab_0
pyparsing conda-forge/noarch::pyparsing-2.4.7-pyh9f0ad1d_0
pyrsistent conda-forge/osx-64::pyrsistent-0.17.3-py39h5a22ff9_1
pysocks conda-forge/osx-64::pysocks-1.7.1-py39h2c36a5b_2
python-dateutil conda-forge/noarch::python-dateutil-2.8.1-py_0
python_abi conda-forge/osx-64::python_abi-3.9-1_cp39
pytz conda-forge/noarch::pytz-2020.5-pyhd8ed1ab_0
pyyaml conda-forge/osx-64::pyyaml-5.3.1-py39h66d5b7b_1
pyzmq conda-forge/osx-64::pyzmq-20.0.0-py39h07c395c_1
re2 conda-forge/osx-64::re2-2020.11.01-h2e338ed_0
requests conda-forge/noarch::requests-2.25.1-pyhd3deb0d_0
s3transfer conda-forge/noarch::s3transfer-0.3.3-pyhd8ed1ab_5
send2trash conda-forge/noarch::send2trash-1.5.0-py_0
six conda-forge/noarch::six-1.15.0-pyh9f0ad1d_0
smmap conda-forge/noarch::smmap-3.0.4-pyh9f0ad1d_0
snappy conda-forge/osx-64::snappy-1.1.8-hb1e8313_3
streamlit conda-forge/noarch::streamlit-0.73.1-pyhd8ed1ab_0
terminado conda-forge/osx-64::terminado-0.9.1-py39h6e9494a_1
testpath conda-forge/noarch::testpath-0.4.4-py_0
toml conda-forge/noarch::toml-0.10.2-pyhd8ed1ab_0
toolz conda-forge/noarch::toolz-0.11.1-py_0
tornado conda-forge/osx-64::tornado-6.1-py39h5a22ff9_0
traitlets conda-forge/noarch::traitlets-5.0.5-py_0
tzlocal conda-forge/noarch::tzlocal-2.1-pyh9f0ad1d_0
urllib3 conda-forge/noarch::urllib3-1.26.2-pyhd8ed1ab_0
validators conda-forge/noarch::validators-0.18.2-pyhd3deb0d_0
watchdog conda-forge/osx-64::watchdog-1.0.2-py39hcbf5805_0
wcwidth conda-forge/noarch::wcwidth-0.2.5-pyh9f0ad1d_2
webencodings conda-forge/noarch::webencodings-0.5.1-py_1
widgetsnbextension conda-forge/osx-64::widgetsnbextension-3.5.1-py39h6e9494a_4
yaml conda-forge/osx-64::yaml-0.2.5-haf1e3a3_0
zeromq conda-forge/osx-64::zeromq-4.3.3-h74dc148_3
zipp conda-forge/noarch::zipp-3.4.0-py_0
zstd conda-forge/osx-64::zstd-1.4.5-h289c70a_2
The following packages will be UPDATED:
libcxx pkgs/main::libcxx-10.0.0-1 --> conda-forge::libcxx-11.0.0-h4c3b8ed_1
The following packages will be SUPERSEDED by a higher-priority channel:
ca-certificates pkgs/main::ca-certificates-2020.12.8-~ --> conda-forge::ca-certificates-2020.12.5-h033912b_0
certifi pkgs/main::certifi-2020.12.5-py39hecd~ --> conda-forge::certifi-2020.12.5-py39h6e9494a_0
openssl pkgs/main::openssl-1.1.1i-h9ed2024_0 --> conda-forge::openssl-1.1.1i-h35c211d_0
Proceed ([y]/n)? y
Downloading and Extracting Packages
brotli-1.0.9 | 422 KB | ####################################################################################### | 100%
libcurl-7.71.1 | 297 KB | ####################################################################################### | 100%
smmap-3.0.4 | 22 KB | ####################################################################################### | 100%
orc-1.6.6 | 391 KB | ####################################################################################### | 100%
aws-c-event-stream-0 | 21 KB | ####################################################################################### | 100%
s3transfer-0.3.3 | 51 KB | ####################################################################################### | 100%
wcwidth-0.2.5 | 33 KB | ####################################################################################### | 100%
nbformat-5.0.8 | 100 KB | ####################################################################################### | 100%
prompt-toolkit-3.0.8 | 237 KB | ####################################################################################### | 100%
base58-2.0.1 | 7 KB | ####################################################################################### | 100%
liblapack-3.9.0 | 11 KB | ####################################################################################### | 100%
notebook-6.1.6 | 6.3 MB | ####################################################################################### | 100%
importlib-metadata-3 | 20 KB | ####################################################################################### | 100%
pydeck-0.5.0 | 3.6 MB | ####################################################################################### | 100%
nbclient-0.5.1 | 60 KB | ####################################################################################### | 100%
async_generator-1.10 | 18 KB | ####################################################################################### | 100%
blinker-1.4 | 13 KB | ####################################################################################### | 100%
libevent-2.1.10 | 1.0 MB | ####################################################################################### | 100%
nbconvert-6.0.7 | 530 KB | ####################################################################################### | 100%
bzip2-1.0.8 | 155 KB | ####################################################################################### | 100%
cffi-1.14.4 | 219 KB | ####################################################################################### | 100%
jupyter_client-6.1.7 | 76 KB | ####################################################################################### | 100%
backcall-0.2.0 | 13 KB | ####################################################################################### | 100%
ipython-7.19.0 | 1.1 MB | ####################################################################################### | 100%
decorator-4.4.2 | 11 KB | ####################################################################################### | 100%
ptyprocess-0.6.0 | 15 KB | ####################################################################################### | 100%
mistune-0.8.4 | 54 KB | ####################################################################################### | 100%
abseil-cpp-20200923. | 886 KB | ####################################################################################### | 100%
watchdog-1.0.2 | 97 KB | ####################################################################################### | 100%
jsonschema-3.2.0 | 45 KB | ####################################################################################### | 100%
ipykernel-5.4.2 | 166 KB | ####################################################################################### | 100%
urllib3-1.26.2 | 98 KB | ####################################################################################### | 100%
ipywidgets-7.6.2 | 101 KB | ####################################################################################### | 100%
snappy-1.1.8 | 29 KB | ####################################################################################### | 100%
parso-0.8.1 | 67 KB | ####################################################################################### | 100%
pandoc-2.11.3.1 | 14.3 MB | ####################################################################################### | 100%
toml-0.10.2 | 18 KB | ####################################################################################### | 100%
validators-0.18.2 | 18 KB | ####################################################################################### | 100%
astor-0.8.1 | 25 KB | ####################################################################################### | 100%
terminado-0.9.1 | 25 KB | ####################################################################################### | 100%
pyrsistent-0.17.3 | 87 KB | ####################################################################################### | 100%
re2-2020.11.01 | 190 KB | ####################################################################################### | 100%
pyopenssl-20.0.1 | 48 KB | ####################################################################################### | 100%
appnope-0.1.2 | 10 KB | ####################################################################################### | 100%
libgfortran-5.0.0 | 19 KB | ####################################################################################### | 100%
click-7.1.2 | 64 KB | ####################################################################################### | 100%
pyparsing-2.4.7 | 60 KB | ####################################################################################### | 100%
tzlocal-2.1 | 18 KB | ####################################################################################### | 100%
markupsafe-1.1.1 | 25 KB | ####################################################################################### | 100%
numpy-1.19.4 | 5.1 MB | ####################################################################################### | 100%
send2trash-1.5.0 | 12 KB | ####################################################################################### | 100%
cachetools-4.1.1 | 12 KB | ####################################################################################### | 100%
packaging-20.8 | 34 KB | ####################################################################################### | 100%
glog-0.4.0 | 89 KB | ####################################################################################### | 100%
gitdb-4.0.5 | 46 KB | ####################################################################################### | 100%
nest-asyncio-1.4.3 | 9 KB | ####################################################################################### | 100%
pyzmq-20.0.0 | 466 KB | ####################################################################################### | 100%
jinja2-2.11.2 | 93 KB | ####################################################################################### | 100%
libcblas-3.9.0 | 11 KB | ####################################################################################### | 100%
c-ares-1.17.1 | 95 KB | ####################################################################################### | 100%
pycparser-2.20 | 94 KB | ####################################################################################### | 100%
jupyterlab_widgets-1 | 130 KB | ####################################################################################### | 100%
boto3-1.16.45 | 70 KB | ####################################################################################### | 100%
entrypoints-0.3 | 8 KB | ####################################################################################### | 100%
pexpect-4.8.0 | 47 KB | ####################################################################################### | 100%
traitlets-5.0.5 | 81 KB | ####################################################################################### | 100%
krb5-1.17.2 | 1.2 MB | ####################################################################################### | 100%
libsodium-1.0.18 | 516 KB | ####################################################################################### | 100%
argh-0.26.2 | 26 KB | ####################################################################################### | 100%
libev-4.33 | 99 KB | ####################################################################################### | 100%
gitpython-3.1.11 | 110 KB | ####################################################################################### | 100%
arrow-cpp-2.0.0 | 15.9 MB | ####################################################################################### | 100%
bleach-3.2.1 | 111 KB | ####################################################################################### | 100%
protobuf-3.14.0 | 326 KB | ####################################################################################### | 100%
ipython_genutils-0.2 | 21 KB | ####################################################################################### | 100%
jupyter_core-4.7.0 | 72 KB | ####################################################################################### | 100%
libopenblas-0.3.12 | 8.8 MB | ####################################################################################### | 100%
chardet-4.0.0 | 198 KB | ####################################################################################### | 100%
python-dateutil-2.8. | 220 KB | ####################################################################################### | 100%
yaml-0.2.5 | 81 KB | ####################################################################################### | 100%
testpath-0.4.4 | 85 KB | ####################################################################################### | 100%
jupyterlab_pygments- | 8 KB | ####################################################################################### | 100%
jedi-0.18.0 | 922 KB | ####################################################################################### | 100%
cryptography-3.3.1 | 614 KB | ####################################################################################### | 100%
streamlit-0.73.1 | 6.0 MB | ####################################################################################### | 100%
gflags-2.2.2 | 92 KB | ####################################################################################### | 100%
zipp-3.4.0 | 11 KB | ####################################################################################### | 100%
brotlipy-0.7.0 | 357 KB | ####################################################################################### | 100%
pysocks-1.7.1 | 27 KB | ####################################################################################### | 100%
libthrift-0.13.0 | 351 KB | ####################################################################################### | 100%
prometheus_client-0. | 44 KB | ####################################################################################### | 100%
libutf8proc-2.6.1 | 93 KB | ####################################################################################### | 100%
aws-checksums-0.1.10 | 48 KB | ####################################################################################### | 100%
importlib_metadata-3 | 3 KB | ####################################################################################### | 100%
tornado-6.1 | 645 KB | ####################################################################################### | 100%
toolz-0.11.1 | 46 KB | ####################################################################################### | 100%
attrs-20.3.0 | 41 KB | ####################################################################################### | 100%
jmespath-0.10.0 | 21 KB | ####################################################################################### | 100%
backports.functools_ | 8 KB | ####################################################################################### | 100%
pytz-2020.5 | 244 KB | ####################################################################################### | 100%
libssh2-1.9.0 | 214 KB | ####################################################################################### | 100%
requests-2.25.1 | 51 KB | ####################################################################################### | 100%
aws-c-common-0.4.59 | 142 KB | ####################################################################################### | 100%
libprotobuf-3.14.0 | 2.2 MB | ####################################################################################### | 100%
argon2-cffi-20.1.0 | 45 KB | ####################################################################################### | 100%
zeromq-4.3.3 | 249 KB | ####################################################################################### | 100%
idna-2.10 | 52 KB | ####################################################################################### | 100%
parquet-cpp-1.5.1 | 3 KB | ####################################################################################### | 100%
libgfortran5-9.3.0 | 1.7 MB | ####################################################################################### | 100%
six-1.15.0 | 14 KB | ####################################################################################### | 100%
pandas-1.2.0 | 10.7 MB | ####################################################################################### | 100%
backports-1.0 | 4 KB | ####################################################################################### | 100%
pickleshare-0.7.5 | 9 KB | ####################################################################################### | 100%
pandocfilters-1.4.2 | 9 KB | ####################################################################################### | 100%
pyyaml-5.3.1 | 180 KB | ####################################################################################### | 100%
pyarrow-2.0.0 | 2.2 MB | ####################################################################################### | 100%
llvm-openmp-11.0.0 | 268 KB | ####################################################################################### | 100%
webencodings-0.5.1 | 12 KB | ####################################################################################### | 100%
libnghttp2-1.41.0 | 831 KB | ####################################################################################### | 100%
widgetsnbextension-3 | 1.8 MB | ####################################################################################### | 100%
altair-4.1.0 | 614 KB | ####################################################################################### | 100%
grpc-cpp-1.33.2 | 2.5 MB | ####################################################################################### | 100%
defusedxml-0.6.0 | 22 KB | ####################################################################################### | 100%
botocore-1.19.45 | 4.4 MB | ####################################################################################### | 100%
aws-sdk-cpp-1.8.70 | 1.9 MB | ####################################################################################### | 100%
libblas-3.9.0 | 11 KB | ####################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: \ Enabling notebook extension jupyter-js-widgets/extension...
- Validating: OK
done
何やら、ものすごい量のパッケージがインストールされます!
これは期待大ですね!
・ハローワールド
streamlit コマンド
が使えるようになるらしいので、使ってみます。
streamlit hello
結果
👋 Welcome to Streamlit!
If you're one of our development partners or you're interested in getting
personal technical support or Streamlit updates, please enter your email
address below. Otherwise, you may leave the field blank.
Email:
Privacy Policy:
As an open source project, we collect usage statistics. We cannot see and do
not store information contained in Streamlit apps. You can find out more by
reading our privacy policy at: https://streamlit.io/privacy-policy
If you'd like to opt out of usage statistics, add the following to
~/.streamlit/config.toml, creating that file if necessary:
[browser]
gatherUsageStats = false
Welcome to Streamlit. Check out our demo in your browser.
Local URL: http://localhost:8501
Network URL: http://xxx.xx.x.xx:8501
Ready to create your own Python apps super quickly?
Head over to https://docs.streamlit.io
May you create awesome apps!
途中でEメール登録の有無を聞かれますが、今回はblankのままエンター。
そして、ブラウザが起動します。
ジャジャーン!!!
かっこいい!!!
簡単!!!
これは、まじでデータサイエンティストにとっては、フロント書かずに済むので、ありがたいかもしれません!
いくつかデモアプリを選択して見てみましょう。
おおお!!!
すごい!!!
アニメーションが綺麗に表示されています。
さらに、左のバーでインタラクティブに変化させることができる。
これは、本当にいいツールになりそうですね!!
・Numpyで乱数を生成しテーブル表示
チュートリアルをとりあえず進めます。
Pythonファイルを作成し、編集していきましょう。
touch df.py
vim df.py
import streamlit as st
import numpy as np
dataframe = np.random.randn(10, 20)
st.dataframe(dataframe)
一応ちょっと説明を。
touch ファイル名
touch(トーチ)コマンドは、ファイルの作成日時やアクセス日時を変更するコマンドです。
引数に指定されたファイルがない場合は、ファイルが作成されます。
そのため、ファイル作成でよく使用されるコマンドです。
vim ファイル名
vim(ヴィム)コマンドは、ファイルエディタを開き、指定されたファイルを編集することができます。
Macでは通常インストールされているコマンドです。
もちろん、他のエディタで作成、編集をしてもオッケーです。
import streamlit as st
import numpy as np
importコマンドは、ライブラリを読み込むコマンドです。
Pythonには、
1. 読み込み済みライブラリ
2. 用意されているが読み込む必要があるライブラリ
3. 用意されていないライブラリ
があります。
streamlitは、3です。
そのため、インストールとインポートをしないと使用できません。
import ライブラリ名 as ほにゃらら
の as は、「このファイルでは、このライブラリを、こう呼びます」と宣言しています。
短縮して書ける、というわけですね。
「import した streamlit を、このファイル上では、 st と呼びます」と読み下してもオッケーです。
dataframe = np.random.randn(10, 20)
st.dataframe(dataframe)
1行目で、Numpyのrandomのrandnメソッドを利用して、乱数を生成しています。
その生成された乱数を、dataframe という変数に格納しています。
2行目で、Numpyで生成した乱数を格納した dataframe 変数を、streamlitのdataframeメソッドに読み込んでいます。
おそらく、ですが、streamlitのdataframeメソッドは、データフレームを読み込むと、いい感じに表示してくれる、という便利な機能を提供してくれています。
・実行
streamlit run df.py
実行されます。
出ました!
こんなに簡単にデータフレームが表示されるなんて、感動です。。
・他にも試してみる
import streamlit as st
import numpy as np
import pandas as pd
dataframe = pd.DataFrame(
np.random.randn(10, 20),
columns=('col %d' % i for i in range(20)))
st.dataframe(dataframe.style.highlight_max(axis=0))
今度は pandas が使われています。
最終行で指定されているのは、列で一番数値が大きいセルがハイライトされる、というものです。
便利!
import streamlit as st
x = st.slider('x')
st.write(x, 'squared is', x * x)
スライダーの実装もお手軽!
スライダーの値も簡単に取得でき、反映ができます!
▼結果
正直、驚きです!
こんなに簡単にウィジェット実装ができてしまうなんて。。
・機械学習のモデルを作って、入力変数にUIをつける。
・データの可視化を簡単に行う。
このようなケースにうってつけですね!
2021年は、streamlitを積極的に使ってアプリ開発をしていきたいと思います。
このnoteでも、引き続きチュートリアル学習を進めていきたいと思います。
この記事がお役に立ったら、ぜひフォローと好きをお願いしますね!