2024. 11. 9. 22:38ㆍ금융공학/파이썬
파이썬 데이터 애플리케이션을 개발할 때, FastAPI와 Streamlit을 함께 사용하면 데이터 수집 및 처리와 실시간 시각화를 동시에 구현할 수 있어 개발 효율성과 유연성을 높여줍니다. FastAPI는 빠르고 강력한 비동기 백엔드 프레임워크로, 실시간 데이터를 제공하기에 적합합니다. Streamlit은 인터랙티브한 데이터 대시보드를 쉽고 빠르게 구축할 수 있는 프론트엔드 도구입니다. 이 둘을 함께 사용하면 빠르고 간편하게 실시간 데이터를 처리하고 시각화하는 웹 애플리케이션을 만들 수 있습니다. 저는 앞으로 몇번의 포스트에 걸쳐 개인적으로 진행하고 있는 금융 프로그램의 모니터링, 대시보드를 구축해보도록 하겠습니다.
함께보기
2024.09.13 - [Study/Python] - Python 활용 데이터 기반 웹 애플리케이션 툴
Python 활용 데이터 기반 웹 애플리케이션 툴
Python은 다양한 데이터 시각화, 분석 및 머신러닝 라이브러리와 통합하여 웹 애플리케이션을 쉽게 개발할 수 있는 도구들을 제공합니다. 이번 블로그에서는 간단한 도구 소개를 넘어서 각 도구
sncodelog.tistory.com
환경설정
최소 요구 사항 패키지를 설치/확인합니다.
pip install fastapi uvicorn streamlit
코드작성
새 파이썬 프로젝트를 생성한 후 main.py 코드를 다음과 같이 작성합니다.
FastAPI 서버를 main.py에 설정됩니다.
함수는 랜덤 가격을 실시간 데이터로 제공하는 API 엔드포인트를 만들었습니다.
# main.py
from fastapi import FastAPI
import random
app = FastAPI()
@app.get("/price")
async def get_price():
"""
예시 데이터로 랜덤 가격 정보를 제공하는 API 엔드포인트.
"""
price_data = {
"price": round(random.uniform(30000, 40000), 2)
}
return price_data
두 번째 파일은 app.py로 만들고 코드를 다음과 같이 작성합니다.
Streamlit 파일에서는 FastAPI에서 제공하는 데이터를 호출하여 시각화합니다.
# app.py
import streamlit as st
import requests
import time
import pandas as pd
st.title("Real-Time Price Data")
# 실시간 가격 데이터를 가져오는 함수
def get_price_data():
response = requests.get("http://127.0.0.1:8000/price")
if response.status_code == 200:
return response.json()["price"]
else:
st.error("Failed to retrieve data.")
return None
# 데이터 저장을 위한 리스트 생성
price_data = []
timestamps = []
# 그래프 갱신을 위한 빈 공간 생성
chart_placeholder = st.empty()
# Streamlit에서 실시간 데이터를 지속적으로 업데이트하여 표시
while True:
price = get_price_data()
if price:
# 시간과 가격 데이터를 리스트에 추가
timestamps.append(time.time())
price_data.append(price)
# 데이터프레임으로 변환 후 그래프 업데이트
df = pd.DataFrame({"Time": timestamps, "Price": price_data})
df["Time"] = pd.to_datetime(df["Time"], unit="s") # 시간 데이터를 포맷팅
# 실시간 가격을 플롯
chart_placeholder.line_chart(df.set_index("Time")["Price"])
# 1초마다 데이터 수집
time.sleep(1)
실행
먼저 프로젝트 경로의 터미널에서 Fast API를 실행합니다.
uvicorn main:app --reload
새 터미널을 열고 Streamlit을 실행합니다.
streamlit run app.py --autoreload
아래와 같이 실시간으로 가격 그래프가 그려지는 결과를 로컬 환경에서 확인할 수 있습니다.

다음 포스트에서 금융데이터를 실제로 불러와 대시보드에 원하는대로 그려봅시다.
'금융공학 > 파이썬' 카테고리의 다른 글
| Python 활용 데이터 기반 웹 애플리케이션 툴 (1) | 2024.09.13 |
|---|