Skip to content

Streamlit 파일 업로드: Python으로 파일 업로드와 표시 마스터하기

Streamlit의 세계에 오신 것을 환영합니다. 이 Python 프레임워크는 웹 애플리케이션을 생성하는 것을 바람처럼 매끄럽게 만들어줍니다. Streamlit이 자랑하는 중요한 기능 중 하나는 효율적인 파일 업로드 시스템이며, 이 가이드에서 그 기능을 포괄적으로 다룰 것입니다.

웹 애플리케이션에서 파일 업로드 기능은 사용자 상호작용을 가능하게 하는 중요한 기능입니다. 데이터 분석, 이미지 처리, 파일 변환 등과 같은 다양한 목적으로 사용자가 데이터를 입력할 수 있도록 해줍니다. Streamlit의 컨텍스트에서 파일 업로드 기능은 더욱 중요해집니다. 이 기능을 통해 데이터 과학자와 머신러닝 열정가들은 데이터셋을 직접 조작, 시각화 및 상호작용할 수 있습니다. Streamlit의 파일 업로드 기능의 내부 작동 방식과 창의적인 가능성을 탐색해봅시다.

무료로 Streamlit을 사용하여 데이터 분석 및 데이터 시각화 앱을 만들고 싶나요?

PyGWalker (opens in a new tab)는 스트림릿(streamlit) 앱에 Tableau와 유사한 UI를 손쉽게 삽입할 수 있는 파이썬 라이브러리입니다. Coding is Fun (opens in a new tab)Sven (opens in a new tab)이 제작한 이 멋진 비디오를 확인해보세요. 이 비디오에서는 이 강력한 데이터 시각화 Python 라이브러리를 사용하여 스트림릿 앱을 강화시키기 위한 자세한 단계를 보여줍니다!


Sven과 그의 훌륭한 기여 (opens in a new tab)에 대한 특별한 감사를 전합니다. PyGWalker 커뮤니티에 도움을 주셨습니다!

또한 PyGWalker GitHub 페이지 (opens in a new tab)에서 PyGWalker 예제를 더 확인할 수도 있습니다.

Streamlit 파일 업로드 위젯: 파일 업로드의 게이트웨이

Streamlit 파일 업로드 위젯이란 무엇일까요? 이는 파일 업로드를 원활한 과정으로 만들어주기 위해 Streamlit이 제공하는 독특한 구성 요소입니다. 파일 업로드 위젯은 사용자가 버튼을 클릭하여 파일을 업로드할 수 있는 대화형 인터페이스를 제공합니다.

Streamlit 앱에서 파일 업로드 위젯을 구현하는 것은 매우 간단합니다. streamlit.file_uploader 함수가 모든 무거운 작업을 수행해줍니다. 파일 업로더의 제목으로 사용할 문자열 인자를 제공하기만 하면 됩니다.

다음은 간단한 예시입니다:

import streamlit as st
 
uploaded_file = st.file_uploader("CSV 파일을 선택하세요", type='csv')

위 코드에서 'CSV 파일을 선택하세요'는 파일 업로더의 제목이고, type='csv'는 파일 유형을 CSV 파일로 제한하는 역할을 합니다.

Streamlit에서 파일 업로드하는 방법: 프로세스 알아보기

Streamlit에서 파일을 업로드하는 것은 이 라이브러리의 간단함과 사용자 친화성 덕분에 아주 쉽습니다. 업로드된 파일은 임시 파일로서 메모리에 저장되며 다른 파일 객체와 마찬가지로 조작할 수 있습니다.

Streamlit은 이미지, 오디오, 비디오, CSV, PDF 등 다양한 파일 유형을 지원합니다. 더 포괄적인 예제를 통해 파일 업로드 프로세스를 이해해봅시다.

import streamlit as st
 
uploaded_file = st.file_uploader("파일을 선택하세요", type=['csv', 'png', 'jpg'])
if uploaded_file is not None:
    # 파일을 바이트로 읽기:
    bytes_data = uploaded_file.getvalue()
    st.write(bytes_data)
    
    # 문자열 기반 IO로 변환하기:
    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))
    st.write(stringio)
    
    # 파일을 문자열로 읽기:
    string_data = stringio.read()
    st.write(string_data)

이 예제에서는 파일 유형을 CSV, PNG, JPG로 확장했습니다. 파일이 업로드되면 해당 파일을 바이트로 읽거나, 문자열 기반 IO로 변환하거나, 직접 문자열로 읽을 수 있습니다.

업로드된 파일 표시: 데이터부터 시각화까지

파일을 업로드하면 해당 파일을 추가 처리 및 시각화하는 등 다양한 작업에 이용할 수 있습니다. 그렇다면 Streamlit에서 업로드된 파일을 어떻게 표시할 수 있을까요? 답은 생각보다 간단합니다.

CSV 파일을 업로드했으며, 업로드한 파일을 Pandas를 사용하여 데이터 프레임으로 시각화하고 싶다고 가정해봅시다. 다음과 같이 할 수 있습니다.

import streamlit as st
import pandas as pd
 
uploaded_file = st.file_uploader("CSV 파일을 업로드하세요", type='csv')
if uploaded_file is not None:
    data = pd.read_csv(uploaded_file)
    st.write(data)

이 코드는 데이터 프레임을 Streamlit 앱에서 직접 표시하여 데이터 조작이나 시각화를 진행할 수 있게 합니다.

다중 파일 업로드 처리: 대량 데이터의 힘

단일 파일 업로드를 정복했으므로 한 단계 더 나아가봅시다. Streamlit에서 여러 파일을 업로드할 수 있을까요? 절대로 가능합니다! 이 기능은 여러 데이터셋이나 대량 이미지, 오디오 파일 등을 처리해야 할 때 특히 유용할 수 있습니다.

여러 파일을 업로드하려면 st.file_uploader 함수의 accept_multiple_files 매개변수를 True로 설정하면 됩니다.

import streamlit as st
 
uploaded_files = st.file_uploader("파일을 선택하세요", accept_multiple_files=True)
for uploaded_file in uploaded_files:
    st.write(uploaded_file.name)

여러 파일을 업로드하는 동안 Streamlit의 파일 업로드 크기 제한을 고려해야 합니다. Streamlit은 기본적으로 최대 200MB의 업로드를 허용합니다. 하지만 이 제한을 Streamlit 구성 파일에서 수정할 수 있습니다. 이것은 우리 가이드의 첫 번째 네 부분을 다루었습니다! Streamlit이 우리에게 쉬운 파일 업로드 프로세스를 제공함을 알아보았습니다. 하지만 여기서 멈추지 않습니다! 우리 가이드의 다음 부분에서는 검증, 보안 등과 같은 고급 주제로 나아가보겠습니다.

Streamlit 파일 업로드 진행률 바: 업로드 추적하기

이제 여러 개의 파일을 업로드하는 법을 알았으니, 업로드 과정을 추적하는 방법이 있는지 궁금할 것입니다. Streamlit에서는 Streamlit 파일 업로드 진행률 바로도 이 문제를 해결할 수 있습니다. 파일 업로드 중에 자동으로 나타나며, 사용자에게 업로드 과정에 대한 실시간 피드백을 제공합니다. 이 모든 것은 Streamlit에서 내부적으로 처리되므로 별도의 코드가 필요하지 않습니다!

파일 업로드에 관한 고급 주제

다음으로, Streamlit 파일 업로드와 관련된 몇 가지 고급 주제에 대해 더 자세히 알아보겠습니다. 먼저 파일 업로드 검증부터 시작해보겠습니다.

Streamlit 파일 업로드 검증

업로드된 파일의 유형이나 크기를 확인하여 애플리케이션에 적합한지를 확인해야 할 수도 있습니다. 이러한 과정을 파일 업로드 검증이라고 합니다. Streamlit에서는 st.file_uploader 함수의 type 매개변수를 설정하여 업로드할 수 있는 파일 유형을 제한할 수 있습니다.

또한, 파일이 업로드된 후에는 사용자 정의 검증 점검을 구현할 수도 있습니다. 예를 들어, 필요한 열이 있는지 확인하기 위해 CSV 파일의 내용을 확인할 수 있습니다.

Streamlit 파일 업로드의 보안

파일 업로드를 처리할 때 보안은 매우 중요한 고려사항입니다. 다행히도 Streamlit은 보안에 신중하게 접근합니다. 모든 업로드된 파일은 디스크가 아닌 메모리에 저장됩니다. 스크립트가 다시 실행될 때 Streamlit은 이전에 업로드된 파일을 삭제합니다. 그러나 특정한 사용 사례에 따라 추가적인 보안 조치를 구현하는 것이 항상 권장됩니다.

S3로의 Streamlit 파일 업로드

업로드된 파일을 나중에 사용하기 위해 저장소 서비스인 AWS S3에 업로드하는 것이 좋을 수도 있습니다. Streamlit에서 이를 위한 내장 함수는 제공하지 않지만, boto3 라이브러리를 사용하면 쉽게 구현할 수 있습니다. st.file_uploader에서 파일 개체를 가져온 후에는 이를 S3에 업로드할 수 있습니다.

데이터베이스로의 Streamlit 파일 업로드

비슷하게, 업로드된 파일 또는 해당 데이터를 직접 데이터베이스에 저장할 수도 있습니다. Streamlit에 파일이 업로드되면 해당 데이터를 처리하고 데이터베이스에 적합한 Python 라이브러리를 사용하여 데이터를 저장할 수 있습니다.

머신러닝에서의 Streamlit 파일 업로드

머신러닝 프로젝트의 맥락에서 Streamlit의 파일 업로드 기능은 빛나는 역할을 합니다. 사용자는 데이터셋을 앱에 직접 업로드할 수 있습니다. 그런 다음 데이터를 처리하고 모델을 구축하며 예측을 수행하고 결과를 표시할 수 있습니다. 이 모든 것이 앱 내에서 이루어집니다!

예를 들어, 사용자는 이미지를 업로드하고, 머신러닝 모델은 해당 이미지를 처리하여 객체를 식별하거나 이미지를 분류할 수 있습니다. 가능성은 무궁무진하고 흥미로운 것들입니다!

결론

이 포괄적인 가이드에서는 Streamlit의 파일 업로드 기능의 잠재력을 알아보았습니다. 단일 파일 업로드의 기본부터 여러 파일 처리, 검증 및 보안과 같은 고급 주제를 모두 다뤘습니다. 또한, Streamlit 파일 업로드를 AWS S3 및 데이터베이스와 통합하는 방법에 대해 언급했습니다. 이러한 도구를 이용하면 Streamlit을 사용하여 매력적이고 상호작용적인 웹 애플리케이션을 만드는 데 필요한 모든 것을 갖추게 됩니다.

자신의 Streamlit 앱을 Tableau처럼 만들어주는 멋진 데이터 분석 및 데이터 시각화 도구인 PyGWalker를 알고 계셨나요?

PyGWalker (opens in a new tab)는 스트림릿 앱을 손쉽게 Tableau와 같은 UI로 포장할 수 있는 파이썬 라이브러리입니다.

PyGWalker를 사용한 데이터 시각화 (opens in a new tab)

자주 묻는 질문

1. 파일을 Streamlit에 어떻게 업로드하나요?

st.file_uploader 함수를 사용하여 Streamlit에 파일을 업로드할 수 있습니다. 이 함수는 사용자가 파일을 업로드할 수 있는 Streamlit 앱 내에서 위젯을 제공합니다.

2. Streamlit은 업로드된 파일을 어디에 저장하나요?

Streamlit은 업로드된 파일을 디스크가 아닌 메모리에 저장합니다. 이 파일은 임시 파일로 처리되며, 스크립트가 다시 실행되면 삭제됩니다.

3. API 파일을 어떻게 업로드하나요?

Streamlit의 st.file_uploader는 API 파일을 포함한 모든 파일 유형을 처리할 수 있습니다. 파일이 업로드된 후에는 필요에 따라 해당 파일을 처리할 수 있습니다.

4. Streamlit의 업로드 크기는 어떻게 되나요?

기본적으로 Streamlit은 최대 200MB의 업로드 크기를 허용합니다. 그러나 이 제한은 Streamlit 환경 설정 파일에서 수정할 수 있습니다.