본문 바로가기
APP/Streamlit

[Streamlit] Streamlit의 기초! 파일 올리고 내려받기

by Foxy현 2023. 8. 9.
728x90
반응형

데이터 분석 및 시각화 웹 애플리케이션에서 사용자에게 특정 데이터를 다운로드할 수 있는 기능을 제공하는 것은 꽤 흔한 요구사항입니다. Streamlit은 이를 위한 간편한 st.download_button() 함수를 제공합니다. 이번 글에서는 Streamlit을 사용하여 데이터프레임을 CSV 파일로 다운로드하는 버튼을 어떻게 구현하는지 살펴보겠습니다.

 

파일 내려받기


간단한 예제를 위해, pandas를 사용하여 3개의 행을 갖는 데이터프레임을 생성합니다.

 

df = pd.DataFrame(data={'Columns':[1,2,3]})
st.dataframe(df)
st.download_button(label='파일 내려 받기', data=df.to_csv(), file_name='myDf.csv')

파일 업로드하기

 

1. CSV 파일 업로더

사용자로부터 CSV 파일을 업로드 받아, 해당 데이터를 데이터프레임 형태로 보여줍니다.

myFile1 = st.file_uploader('csv 파일 한 개를 선택해주세요')
out1 = st.empty()

if myFile1:
    out1.write('csv 파일 한개를 성공적으로 업로드하였습니다.')
    myDF = pd.read_csv(myFile1)
    st.write(myDF)

 

2. TXT 파일 업로더

사용자로부터 TXT 파일을 업로드 받아, 해당 텍스트를 화면에 출력합니다.

 

myFile2 = st.file_uploader('txt 파일 한개를 선택해주세요')
out2 = st.empty()

if myFile2:
    out2.write('txt 파일 한개를 성공적으로 업로드하였습니다.')
    mytxt = StringIO(myFile2.getvalue().decode('utf-8')).read()
    st.code(mytxt)

 

 

3. 여러 파일 올리기

myFiles = st.file_uploader('여러개의 파일을 선택해주세요:', accept_multiple_files=True)
out3 = st.container()

if myFiles:
    out3.write('한 개 이상의 파일을 업로드하였습니다')
    names = []
    sizes = []
    for aFile in myFile:
        names.append(aFile.name)
        sizes.append(str(aFile.size)) 
    out3.write(f'파일 이름은 : { ", ".join(names) }') 
    out3.write(f'파일 크기는 : { ", ".join(sizes) }')

 

 

 

 

 

 

728x90
반응형