안녕하세요, mj입니다!
오늘은 파이썬을 이용하여 대화형 대시보드를 구현하는 방법을 자세히 알아보겠습니다.
대화형 대시보드란?
대화형 대시보드는 사용자가 데이터를 탐색하고 시각화할 수 있도록 도와주는 웹 기반의 도구입니다. 이를 통해 데이터를 보다 직관적으로 이해할 수 있습니다.
필요한 라이브러리 설치하기
대시보드를 구현하기 위해 필요한 라이브러리는 다음과 같습니다:
Dash
: 대화형 웹 애플리케이션을 만들기 위한 프레임워크Plotly
: 데이터 시각화를 위한 라이브러리Pandas
: 데이터 조작 및 분석을 위한 라이브러리
다음 명령어로 설치할 수 있습니다:
pip install dash plotly pandas
간단한 대시보드 예제
이제 간단한 대시보드를 만들어보겠습니다. 아래 코드는 Iris 데이터셋을 사용하여 꽃의 종류를 시각화하는 예제입니다.
import dash
from dash import dcc, html
import plotly.express as px
import pandas as pd
# 데이터셋 로드
df = px.data.iris()
# Dash 앱 초기화
app = dash.Dash(__name__)
# 레이아웃 설정
app.layout = html.Div([
html.H1("Iris 꽃 데이터 대시보드"),
dcc.Graph(
id='iris-graph',
figure=px.scatter(df, x='sepal_width', y='sepal_length', color='species')
)
])
# 서버 실행
if __name__ == '__main__':
app.run_server(debug=True)
위 코드를 실행하면 다음과 같은 대시보드가 생성됩니다:
추가 예제 1: 바 차트
바 차트를 사용하여 각 꽃 종류의 평균 속성을 보여주는 예제입니다.
app.layout = html.Div([
html.H1("Iris 꽃 종류별 평균 속성"),
dcc.Graph(
id='iris-bar-chart',
figure=px.bar(df.groupby('species').mean().reset_index(), x='species', y='sepal_length')
)
])
결과: 각 꽃 종류별 평균 꽃받침 길이를 보여주는 바 차트입니다.
추가 예제 2: 선 그래프
시간에 따른 특정 속성의 변화를 보여주는 선 그래프입니다.
# 시간 데이터 추가
df['time'] = pd.date_range(start='1/1/2020', periods=len(df), freq='M')
app.layout = html.Div([
html.H1("Iris 꽃 속성 변화"),
dcc.Graph(
id='iris-line-chart',
figure=px.line(df, x='time', y='sepal_length', color='species')
)
])
결과: 시간에 따른 꽃받침 길이의 변화를 보여주는 선 그래프입니다.
추가 예제 3: 히트맵
상관관계를 시각화하는 히트맵 예제입니다.
corr = df.corr()
app.layout = html.Div([
html.H1("Iris 꽃 속성 상관관계 히트맵"),
dcc.Graph(
id='iris-heatmap',
figure=px.imshow(corr)
)
])
결과: 속성 간의 상관관계를 보여주는 히트맵입니다.
추가 예제 4: 대화형 슬라이더
슬라이더를 사용하여 데이터를 필터링하는 예제입니다.
app.layout = html.Div([
html.H1("Iris 꽃 데이터 필터링"),
dcc.Slider(
id='petal-length-slider',
min=df['petal_length'].min(),
max=df['petal_length'].max(),
value=df['petal_length'].mean(),
marks={i: str(i) for i in range(1, 8)},
step=0.1
),
dcc.Graph(id='filtered-iris-graph')
])
결과: 슬라이더를 통해 꽃잎 길이에 따라 데이터를 필터링할 수 있습니다.
추가 예제 5: 드롭다운 메뉴
드롭다운을 사용하여 특정 꽃 종류를 선택하는 예제입니다.
app.layout = html.Div([
html.H1("Iris 꽃 종류 선택"),
dcc.Dropdown(
id='species-dropdown',
options=[{'label': i, 'value': i} for i in df['species'].unique()],
value='setosa'
),
dcc.Graph(id='dropdown-iris-graph')
])
결과: 드롭다운에서 꽃 종류를 선택하여 해당 데이터를 시각화할 수 있습니다.