Streamlit을 활용한 기본 시각화 도구
Streamlit을 활용한 기본 시각화 도구
Streamlit은 파이썬으로 대화형 웹 애플리케이션을 쉽게 만들 수 있는 프레임워크로, 특히 데이터 시각화에 강력한 기능을 제공합니다. Streamlit은 간단한 코드만으로 다양한 차트를 그릴 수 있도록 matplotlib
, plotly
, altair
, vega-lite
등 다양한 시각화 라이브러리와도 호환되며, 자체적으로 제공하는 기본적인 차트 함수도 매우 유용합니다.
이번 글에서는 Streamlit에서 제공하는 기본 시각화 도구를 활용하여 데이터를 시각화하는 방법을 소개하고, 몇 가지 간단한 예시를 통해 차트를 그려보겠습니다.
1. 사전 준비
먼저 Streamlit을 설치해야 합니다. 터미널에 다음 명령어를 입력해 Streamlit을 설치하세요.
pip install streamlit pandas numpy
Streamlit의 시각화 도구는 데이터프레임을 활용하는 경우가 많으므로 pandas
와 numpy
라이브러리도 함께 설치합니다.
2. Streamlit 기본 시각화 도구 소개
Streamlit은 기본적으로 다음과 같은 차트 시각화 기능을 제공합니다:
st.line_chart()
: 선형 차트st.area_chart()
: 면적 차트st.bar_chart()
: 막대 차트st.map()
: 지도 시각화
각 차트는 매우 간단하게 사용할 수 있으며, Pandas 데이터프레임이나 Numpy 배열을 인자로 전달하면 바로 차트를 그릴 수 있습니다.
3. 기본 시각화 예시
1) Line Chart (선형 차트)
선형 차트는 시간의 흐름에 따른 데이터를 시각화하는 데 주로 사용됩니다. Streamlit의 st.line_chart()
를 사용해 간단한 예시를 만들어보겠습니다.
import streamlit as st
import pandas as pd
import numpy as np
'Streamlit 기본 시각화 도구 - Line Chart')
st.title(
# 샘플 데이터 생성
= pd.DataFrame(
data 20, 3), # 20개의 행과 3개의 열을 가진 무작위 데이터 생성
np.random.randn(=['Column 1', 'Column 2', 'Column 3']
columns
)
# Line Chart 시각화
st.line_chart(data)
설명:
np.random.randn(20, 3)
은 20개의 행과 3개의 열을 가진 무작위 데이터를 생성합니다.st.line_chart()
에 데이터를 전달하면 자동으로 선형 차트가 그려집니다.
2) Area Chart (면적 차트)
면적 차트는 선형 차트와 비슷하지만, 각 선 아래의 면적을 채우는 방식으로 시각화됩니다. Streamlit에서는 st.area_chart()
를 사용해 면적 차트를 그릴 수 있습니다.
'Streamlit 기본 시각화 도구 - Area Chart')
st.title(
# Area Chart 시각화
st.area_chart(data)
설명:
st.area_chart()
함수에 같은 데이터를 전달하면 선형 차트 대신 면적 차트로 시각화됩니다.
3) Bar Chart (막대 차트)
막대 차트는 카테고리별 데이터를 비교할 때 유용하게 사용됩니다. Streamlit의 st.bar_chart()
를 사용해 막대 차트를 그려보겠습니다.
'Streamlit 기본 시각화 도구 - Bar Chart')
st.title(
# Bar Chart 시각화
st.bar_chart(data)
설명:
st.bar_chart()
는 카테고리별로 데이터를 막대로 표시합니다.- 위의 예시에서는 20개의 행이 각 막대에 대응되고, 3개의 열은 서로 다른 색으로 시각화됩니다.
4) 지도 시각화 (Map Visualization)
Streamlit은 위치 데이터를 시각화하기 위한 지도 시각화 기능도 기본으로 제공됩니다. st.map()
을 사용하여 위도와 경도 데이터를 기반으로 지도에 점을 찍을 수 있습니다.
'Streamlit 기본 시각화 도구 - Map')
st.title(
# 위도와 경도 데이터를 가진 샘플 데이터 생성
= pd.DataFrame({
map_data 'lat': np.random.randn(100) / 50 + 37.57, # 서울 위도 근처에 무작위 좌표 생성
'lon': np.random.randn(100) / 50 + 126.9800 # 서울 경도 근처에 무작위 좌표 생성
})
# 지도 시각화
map(map_data) st.
설명:
- 위와 같은 방식으로 Streamlit에서
st.map()
을 사용하면 위도(lat
)와 경도(lon
) 데이터를 기반으로 지도 상에 데이터를 시각화할 수 있습니다. - 샘플 데이터는 서울 주변의 무작위 좌표를 생성하여 시각화하고 있습니다.
4. 데이터 시각화 개선하기
Streamlit의 기본 시각화 도구는 매우 간단하게 사용할 수 있지만, 좀 더 복잡한 시각화를 위해서는 다른 라이브러리와 결합할 수 있습니다. 예를 들어 matplotlib
, plotly
, altair
등의 라이브러리와 함께 사용하면 더 세밀하고 정교한 시각화를 할 수 있습니다.
Plotly를 사용한 인터랙티브 차트
Plotly는 대화형 차트를 제공하는 강력한 라이브러리입니다. Streamlit에서 Plotly를 사용해 보겠습니다.
import plotly.express as px
'Plotly를 사용한 대화형 차트')
st.title(
# Plotly 예제 데이터 사용
= px.data.iris()
df
# Plotly Express로 대화형 차트 그리기
= px.scatter(df, x='sepal_width', y='sepal_length', color='species', size='petal_length')
fig
# Streamlit에 Plotly 차트 표시
st.plotly_chart(fig)
5. Streamlit 앱 실행하기
모든 코드를 작성한 후, 터미널에서 다음 명령어를 실행하여 Streamlit 애플리케이션을 실행할 수 있습니다.
streamlit run your_script.py
브라우저가 자동으로 열리고, 작성한 데이터 시각화가 웹 앱으로 나타나게 됩니다.
마무리
Streamlit은 매우 간단하게 데이터 시각화를 할 수 있는 도구입니다. 기본적인 선형 차트, 면적 차트, 막대 차트는 물론 지도 시각화까지 다양한 시각화 기능을 제공하고 있으며, 다른 시각화 라이브러리와의 호환성도 좋습니다.