시작하기 위한 최고의 Streamlit 예제 및 튜토리얼
Published on
Streamlit의 세계에 오신 것을 환영합니다!
데이터 과학자이거나 머신 러닝 열정가이고 작업을 공유하고자 하는 경우, 여기가 바로 당신이 찾는 곳입니다. 우리는 데이터 과학 커뮤니티에 큰 파장을 일으키는 강력한 도구인 Streamlit으로 만들어진 가장 흥미로운 예제를 살펴볼 것입니다. 감정 분석 및 주식 데이터 시각화부터 머신 러닝 모델 제공까지, Streamlit이 데이터 스크립트를 공유 가능한 웹 앱으로 변환하기 쉽게 만드는 방법을 알아보겠습니다.
Streamlit이란?
그러나 프로젝트에 뛰어들기 전에 Streamlit이 무엇인지 이해해 봅시다. Streamlit은 데이터 과학 및 머신 러닝을 위한 사용자 정의 웹 앱을 생성할 수 있는 오픈 소스 파이썬 프레임워크입니다.
단 몇 줄의 코드로, 사용자가 데이터를 조작하고 매개 변수를 조정하며 실시간으로 결과를 확인할 수 있는 상호 작용 기능을 구축할 수 있습니다. 데이터 탐색부터 모델 배포에 이르기까지 데이터 과학자와 엔지니어가 작업 프로세스를 좀 더 효율적으로 할 수 있도록 설계되었습니다. 따라서 경험이 풍부한 전문가든 초보자든 Streamlit이 제공하는 것이 있을 것입니다. 가능성을 살펴보겠습니다!
왜 Streamlit을 사용해야 할까요? Streamlit을 Django와 Flask와 비교해 보세요.
Streamlit은 데이터 과학 및 머신 러닝 응용 프로그램의 맥락에서 Django와 Flask와 같은 인기있는 웹 프레임워크와 비교되었습니다. 어떻게 달라지는지 살펴보겠습니다.
Streamlit, Django 및 Flask 간의 차이를 요약한 비교 표는 다음과 같습니다.
기능 | Streamlit | Django | Flask |
---|---|---|---|
데이터 과학 및 머신 러닝에 특화 | O | X | X |
사용의 용이성 | 높음 (최소한의 코딩 필요) | 중간 (높은 학습 곡선) | 중간 (웹 개발 이해 필요) |
웹 개발 지식 필요 여부 | X | O | O |
완비된 툴 제공 | X (데이터 과학 및 머신 러닝 응용 프로그램에 초점) | O (ORM, 관리자 패널, 인증 지원 등 포함) | X (최소주의적인 디자인, 라이브러리로 확장 가능) |
유연성 | 중간 (복잡한 웹 애플리케이션에는 적합하지 않음) | 높음 (복잡한 웹 애플리케이션에 적합) | 높음 (원하는 도구와 라이브러리 선택 가능) |
단순한 웹 애플리케이션에 적합 | O | 아마 (과잉 사용일 수 있음) | O |
이 표는 이 세 가지 프레임워크의 고수준 비교를 제공합니다. 최적의 선택은 당신의 특정한 요구사항과 프로젝트의 복잡성에 달렸습니다.
Streamlit 대 Django
Django (opens in a new tab)는 신속한 개발과 깨끗하고 실용적인 설계를 장려하는 고급 Python 웹 프레임워크입니다. 모델-템플릿-뷰 아키텍처 패턴을 따르며, 자체적으로 많은 기능을 갖춘 "완성형" 철학으로 알려져 있습니다. ORM, 관리자 패널 및 인증 지원과 같이 많은 기능이 이미 내장되어 제공됩니다.
Django는 강력하고 다양한 프레임워크이지만, 단순한 데이터 과학 및 머신 러닝 응용 프로그램에는 과도할 수 있습니다. 학습 곡선이 가파르며, 웹 개발 개념에 대한 충분한 이해가 필요합니다.
반면, Streamlit은 데이터 과학 및 머신 러닝 응용 프로그램을 위해 특별히 설계되었습니다. 몇 줄의 코드만으로 상호 작용적인 웹 앱을 만들 수 있으며, 웹 개발에 대한 지식이 없어도 됩니다. 그러나 Django만큼 기능이 풍부하지는 않으며 복잡한 웹 애플리케이션에 적합하지 않을 수 있습니다.
Streamlit 대 Flask
Flask (opens in a new tab)는 간결한 Python 웹 프레임워크로, 웹 애플리케이션 실행에 필요한 최소한의 기능만 제공합니다. Django보다 유연하며 사용자가 원하는 도구와 라이브러리를 선택할 수 있습니다.
Flask는 단순한 웹 애플리케이션에 적합한 선택이지만, Django와 마찬가지로 웹 개발 개념에 대한 충분한 이해가 필요합니다. Flask를 사용하여 상호 작용적인 데이터 과학 및 머신 러닝 응용 프로그램을 만드는 것은 도전적이고 시간이 많이 소요될 수 있습니다.
데이터 과학 및 머신 러닝에 중점을 둔 Streamlit은 상호 작용적인 웹 앱을 쉽게 만들 수 있습니다. 웹 개발 작업의 대부분을 처리하여 데이터 과학 부분에 집중할 수 있습니다.
시작하기 좋은 Streamlit 예제
Streamlit을 사용한 TensorFlow Serving
TensorFlow Serving with Streamlit (opens in a new tab)은 TensorFlow Serving을 사용하여 TensorFlow 모델을 제공하고 Streamlit을 사용하여 웹 앱에서 예측 결과를 시각화하는 방법을 보여주는 프로젝트입니다. 이 프로젝트에는 모델을 훈련시키는 과정, 제공에 적합한 형식으로 내보내는 과정, TensorFlow Serving을 사용하여 모델을 제공하는 과정을 안내하는 Jupyter 노트북이 포함되어 있습니다. Streamlit 앱은 제공된 모델과 상호 작용하고 예측 결과를 시각화하기 위한 사용자 친화적 인터페이스를 제공합니다.
프로젝트의 작동 방식에 대해 간단히 알아보겠습니다.
-
TensorFlow 모델 훈련: 이 프로젝트에는 MNIST 데이터셋에서 간단한 TensorFlow 모델을 훈련하는 방법을 보여주는 Jupyter 노트북이 포함되어 있습니다.
-
제공을 위한 모델 내보내기: 훈련된 모델은 TensorFlow Serving으로 제공할 수 있는 형식으로 내보내집니다.
-
모델 제공: TensorFlow Serving을 사용하여 내보낸 모델을 제공하며, 머신 러닝 모델을 위한 유연하고 성능이 우수한 서빙 시스템을 제공합니다.
Streamlit을 사용하여 예측 시각화하기: Streamlit 앱을 생성하여 서빙된 모델과 상호 작용합니다. 이 앱은 사용자가 숫자를 캔버스에 그리고, 그려진 이미지를 서빙된 모델에 보내고, 예측된 숫자를 표시할 수 있습니다.
Rhyme with AI
Rhyme with AI (opens in a new tab)는 기계 학습을 사용하여 라임을 생성하는 재미있는 프로젝트입니다. 이 프로젝트는 노래 가사 코퍼스에서 훈련된 언어 모델을 사용합니다. Streamlit 앱을 통해 사용자가 단어를 입력하면 모델이 입력된 단어와 함께 라임 단어 목록을 생성합니다.
프로젝트의 작동 방법은 다음과 같습니다:
-
언어 모델 훈련하기: 이 프로젝트는 노래 가사 코퍼스에서 언어 모델을 훈련합니다. 모델은 데이터의 패턴을 학습하고, 훈련 데이터의 스타일을 모방하는 텍스트를 생성할 수 있습니다.
-
라임 생성하기: 입력 단어가 주어지면 모델은 입력 단어와 일치하는 라임 단어 목록을 생성합니다. 라임은 훈련 중 모델이 학습한 패턴에 기반하여 생성됩니다.
-
Streamlit으로 라임 시각화하기: Streamlit 앱을 생성하여 모델과 상호 작용합니다. 이 앱은 사용자가 단어를 입력하고 생성된 라임을 표시할 수 있습니다.
Sentiment Analyzer Tool
Sentiment Analyzer Tool (opens in a new tab)은 텍스트의 감정을 분석하기 위해 기계 학습을 사용하는 프로젝트입니다. 이 프로젝트에는 IMDB 영화 리뷰 데이터셋에서 감성 분석 모델을 훈련하는 방법을 설명하는 Jupyter 노트북이 포함되어 있습니다. Streamlit 앱은 사용자 친화적인 인터페이스를 제공하여 모델과 상호 작용하고 사용자 입력 텍스트의 감정을 분석합니다.
프로젝트의 작동 방법에 대한 간략한 개요는 다음과 같습니다:
-
감성 분석 모델 훈련하기: 이 프로젝트에는 IMDB 영화 리뷰 데이터셋에서 감성 분석 모델을 훈련하는 Jupyter 노트북이 포함되어 있습니다. 이 모델은 리뷰가 긍정적인지 부정적인지 예측하는 이진 분류 모델입니다.
-
Streamlit으로 감성 분석하기: Streamlit 앱을 생성하여 모델과 상호 작용합니다. 이 앱은 사용자가 텍스트를 입력하고 입력 텍스트의 예측된 감정을 표시할 수 있습니다.
Squote: 주식 시세 시각화
Squote (opens in a new tab)는 Streamlit을 사용하여 대화형 주식 시세 시각화 도구를 생성하는 프로젝트입니다. 이 앱은 사용자가 주식을 선택하고 해당 주식의 과거 가격 데이터를 시각화할 수 있게 해줍니다.
프로젝트의 작동 방법은 다음과 같습니다:
-
주식 데이터 가져오기: 앱은 yfinance 라이브러리를 사용하여 선택한 주식의 과거 가격 데이터를 가져옵니다. 이 라이브러리는 야후 파이낸스의 금융 데이터에 접근할 수 있게 해줍니다.
-
Streamlit으로 주식 데이터 시각화하기: Streamlit 앱을 생성하여 가져온 데이터와 상호 작용합니다. 이 앱은 사용자가 주식과 날짜 범위를 선택하고, 선택한 날짜 범위에 따른 주식 가격 차트를 표시합니다.
Streamlit을 사용한 금융 탐색적 데이터 분석
Streamlit을 사용한 금융 탐색적 데이터 분석 (opens in a new tab)은 Streamlit을 사용하여 금융 데이터의 탐색적 데이터 분석(EDA)을 수행하는 프로젝트입니다. 이 앱은 사용자가 주식을 선택하고 해당 주식의 가격, 거래량, 수익 등과 같은 다양한 측면을 시각화할 수 있게 해줍니다.
프로젝트의 작동 방법에 대한 간략한 개요는 다음과 같습니다:
-
주식 데이터 가져오기: 앱은 yfinance 라이브러리를 사용하여 선택한 주식의 과거 가격 및 거래량 데이터를 가져옵니다.
-
Streamlit으로 탐색적 데이터 분석 수행하기: Streamlit 앱을 생성하여 가져온 데이터와 상호 작용합니다. 이 앱은 사용자가 주식을 선택하고 주식의 가격 선 그래프, 거래량 막대 그래프, 수익 분포의 히스토그램 등 다양한 시각화를 표시합니다.
WhatsApp 채팅 분석기
WhatsApp 채팅 분석기 (opens in a new tab)는 Streamlit을 사용하여 대화형 WhatsApp 채팅 분석기를 생성하는 프로젝트입니다. 이 앱을 사용하면 사용자가 채팅 파일을 업로드하고, 채팅의 여러 측면(사용자별 메시지 수, 가장 활발한 사용자, 가장 많이 사용된 단어 등)을 시각화할 수 있습니다.
프로젝트의 작동 방법에 대한 간략한 개요는 다음과 같습니다:
-
채팅 파일 업로드하기: 앱을 사용하여 WhatsApp 채팅 파일을 업로드할 수 있습니다. WhatsApp에서 '채팅 내보내기' 기능을 사용하여 채팅 파일을 얻을 수 있습니다.
-
Streamlit으로 채팅 분석하기: Streamlit 앱을 생성하여 업로드된 채팅 파일과 상호 작용합니다. 앱은 채팅 파일을 파싱하고 채팅 데이터를 시각화합니다.
뉴욕시의 Uber 탑승 데이터
뉴욕시의 Uber 탑승 데이터 (opens in a new tab)는 Streamlit을 사용하여 뉴욕시의 Uber 탑승 데이터를 대화형으로 시각화하는 데모입니다. 이 앱을 사용하면 사용자가 날짜와 시간을 선택하고 선택한 시간에 대한 뉴욕시의 Uber 탑승 지도를 표시할 수 있습니다.
프로젝트의 작동 방법에 대한 간략한 개요는 다음과 같습니다:
-
Uber 데이터 불러오기: 앱은 뉴욕시의 Uber 탑승 데이터셋을 로드합니다. 데이터셋은 각 탑승의 날짜, 시간 및 위치 정보를 포함합니다.
-
Streamlit으로 Uber 탑승 데이터 시각화하기: Streamlit 앱을 생성하여 Uber 데이터와 상호 작용합니다. 앱을 사용하면 사용자가 날짜와 시간을 선택하고 선택한 시간 동안 뉴욕시의 Uber 탑승 지도를 표시할 수 있습니다. 이 프로젝트는 Streamlit을 사용하여 데이터 과학 및 기계 학습을 위한 대화형 웹 앱을 만드는 데의 강력함과 다양성을 보여줍니다. 주식 데이터 시각화, 채팅 데이터 분석 또는 기계 학습 모델 제공에 관계없이 Streamlit을 사용하면 데이터 스크립트를 공유 가능한 웹 앱으로 쉽게 변환할 수 있습니다.
Streamlit 튜토리얼
Streamlit은 Python과의 원활한 통합과 간단하고 사용자 친화적인 인터페이스로 개발자와 데이터 과학자들에게 모두 인기가 높아졌습니다. Streamlit 튜토리얼의 도움으로 플랫폼을 완벽하게 이해하는 것이 훨씬 쉬워집니다. 다음 리소스를 확인해보세요:
- Streamlit을 처음부터 시작하는 방법 (opens in a new tab)
- VSCode 내에서 Streamlit 환경 구성하는 방법 (opens in a new tab)
- Streamlit으로 기본 대시보드 만들기 (opens in a new tab)
- Streamlit 세션 상태 이해하기 (opens in a new tab)
- Streamlit과 Snowflake 통합하기 (opens in a new tab)
- Streamlit 데이터 쉽게 시각화하기 (opens in a new tab)
- Streamlit으로 챗봇 만들기 (opens in a new tab)
- Streamlit 앱 배포하는 방법 (opens in a new tab)
하지만 Streamlit의 힘은 여기서 끝나지 않습니다. Streamlit을 사용하여 빠르게 데이터 시각화 앱을 만들고 싶은 데이터 과학자들을 위해, 무거운 작업을 도와주는 멋진 Python 라이브러리가 있습니다!
PyGWalker (opens in a new tab)는 Tableau와 유사한 UI를 Streamlit 앱에 손쉽게 통합할 수 있는 Python 라이브러리입니다.
Sven from Coding is Fun (opens in a new tab)이 제작한 이 멋진 비디오에서 이 강력한 데이터 시각화 Python 라이브러리로 Streamlit 앱을 개선하는 데 필요한 상세한 단계를 확인해보세요!
Sven과 그의 훌륭한 기여 (opens in a new tab)에 감사드립니다!
추가로 PyGWalker GitHub 페이지 (opens in a new tab)에서 더 많은 PyGWalker 예제도 확인할 수 있습니다.
결론
Streamlit은 데이터 과학과 기계 학습을 위한 대화형 웹 앱을 만드는 강력한 도구입니다. 사용하기 쉽고 적은 양의 코딩이 필요하며 데이터 과학자와 기계 학습 전문가를 위해 특별히 설계되었습니다. 이 문서에서 살펴본 프로젝트들은 주식 데이터 시각화부터 기계 학습 모델 제공까지 Streamlit의 힘과 다양성을 보여줍니다.
경험이 있는 데이터 과학자가 자신의 작업을 공유하려는 경우나 초보자가 시작하는 경우, Streamlit은 데이터 스크립트를 공유 가능한 웹 앱으로 변환하는 빠르고 쉬운 방법을 제공합니다.
자주 묻는 질문
Streamlit은 Django보다 좋은가요?
사용 용도에 따라 다릅니다. Django는 복잡한 웹 애플리케이션에 적합한 강력하고 기능이 많은 프레임워크이며, Streamlit은 데이터 과학 및 기계 학습을 위한 대화형 웹 앱을 전용으로 설계되었습니다. 작업을 공유하려는 데이터 과학자나 기계 학습 전문가라면 Streamlit이 더 좋은 선택일 것입니다.
Streamlit은 좋은 프레임워크인가요?
네, Streamlit은 데이터 과학과 기계 학습을 위한 대화형 웹 앱을 만드는 데 좋은 프레임워크입니다. 사용하기 쉽고 적은 양의 코딩이 필요하며, 프로젝트의 데이터 과학 부분에 집중할 수 있습니다.
Streamlit은 Flask보다 좋은가요?
데이터 과학과 기계 학습 애플리케이션의 경우, 보통 Flask보다 Streamlit을 선택하는 것이 좋습니다. Flask는 유연하고 가벼운 웹 프레임워크이지만, Flask를 사용하여 대화형 데이터 과학 및 기계 학습 애플리케이션을 만드는 것은 도전적이고 시간이 많이 소요될 수 있습니다. 그에 반해 Streamlit은 이러한 유형의 애플리케이션을 특별히 위해 설계되었으며 대화형 웹 앱을 쉽게 만들 수 있습니다.