streamlit.file_uploaderについて
解決したいこと
streamlitで複数のcsvファイルをst.file_uploaderでアップロードしようとしていますが、一部のファイルのアップロードが止まったままになってしまい、うまくいかない。
止まったアップロードを☓で削除すると先に進む。
全てのアップロードがうまくいくようにしたいです。
該当するソースコード
import streamlit as st
import pandas as pd
from io import BytesIO
# @st.cache_data(show_spinner=False) # st.cache_dataを使用する
def generate_csv_data(dataframe):
# データフレームをCSV形式のバイトデータに変換
csv_data = dataframe.to_csv(index=False, encoding="utf-8-sig").encode("utf-8-sig")
return csv_data
def dl_dataframe(dataframe):
# ダウンロードボタンを表示
st.download_button(
label="ダウンロード",
data=generate_csv_data(dataframe),
file_name="downloaded_dataframe.csv",
key="download_button",
)
st.title("CSV作成")
uploaded_files = st.file_uploader(
label="ファイルインストール", type="csv", accept_multiple_files=True, key="file_uploader"
)
with st.spinner("ファイル読み込み中..."):
if uploaded_files is not None:
count = 0
df_list = []
# ファイルの非同期読み込み
for uploaded_file in uploaded_files:
try:
# アップロードされたファイルの内容をPandasのデータフレームに読み込む
df = pd.read_csv(
uploaded_file, encoding="cp932", sep=",", dtype={"項目A": str}
)
df_list.append(df)
count += 1
except Exception as e:
st.write(f"CSVファイルの読み込みエラー: {e}")
# 読み込んだ複数のデータフレームを結合する
if df_list:
combined_df = pd.concat(df_list, ignore_index=True)
# 結合したデータフレームを表示
st.dataframe(combined_df)
# ダウンロードボタンを表示
dl_dataframe(combined_df)
# データフレームの統計情報の表示
st.write("データフレームの統計情報:")
st.write(combined_df.describe())
# データフレームの加工(例: 列の選択)
selected_columns = st.multiselect("表示する列を選択してください", combined_df.columns)
if selected_columns:
grouped_df = (
combined_df.groupby(selected_columns)[["項目B", "項目C", "項目D"]]
.sum()
.reset_index()
)
st.write("SUM集計")
st.write(grouped_df)
自分で試したこと
chatgptやググったりしましたがうまくいきません。
逆に混乱してきましたのでご教授のほどよろしくお願いいたします。。。
0