+ 개발

Streamlit으로 데이터 분석 및 시각화

AI.Logger 2024. 9. 2. 20:08
  • 수업 내용 리마인드 및 아카이빙 목적의 업로드


 

1. Streamlit이란?

 

Streamlit은 데이터 분석과 시각화를 위한 파이썬 라이브러리에요. 복잡한 코딩 없이도 직관적으로 데이터를 분석하고, 시각화된 결과물을 웹 애플리케이션 형태로 만들 수 있어요.

  • 간편한 사용: 코드가 짧고 이해하기 쉬워서, 프로그래밍 경험이 많지 않아도 쉽게 사용할 수 있어요.
  • 다양한 데이터 소스 지원: CSV, JSON, SQL 등 여러 가지 데이터 형식을 쉽게 다룰 수 있어요.
  • 실시간 데이터 처리: 실시간으로 데이터를 분석하고, 그 결과를 바로바로 볼 수 있어요.
  • 쉽게 웹 애플리케이션으로 공유: 분석한 데이터를 간편하게 웹 애플리케이션으로 만들어 공유할 수 있어요.

 

2. Streamlit의 강점

 

Streamlit은 빠르게 프로토타입을 만들고 테스트할 수 있는 도구로, 간단한 코드만으로도 다양한 기능을 구현할 수 있어요. 이 과정에서 직관적인 인터페이스와 시각화 도구를 활용해 데이터를 효과적으로 분석할 수 있죠.

  • 빠른 개발: 간단한 코드로 데이터 분석 애플리케이션을 빠르게 만들 수 있어서, 아이디어를 바로바로 실현할 수 있어요.
  • 상호작용 기능: 사용자가 직접 데이터를 조작하고 결과를 확인할 수 있는 인터랙티브한 애플리케이션을 만들 수 있어요. 슬라이더, 버튼, 텍스트 입력 등 다양한 위젯을 통해 데이터를 동적으로 분석할 수 있어요.
  • 강력한 시각화 도구: Pandas, Matplotlib, Altair 같은 파이썬 라이브러리와 잘 어울려서, 복잡한 데이터도 쉽게 시각화할 수 있어요.
  • 쉬운 공유와 협업: 만든 애플리케이션을 웹에 쉽게 배포할 수 있어, 팀원이나 클라이언트와 협업하기도 편리해요.

 

3. Streamlit 설치와 기본 사용법

 

Streamlit을 설치하고 애플리케이션을 만들어보는 과정도 아주 간단해요.

 

1) Streamlit 설치

pip install streamlit

이 명령어로 Streamlit을 설치하세요. Python 3.6 이상이 필요해요.

 

2) Streamlit 애플리케이션 만들기

import streamlit as st

# 앱 제목 설정
st.title("첫 번째 Streamlit 앱")

# 텍스트 출력
st.write("안녕하세요! Streamlit입니다.")

# 이미지 출력
st.image("image.jpg", width=200)

위 코드에서 st.title은 페이지 제목을 설정하고, st.write는 텍스트를 출력하며, st.image는 이미지를 출력하는 기능이에요.

 

3) Streamlit 애플리케이션 실행

streamlit run hello_streamlit.py

이 명령어로 애플리케이션을 실행하면, 웹 브라우저에서 결과를 확인할 수 있어요.

 

4. 데이터 표시와 시각화

 

Streamlit은 데이터를 다양한 방식으로 표시하고, 시각화할 수 있는 기능을 제공해요. 데이터를 표 형태로 출력하거나, 차트와 그래프를 만들어 시각적으로 표현할 수 있어요.

  • 데이터프레임 표시: Pandas 데이터프레임을 테이블 형식으로 간편하게 출력할 수 있어요.
import pandas as pd
import streamlit as st

# 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie'], '나이': [25, 30, 35]}
df = pd.DataFrame(data)

# 데이터프레임 출력
st.dataframe(df)

 

  • 기본 차트 시각화: Streamlit을 이용해 막대 그래프나 선 그래프 같은 기본 차트를 손쉽게 만들 수 있어요.
# 막대 그래프 생성
st.bar_chart(df['나이'])

# 선 그래프 생성
st.line_chart(df['나이'])

 

  • 고급 시각화: Matplotlib 같은 라이브러리를 활용해서 좀 더 복잡한 시각화도 가능해요.
import matplotlib.pyplot as plt

# 간단한 Matplotlib 그래프
plt.figure(figsize=(10, 4))
plt.bar(df['이름'], df['나이'])
st.pyplot(plt)

 

5. 사용자 입력과 데이터 조작

 

Streamlit은 다양한 사용자 입력 위젯을 제공해서, 사용자가 직접 데이터를 입력하고 조작할 수 있어요. 이를 통해 동적이고 반응형인 애플리케이션을 만들 수 있죠.

  • 사용자 입력
age = st.slider("나이 선택:", 18, 65)
st.write("선택된 나이:", age)

 

  • 데이터 필터링: 사용자가 선택한 값에 따라 데이터를 필터링하고, 그 결과를 시각화할 수 있어요.
import pandas as pd

# 데이터프레임 필터링
filtered_df = df[df['나이'] > age]
st.dataframe(filtered_df)

 

6. Streamlit 앱 배포와 협업

 

Streamlit으로 만든 애플리케이션은 웹 기반으로 쉽게 배포할 수 있어요. GitHub와 연동하거나, Streamlit의 클라우드 서비스를 이용해 애플리케이션을 공유하고 협업할 수 있습니다.

 

1) GitHub를 통한 배포:

  • 먼저 GitHub에 저장소를 생성하고, 애플리케이션 코드를 업로드합니다.
  • requirements.txt 파일을 만들어 필요한 패키지를 정리해요.

2) Streamlit 배포:

  • Streamlit Cloud에 접속해 GitHub 저장소를 선택하여 애플리케이션을 배포할 수 있어요.
  • 배포된 애플리케이션은 URL을 통해 쉽게 공유할 수 있고, 팀원이나 클라이언트와 실시간으로 협업할 수 있습니다.