前提・実現したいこと
以下のコードはcsvからデータを読み取り、DataFrameに変換し、最終的にStreamlitによってWeb上(HTML)に可視化するコードです。
更に次の2点の機能として追加しています。
- 検索機能を追加し、検索ボックスにキーワードを入れて検索ボタンを押すとDataFrameの該当箇所のみを取得・表示する
- CSVボタンを押すとDataFrameをCSVダウンロードできるようにする
from ipython_genutils.py3compat import encode import pandas as pd import numpy as np import streamlit as st import base64 def main(): @st.cache def get_df(path): df = pd.read_csv(path ,encoding='shift jis') return df # CSVダウンロード def download_link(object_to_download, download_filename, download_link_text): if isinstance(object_to_download,pd.DataFrame): object_to_download = object_to_download.to_csv(index=False, encoding='shift-jis') b64 = base64.b64encode(object_to_download.encode()).decode() return f'<a href="data:file/txt;base64,{b64}" download="{download_filename}">{download_link_text}</a>' df = get_df('sample01.csv') st.write(df) if st.button('csv', key='01'): tmp_download_link = download_link(df, 'sample.csv', 'Click here') st.markdown(tmp_download_link, unsafe_allow_html=True) keyword = st.text_input("nameから検索", value="",) if st.button('検索'): ret = df[df['name'].str.contains(str(keyword))] st.write(ret) if __name__ == '__main__': st.title('sample system') main() # username = st.sidebar.text_input("UserName:", value="",) # password = st.sidebar.text_input("Password:", value="", type="password") # if st.sidebar.button('Login'): # if username == 'admin' and password == 'password': # st.sidebar.success("Logged In as {}".format(username)) # main() # else: # st.error("password error")
上記は実現できました。
最後にログイン機能を追加しようと考え、上記コードのコメント部分を作成しました。
(動作させる際はmain()をコメントアウトし、既にコメントアウトされている部分を有効にして下さい)
発生している問題・エラーメッセージ
ログイン機能を追加し、ユーザ名admin,パスワードpasswordでログインした後に、上記のCSVダウンロード機能や検索機能を実行すると、画面全体が白くなり何も表示されなくなります。
原因がわからず困っています。どなたか教えて下さい。よろしくお願いいたします。
コード中に記載のsample01.csvの内容は以下です。
no | name | type |
---|---|---|
1 | name_01 | A |
2 | name_02 | B |
3 | name_03 | C |
4 | name_04 | D |
5 | name_05 | E |
6 | name_06 | F |
7 | name_07 | A |
8 | name_08 | A |
9 | name_09 | A |
10 | name_10 | A |
補足情報(FW/ツールのバージョンなど)
・Windows 10 pro 64bit
・Python 3.9.4
・streamlit 0.83.0
・numpy 1.20.2
・pandas 1.2.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/30 14:19