数据预处理后从Streamlit web应用程序下载数据帧时出现错误



需要的任务是在Streamlit上部署数据预处理web应用程序,用户可以在其中上传原始数据帧并下载处理后的数据帧。我试图下载的文件上的数据预处理,如缺失值输入已经完成,但我得到一个错误如下:

RuntimeError: Invalid binary data format: <class 'pandas.core.frame.DataFrame'>
关于如何解决这个问题,我一点头绪也没有。请帮助我,因为我是新的python和StreamLit。代码是
import streamlit as st
import pandas as pd
import os
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
temp='\temp.csv'
path=os.getcwd()
path=path+temp
def upload_csv(zxc):
if zxc:
df=pd.read_csv(zxc)
st.dataframe(df)
df.to_csv(path,index=False)
return df

def upload_xlsx(zxc):
if zxc:
df=pd.read_excel(zxc)
st.dataframe(df)
df.to_csv(path,index=False)
return df
def mvt_mean(df):
new_df=df.fillna(df.mean())
new_df=new_df.fillna(df.select_dtypes(include='object').mode().iloc[0])
st.dataframe(new_df)
return new_df

def mvt_median(df):
new_df=df.fillna(df.median())
new_df=new_df.fillna(df.select_dtypes(include='object').mode().iloc[0])
st.dataframe(new_df)
return new_df
def mvt_mode(df):
new_df=df.fillna(df.select_dtypes(include='object').mode().iloc[0])
st.dataframe(new_df)
return new_df
def export_data():
with open('temp.csv','r+') as f:
#contents=csv.reader(f)
df=pd.read_csv(path)
result=mvt_mean(df)
result.to_csv(index=False)
st.sidebar.download_button(label='Download CSV',data=result,mime='text/csv',file_name='Download.csv')
return

st.title('Hello Streamlit Front end for Python ')
option = st.sidebar.selectbox('DSA Application',('Data-PreProcessing', 'Data-Visualization', 'Machine-Learning'))
st.sidebar.write('You selected:', option)
if option=='Data-PreProcessing':
format_options=['csv','xlsx']
a=st.sidebar.radio('Choose the file type',format_options)
if a=='csv':
b=st.sidebar.file_uploader("Choose a file",type='csv')
if b :
if st.sidebar.checkbox('Upload File'):
df=upload_csv(b)
#if st.sidebar.checkbox('Proceed for missing value treatment'):
opt=st.sidebar.radio('Impute Missing Value using',('Mean','Median','Mode'))
st.sidebar.write('You selected',opt)
if opt=='Mean':
mvt_mean(df)


export_data()
elif opt=='Median':
mvt_median(df)
#st.sidebar.download_button(label='Download CSV',data=d,mime='text/csv',file_name='Download.csv')
export_data()
elif opt=='Mode':
mvt_mode(df)
#st.sidebar.download_button(label='Download CSV',data=d,mime='text/csv',file_name='Download.csv')
export_data()
#elif a=='xlsx':
#a=st.sidebar.file_uploader("Choose a file",type='xlsx')
#b=st.sidebar.button('Upload File')
#if b:
#df=upload_xlsx(a)
#st.dataframe(df)



我和你犯了同样的错误。我通过:

data_as_csv= data_to_csv.to_csv(index=False).encode("utf-8")
st.download_button(
"Download data as CSV", 
data_as_csv, 
"benchmark-tools.csv",
"text/csv",
key="download-tools-csv",
)