본문 바로가기

Python

데이터 시각화를 빠르게! Streamlit으로 웹 애플리케이션 만들기

728x90
반응형

프론트엔드 개발을 하지 않더라도, 개발자라면 데이터 분석 결과나 모델의 성능을 웹페이지를 통해 보여줘야 하는 상황이 종종 발생합니다. 특히 머신러닝 엔지니어의 경우, 모델의 성능 개선 정도를 명확히 전달하기 위해 결과물을 웹으로 시각화하는 경우가 많습니다. 이때 간단하고 빠르게 웹 프론트를 구현할 수 있는 도구가 필요할 때가 있는데, 바로 그럴 때 Streamlit이 유용합니다.

이 글에서는 Streamlit이 무엇인지, 어떤 특장점이 있는지, 그리고 기본적인 사용 방법에 대해 알아보겠습니다.

Streamlit이란?

Streamlit은 데이터를 시각화하고 공유할 수 있는 웹 애플리케이션을 빠르게 개발할 수 있도록 도와주는 파이썬 기반의 프레임워크입니다. Streamlit의 공식 웹사이트에서는 "데이터 애플리케이션을 만들고 공유하는 더 빠른 방법"이라고 소개하고 있습니다. 복잡한 HTML, CSS, 자바스크립트를 몰라도, 파이썬 코드만으로 웹 프론트를 구축할 수 있는 것이 Streamlit의 가장 큰 특징입니다.

Streamlit은 주로 데이터 시각화와 데모용 웹 애플리케이션을 만드는 데 사용되며, 데이터를 다루는 데 초점을 맞춘 직관적인 도구입니다. 특히 데이터를 빠르게 공유하거나, 분석 결과를 시각적으로 표현하는 데 최적화되어 있습니다.


반응형

Streamlit의 특장점

Streamlit의 주요 특장점을 요약하면 다음과 같습니다:

  1. 파이썬만으로 구현 가능: HTML, CSS 같은 웹 개발 언어를 몰라도, 파이썬 코드만으로 쉽게 웹 애플리케이션을 만들 수 있습니다.
  2. 직관적이고 깔끔한 디자인: 기본 디자인이 깔끔하게 제공되기 때문에, 별도의 디자인 작업 없이도 보기 좋은 웹 페이지를 만들 수 있습니다.
  3. 데이터 시각화 최적화: 데이터프레임, 차트, 그래프 등을 손쉽게 시각화할 수 있습니다. Pandas 데이터프레임을 손쉽게 웹에 보여줄 수 있어 데이터 중심 애플리케이션 제작에 유리합니다.
  4. 좋은 문서화: Streamlit의 문서는 매우 잘 정리되어 있어 필요한 기능을 쉽게 찾아볼 수 있고, 초보자도 간단히 사용할 수 있습니다.

물론 Streamlit은 HTML을 직접 만질 수 없는 만큼 디자인에 제한이 있습니다. 복잡한 웹페이지를 구현하기에는 한계가 있지만, 간단하고 빠르게 결과물을 보여주는 데에는 최적의 선택이라 할 수 있습니다.

https://streamlit.io/cloud


Streamlit 사용 방법

Streamlit을 사용하여 간단한 웹 페이지를 만드는 방법을 단계별로 살펴보겠습니다.

1. 설치하기

먼저 Streamlit을 설치합니다. 파이썬 환경이 준비되어 있다면, 다음 명령어로 쉽게 설치할 수 있습니다

pip install streamlit

설치 후에는 아래 명령어로 정상적으로 설치되었는지 확인해 볼 수 있습니다

streamlit hello

추가로 데이터를 다루기 위해 Pandas도 함께 설치해두면 좋습니다

pip install pandas

2. 기본 페이지 만들기

Streamlit으로 간단한 웹 페이지를 만들어보겠습니다. 아래는 기본 예제 코드입니다

import streamlit as st
import pandas as pd

st.write("""
# My first app
Hello *world!*
""")

df = pd.read_csv("my_data.csv")
st.line_chart(df)

위 코드는 "my_data.csv" 파일의 데이터를 읽어와서 라인 차트로 보여주는 간단한 예제입니다. 이 파일을 app.py로 저장한 후, 다음 명령어를 실행하여 웹 서버를 실행할 수 있습니다

streamlit run app.py --server.port 20000

이후 브라우저에서 localhost:20000으로 접속하면 페이지를 확인할 수 있습니다.

3. 주요 기능 사용하기

Streamlit에서 자주 사용하는 기능 몇 가지를 살펴보겠습니다.

텍스트 쓰기

텍스트를 웹 페이지에 출력하려면 st.write() 함수를 사용합니다

st.write("Hello, world!")

또는 데이터프레임과 텍스트를 함께 출력할 수도 있습니다

st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40],
}))

텍스트를 더 꾸미고 싶다면 st.markdown, st.title, st.header, st.subheader 등을 사용할 수 있습니다.

데이터 보여주기

데이터프레임을 보여주기 위해 st.dataframe()을 사용할 수 있습니다:

import numpy as np

df = pd.DataFrame(np.random.randn(50, 20), columns=("col %d" % i for i in range(20)))

st.dataframe(df)

큰 데이터프레임의 경우 자동으로 스크롤 기능이 추가되어 사용이 편리합니다.

차트 보여주기

차트를 보여줄 때는 Streamlit의 내장 차트를 사용할 수 있습니다

st.bar_chart(df)  # 막대그래프
st.line_chart(df)  # 꺾은선그래프

또는 matplotlib.pyplot을 사용하여 차트를 만들어 st.pyplot()으로 보여줄 수도 있습니다:

import matplotlib.pyplot as plt

arr = np.random.normal(1, 1, size=100)
fig, ax = plt.subplots()
ax.hist(arr, bins=20)

st.pyplot(fig)

4. 기타 기능

Streamlit에는 이 외에도 여러 가지 편리한 기능들이 있습니다. 예를 들어, 사이드바를 만들기 위해 st.sidebar를 사용할 수 있고, 데이터를 숨기고 싶을 때는 st.expander를 사용할 수 있습니다. 다양한 기능은 Streamlit 문서에서 참고할 수 있습니다.

728x90

Streamlit은 파이썬만으로 간단한 웹 애플리케이션을 빠르게 만들 수 있는 강력한 도구입니다. 특히 데이터 시각화와 공유에 최적화되어 있어, 머신러닝 엔지니어나 데이터 분석가들에게 매우 유용합니다. HTML 없이 파이썬 코드만으로 깔끔한 디자인의 웹 페이지를 구현할 수 있다는 점에서, 급하게 결과물을 보여줘야 할 때 유용하게 활용할 수 있습니다.

728x90
반응형