데이터분석 2025. 5. 28. 18:16
320x100
728x90

1.1 기본 개념

  • Dash는 Python 기반의 웹 애플리케이션 프레임워크입니다.
  • 특히 데이터 시각화 대시보드를 만들기 위해 설계되었습니다.
  • Plotly라는 시각화 라이브러리를 기반으로 동작합니다.
  • HTML, CSS, JavaScript를 직접 다룰 필요 없이 Python 코드만으로 대시보드를 만들 수 있습니다.

1.2 다른 도구들과의 비교 (Superset, Looker, Tableau)

기술기반 Python SQL + UI LookML Drag & Drop
실시간 인터랙션 매우 강력 (Python 콜백 사용) 제한적 (필터링 위주) 일부 가능 필터링 가능
예측 모델 연동 Python으로 직접 구현 가능 (sklearn, XGBoost 등) 어려움 Looker Action 필요 외부 연동 필요
커스터마이징 완전 자유 (코드 기반) 제한적 제한적 제한적
학습 곡선 높음 (코딩 필요) 중간 중간 낮음
 

2. Dash 설치 및 시작하기

2.1 설치

 
pip install dash
 
필요한 경우 Plotly와 Pandas도 함께 설치:
 
pip install plotly pandas scikit-learn

3. 기본 구조 이해하기

Dash 앱은 크게 3가지 구성요소로 이루어집니다:

  1. 레이아웃 (layout) – 화면 구성
  2. 콜백 (callback) – 사용자 인터랙션 처리
  3. 서버 실행 (app.run_server) – 웹에서 실행

예시 코드 구조:

import dash
from dash import dcc, html
from dash.dependencies import Input, Output

app = dash.Dash(__name__)

app.layout = html.Div([
    dcc.Input(id='input-value', type='number', value=10),
    html.Div(id='output-value')
])

@app.callback(
    Output('output-value', 'children'),
    Input('input-value', 'value')
)
def update_output(val):
    return f'입력한 숫자는 {val}입니다.'

app.run_server(debug=True)

4. 실시간 예측 대시보드 구현 메뉴얼

4.1 시나리오

예를 들어, "광고 클릭 수에 따라 매출을 예측하는 머신러닝 모델"을 실시간 입력으로 예측한다고 가정합니다.


4.2 단계별 구현

1단계: 예측 모델 만들기 (sklearn 사용)

import pandas as pd
from sklearn.linear_model import LinearRegression

# 예제 데이터
df = pd.DataFrame({
    'ad_clicks': [10, 20, 30, 40, 50],
    'sales': [100, 200, 280, 390, 500]
})

model = LinearRegression()
model.fit(df[['ad_clicks']], df['sales'])
 

2단계: Dash 앱에 예측 모델 연동

import dash
from dash import dcc, html
from dash.dependencies import Input, Output

app = dash.Dash(__name__)

app.layout = html.Div([
    html.H1("실시간 매출 예측기"),
    dcc.Input(id='click-input', type='number', value=20, debounce=True),
    html.Div(id='predicted-sales')
])

@app.callback(
    Output('predicted-sales', 'children'),
    Input('click-input', 'value')
)
def predict_sales(clicks):
    result = model.predict([[clicks]])[0]
    return f"예상 매출: {result:.2f}원"

app.run_server(debug=True)
 

5. 배포/공유

  • 로컬환경에서 실행됨: http://127.0.0.1:8050
  • 외부 배포:
    • Heroku, Render, Railway, AWS 등을 통해 배포 가능
    • Streamlit처럼 간단 배포는 불가능하므로 약간의 웹 배포 지식 필요

6. 실전 응용 아이디어

프로젝트 일정관리 자원 투입량에 따른 예측 공정률 표시
마케팅 분석 유입경로별 전환율 예측
건강 데이터 운동량에 따른 칼로리 소모 예측
주가 분석 특정 조건에서 주가 예측 (주의: 회귀모델 한계 고려)
 

7. 학습 팁

  1. Plotly 공식 문서: https://dash.plotly.com/
  2. Dash 앱 샘플 모음: https://dash.gallery/Portal/
  3. 콜백 동작 원리 이해: Input → Callback 함수 → Output 흐름 반복 학습

요약

  • Dash는 Python 개발자용 시각화 + 머신러닝 대시보드 도구
  • Superset/Looker/Tableau보다 코딩 유연성, 실시간 예측에 강점
  • scikit-learn 등 머신러닝과 자연스럽게 연동
  • 초보자도 단계별 코드 구조만 익히면 사용 가능