Streamlit 실시간 데이터 시각화하기: 동작 원리와 코드

Posted by

실시간 데이터 시각화는 데이터 분석 애플리케이션에서 매우 유용한 기능이다.
Streamlit을 사용하면 Python 기반으로 손쉽게 실시간 대시보드를 구축할 수 있다.
이번 글에서는 Streamlit으로 실시간 데이터를 시각화하는 방법을 단계별로 설명하고, 직접 실습해볼 수 있는 예제를 설명하고자 한다.

Streamlit으로 실시간 데이터 시각화가 필요한 이유

  • 데이터의 변화를 실시간으로 관찰: 주식 시장, IoT 센서 데이터, 서버 로그 등의 데이터 변화를 실시간으로 모니터링 가능.
  • 데이터 이해도 향상: 실시간 그래프를 통해 데이터 패턴을 쉽게 분석.
  • 사용자 인터페이스 간소화: 별도의 웹 개발 없이 Streamlit으로 빠르게 대시보드 구축.

Streamlit의 실시간 데이터 시각화 기본 원리

Streamlit은 Python 스크립트를 기반으로 작동하며, 데이터 업데이트를 반영하는 데 다음 기능을 활용한다.

  • st.empty: 데이터를 업데이트할 수 있는 자리 표시자.
  • time.sleep: 주기적인 데이터 갱신을 위한 딜레이 설정.
  • st.line_chart, st.pyplot: 데이터 시각화를 위한 주요 함수.

예제 코드 – 실시간 데이터 시각화 애플리케이션

랜덤 데이터를 실시간으로 업데이트하며 시각화

아래 예제는 Streamlit으로 실시간으로 데이터를 생성하고 업데이트하는 대시보드를 생성하는 코드이다.

import streamlit as st
import pandas as pd
import numpy as np
import time

# 페이지 설정
st.set_page_config(
page_title="실시간 데이터 시각화",
page_icon="📈",
layout="wide"
)

st.title("📈 실시간 데이터 시각화 예제")
st.write("이 애플리케이션은 실시간으로 데이터를 생성하고, 이를 그래프로 시각화합니다.")

# 데이터 초기화
st.subheader("실시간 데이터 흐름 시각화")
placeholder = st.empty()

# 시뮬레이션을 위한 데이터프레임 초기화
data = pd.DataFrame({"시간": [0], "값": [0]})
start_time = time.time()

# 데이터 업데이트 루프
for i in range(100): # 100번 반복 (사용자가 종료할 때까지 실행하려면 while True 사용 가능)
# 새로운 데이터 생성
current_time = time.time() - start_time
new_value = np.random.rand() * 100 # 0~100 사이의 랜덤 값
new_data = {"시간": current_time, "값": new_value}

# 데이터 추가
data = pd.concat([data, pd.DataFrame([new_data])], ignore_index=True)

# 그래프 업데이트
with placeholder.container():
st.line_chart(data.set_index("시간"))
st.write(f"현재 데이터 값: {new_value:.2f}")

# 1초 대기
time.sleep(1)

코드 설명

  1. st.set_page_config:
    • Streamlit 페이지의 제목, 아이콘, 레이아웃 등을 설정한다.
  2. 데이터 초기화:
    • 시뮬레이션 데이터를 저장할 DataFrame을 생성한다.
  3. placeholder = st.empty():
    • 데이터를 업데이트할 자리 표시자 역할을 한다. 반복 루프에서 데이터를 새로 고침한다.
  4. 데이터 업데이트 루프:
    • 매 반복마다 새로운 데이터를 생성하고 DataFrame에 추가한다.
    • st.line_chart로 업데이트된 데이터를 실시간 그래프로 시각화 한다.
  5. time.sleep(1):
    • 1초마다 데이터를 업데이트해 실시간 데이터를 시뮬레이션 한다.

Streamlit은 실시간 데이터를 시각화하는 데 있어 매우 직관적이고 간단한 도구이다. 위의 실습 예제를 따라 실시간 데이터의 흐름을 시각화하는 애플리케이션을 구축할 수 있다.

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다