[Streamlit 튜토리얼] 빠르게 대화형 데이터 시각화 만들기
Published on
Streamlit은 개발자가 손쉽게 대화형 웹 애플리케이션을 만들 수 있는 오픈 소스 도구입니다. 데이터 과학자와 엔지니어가 데이터 시각화와 기계 학습 작업을 보다 간단하게 수행할 수 있도록 설계되었습니다. Streamlit을 사용하면 몇 줄의 코드로 간단한 Python 스크립트를 아름답고 데이터 주도형 웹 애플리케이션으로 변환할 수 있습니다.
데이터 시각화는 데이터 분석의 중요한 측면입니다. 그래픽 형식으로 데이터 세트를 표현함으로써 복잡한 데이터 세트를 이해할 수 있습니다. Streamlit은 막대 차트, 선 차트, 플롯, 파이 차트 및 히스토그램을 포함한 다양한 종류의 시각화를 지원합니다. 이 문서에서는 Streamlit을 사용하여 이러한 시각화를 만드는 과정을 안내합니다.
PyGWalker를 사용하여 Streamlit에서 쉽게 대화형 데이터 시각화 만들기
PyGWalker (opens in a new tab)는 Streamlit AgGrid의 대안으로 작업하는 훌륭한 도구입니다.
PyGWalker + Streamlit 온라인 데모 (opens in a new tab)
PyGWalker (opens in a new tab)는 Streamlit 애플리케이션에 Tableau와 유사한 UI를 쉽게 포함시킬 수 있는 Python 라이브러리입니다.
이 강력한 데이터 시각화 Python 라이브러리로 Streamlit 애플리케이션을 강화하는 상세한 단계를 보여주는 로코딩은 재미있다(Sven) (opens in a new tab) 님의 멋진 비디오를 확인해보세요!
Sven과 그의 훌륭한 기여 (opens in a new tab)에 대한 특별한 감사 인사를 전합니다! PyGWalker 커뮤니티에 기여해주셔서 감사합니다.
또한, 다음 리소스도 확인해볼 수 있습니다:
- Pygwalker와 Streamlit을 사용하여 데이터 탐색 및 검색 결과 공유하는 방법 (opens in a new tab)
- PyGWalker GitHub 페이지 (opens in a new tab)에서 더 많은 PyGWalker 예제를 확인하세요.
Streamlit 막대 차트
막대 차트는 범주형 데이터를 직사각형 막대로 표현하여 값을 반영하는 차트입니다. Streamlit에서는 st.bar_chart()
함수를 사용하여 막대 차트를 생성합니다. 이 함수는 데이터의 다른 범주를 비교하는 간단하고 효과적인 방법입니다.
import streamlit as st
import pandas as pd
# 샘플 데이터프레임 생성
data = pd.DataFrame({
'과일': ['사과', '오렌지', '바나나', '포도'],
'수량': [15, 25, 35, 45]
})
# 막대 차트 생성
st.bar_chart(data)
위 코드 예시에서는 필요한 라이브러리를 먼저 가져오고 샘플 데이터프레임을 생성합니다. 그런 다음 st.bar_chart()
함수를 사용하여 막대 차트를 생성합니다. 차트는 자동으로 데이터프레임의 인덱스를 x축으로 사용하고 값들을 y축으로 사용합니다.
st.bar_chart()
함수는 사용하기 쉽지만, 제한된 사용자 정의 옵션을 제공합니다. 더 복잡한 시나리오의 경우 Matplotlib이나 Plotly와 같은 다른 라이브러리를 사용해야 할 수도 있습니다.
Streamlit 선 차트
선 차트는 '마커'로 연결된 일련의 데이터 포인트로 정보를 표시하는 차트입니다. 이것은 많은 분야에서 일반적인 기본 차트 유형입니다. Streamlit에서는 st.line_chart()
함수를 사용하여 선 차트를 생성합니다.
import streamlit as st
import pandas as pd
# 샘플 데이터프레임 생성
data = pd.DataFrame({
'연도': [2018, 2019, 2020, 2021],
'판매량': [350, 480, 550, 680]
})
# 선 차트 생성
st.line_chart(data)
위 코드 예시에서는 샘플 데이터프레임을 생성한 후 st.line_chart()
함수를 사용하여 선 차트를 생성합니다. 차트는 자동으로 데이터프레임의 인덱스를 x축으로 사용하고 값들을 y축으로 사용합니다.
Streamlit의 선 차트는 사용하기 쉽지만 사용자 정의 가능성이 덜합니다. 더 복잡한 시나리오의 경우 Matplotlib이나 Plotly와 같은 다른 라이브러리를 사용해야 할 수도 있습니다.
Streamlit 플로팅
Streamlit은 Matplotlib, Plotly, Vega-Lite 등 다양한 라이브러리를 지원하여 간단한 선 차트부터 복잡한 대화형 플롯까지 다양한 시각화를 생성할 수 있습니다.
예를 들어, Matplotlib를 사용하여 히스토그램을 생성하고 st.pyplot()
함수를 사용하여 Streamlit에 표시할 수 있습니다.
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# 임의의 데이터 생성
data = np.random.normal(0, 1, size=100)
# 히스토그램 생성
plt.hist(data, bins=20)
# Streamlit에서 플롯 표시
st.pyplot()
위 코드 예시에서는 임의의 데이터를 생성한 후 Matplotlib의 plt.hist()
함수를 사용하여 히스토그램을 생성합니다. 마지막으로, st.pyplot()
함수를 사용하여 플롯을 Streamlit에 표시합니다.
Streamlit은 Plotly와 같은 대화형 플로팅 라이브러리도 지원합니다. 이를 통해 사용자가 더 자세한 정보를 얻기 위해 확대, 이동 및 호버링을 할 수 있는 대화형 플롯을 생성할 수 있습니다.
Streamlit 파이 차트
파이 차트는 숫자의 비율을 보여주기 위해 분할된 원형 통계 그래픽입니다. Streamlit에는 파이 차트를 만들기 위한 내장 함수가 없지만, Matplotlib 같은 다른 라이브러리를 사용하여 생성하고 st.pyplot()
함수를 사용하여 Streamlit에서 표시할 수 있습니다.
import streamlit as st
import matplotlib.pyplot as plt
# 플롯할 데이터
labels = 'Python', 'Java', 'C++', 'JavaScript'
sizes = [215, 130, 245, 210]
# 파이 차트 생성
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
# Streamlit에서 플롯 표시
st.pyplot()
위의 코드 스니펫에서는 먼저 플롯할 데이터를 정의합니다. 그런 다음 Matplotlib의 plt.pie()
함수를 사용하여 파이 차트를 생성합니다. 마지막으로, st.pyplot()
함수를 사용하여 Streamlit에서 플롯을 표시합니다.
Streamlit에서 파이 차트를 생성하는 것은 막대 차트나 선 차트와 비교하여 조금 더 많은 작업이 필요할 수 있지만, 더 많은 유연성과 사용자 정의 옵션을 제공합니다.
Streamlit 히스토그램
히스토그램은 숫자 데이터의 분포를 정확하게 나타내는 그래프입니다. 이는 연속 변수의 확률 분포의 추정치입니다. Streamlit에서는 Matplotlib과 st.pyplot()
함수를 조합하여 히스토그램을 생성할 수 있습니다.
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# 일부 무작위 데이터 생성
data = np.random.normal(0, 1, size=100)
# 히스토그램 생성
plt.hist(data, bins=20)
# Streamlit에서 플롯 표시
st.pyplot()
위의 코드 스니펫에서는 먼저 일부 무작위 데이터를 생성합니다. 그런 다음 Matplotlib의 plt.hist()
함수를 사용하여 히스토그램을 생성합니다. 마지막으로, st.pyplot()
함수를 사용하여 Streamlit에서 플롯을 표시합니다.
히스토그램은 데이터의 분포를 시각화하는 강력한 도구입니다. 데이터의 전체 퍼짐도, 비대칭성 및 첨도에 대한 통찰력을 제공할 수 있습니다.
Streamlit에서의 고급 플롯 기법
Streamlit은 다양한 플로팅 라이브러리와의 호환성을 통해 고급 시각화 생성 가능성을 열어줍니다. 예를 들어, Plotly 라이브러리를 사용하여 대화형 3D 플롯, 지리적 플롯 등을 생성할 수 있습니다.
import streamlit as st
import plotly.express as px
# 3D 산점도 플롯 생성
fig = px.scatter_3d(x=[1, 2, 3, 4], y=[4, 3, 2, 1], z=[1, 4, 2, 3])
st.plotly_chart(fig)
위의 코드 스니펫에서는 먼저 필요한 라이브러리를 가져옵니다. 그런 다음 Plotly의 px.scatter_3d()
함수를 사용하여 3D 산점도 플롯을 생성합니다. 마지막으로, st.plotly_chart()
함수를 사용하여 Streamlit에서 플롯을 표시합니다.
Streamlit 시각화 사용자 정의
Streamlit은 시각화를 사용자 정의하기 위한 여러 옵션을 제공합니다. 예를 들어, 색상 팔레트를 변경하거나 제목과 레이블을 추가하고, 축 스케일을 조정할 수 있습니다.
import streamlit as st
import matplotlib.pyplot as plt
# 일부 무작위 데이터 생성
data = np.random.normal(0, 1, size=100)
# 사용자 정의 색상과 제목을 가진 히스토그램 생성
plt.hist(data, bins=20, color='skyblue', edgecolor='black')
plt.title('나만의 히스토그램')
# Streamlit에서 플롯 표시
st.pyplot()
위의 코드 스니펫에서는 먼저 일부 무작위 데이터를 생성합니다. 그런 다음 색상과 제목이 있는 히스토그램을 생성합니다. 마지막으로, st.pyplot()
함수를 사용하여 Streamlit에서 플롯을 표시합니다.
결론
Streamlit은 대화형 데이터 시각화를 생성하기 위한 강력한 도구입니다. 간단한 구문과 다양한 플로팅 라이브러리와의 호환성을 통해 간단한 막대 차트, 선 차트부터 복잡한 대화형 플롯까지 다양한 시각화를 만들 수 있습니다. 데이터 과학자가 결과를 공유하고, 데이터 기반 웹 애플리케이션을 개발하는 개발자가 있든 Streamlit은 여러분의 요구를 충족시켜줄 것입니다.
Streamlit 앱을 Tableau처럼 변환해주는 멋진 데이터 분석 및 시각화 도구인 PyGWalker를 들어보셨나요?
PyGWalker (opens in a new tab)는 간단하게 Streamlit 앱에 Tableau와 같은 UI를 쉽게 포함시킬 수 있는 Python 라이브러리입니다.
자주 묻는 질문
1. Streamlit에서 파이 차트를 만들 수 있나요?
Streamlit에는 파이 차트를 생성하기 위한 내장 함수가 없지만, Matplotlib 같은 다른 라이브러리를 사용하여 생성하고 st.pyplot()
함수를 사용하여 Streamlit에서 표시할 수 있습니다.
2. Streamlit 시각화를 어떻게 사용자 정의할 수 있나요?
Streamlit은 시각화를 사용자 정의하기 위한 여러 옵션을 제공합니다. 사용자는 색상 팔레트를 변경하고, 제목과 레이블을 추가하고, 축 스케일을 조정하고 등등 다양한 사용자 정의 옵션을 사용할 수 있습니다. 사용 가능한 사용자 정의 옵션은 사용하는 플로팅 라이브러리에 따라 다릅니다.
3. Streamlit에서 대화형 플롯을 생성할 수 있나요?
네, Streamlit은 Plotly, Vega-Lite 등의 대화형 플로팅 라이브러리를 지원합니다. 이를 통해 사용자는 사용자들이 더 자세한 정보를 얻을 수 있도록 확대, 이동, 호버 기능을 가진 대화형 플롯을 생성할 수 있습니다.