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
반응형
'APP > Streamlit' 카테고리의 다른 글
[Streamlit] Streamlit을 사용한 붓꽃 데이터 시각화 프로젝트 (0) | 2023.08.09 |
---|---|
[Streamlit] Streamlit의 기초! 간단한 시각화해보기 (0) | 2023.08.09 |
[Streamlit] Streamlit의 기초! 타이머 구현하기 (0) | 2023.08.09 |
[Streamlit] Streamlit의 기초! Expander (0) | 2023.08.09 |
[Streamlit] Streamlit의 기초! Column과 Tab을 사용한 Layout (0) | 2023.08.09 |