데이터 시각화는 데이터 분석의 중요한 부분으로, 복잡한 데이터를 이해하기 쉽게 시각적으로 표현하는 데 큰 도움을 줍니다. 다양한 라이브러리가 있는 가운데, Python에서는 Plotly가 매우 강력한 도구로 자리 잡고 있습니다. Plotly는 웹 기반의 상호작용 가능한 시각화를 제공하며, 다양한 유형의 그래프를 생성할 수 있습니다. 이번 포스팅에서는 Plotly 라이브러리를 활용하여 데이터 시각화를 하는 방법을 구체적으로 살펴보겠습니다.

Plotly 설치하기

Plotly를 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다. 다음과 같은 명령어를 통해 Plotly를 설치할 수 있습니다.

pip install plotly

설치가 완료되면, Python 코드에서 Plotly를 import하여 사용할 준비를 합니다.

import plotly.express as px
import pandas as pd

데이터 준비하기

Plotly를 활용하기 위해서는 시각화할 데이터를 준비해야 합니다. 간단한 예로, Iris 데이터셋을 활용하여 꽃의 종류에 따른 꽃잎과 꽃받침의 길이를 시각화해 보겠습니다. 다음과 같은 코드로 Iris 데이터셋을 불러올 수 있습니다.

url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv"
iris_data = pd.read_csv(url)
print(iris_data.head())

기본적인 산점도 생성하기

Plotly를 활용하여 기본적인 산점도를 생성해 보겠습니다. 꽃잎의 길이(petal_length)와 꽃받침의 길이(sepal_length)를 기준으로 산점도를 그려보겠습니다.

fig = px.scatter(iris_data, x='sepal_length', y='petal_length', color='species',
                 title='Iris Dataset: Sepal vs Petal Length',
                 labels={'sepal_length': '꽃받침 길이', 'petal_length': '꽃잎 길이'})
fig.show()

위 코드를 실행하면, 꽃의 종류에 따라 색깔이 다르게 표시된 산점도를 확인할 수 있습니다. Plotly의 px.scatter 함수를 사용하여 간단하게 상호작용 가능한 그래프를 만들 수 있습니다.

선 그래프와 히스토그램

Plotly는 산점도뿐만 아니라 선 그래프와 히스토그램과 같은 다양한 시각화도 지원합니다. 예를 들어, 꽃받침 길이의 분포를 히스토그램으로 시각화해 보겠습니다.

fig_hist = px.histogram(iris_data, x='sepal_length', color='species',
                         title='Iris Dataset: Sepal Length Distribution',
                         labels={'sepal_length': '꽃받침 길이'})
fig_hist.show()

또한, 시간에 따른 변화를 보여주는 선 그래프도 생성할 수 있습니다. 하지만, Iris 데이터셋은 시간 관련 데이터가 없으므로, 일반적인 예제를 위해 새로운 데이터셋을 생성해 보겠습니다.

# 일일 판매량 데이터 생성
sales_data = pd.DataFrame({
    'date': pd.date_range(start='2023-01-01', periods=10, freq='D'),
    'sales': [150, 200, 250, 300, 350, 400, 450, 500, 600, 700]
})

fig_line = px.line(sales_data, x='date', y='sales', title='Daily Sales Over Time',
                   labels={'date': '날짜', 'sales': '판매량'})
fig_line.show()

Plotly Dash를 통한 대시보드 만들기

Plotly는 Dash 라이브러리를 통해 웹 대시보드를 쉽게 만들 수 있도록 지원합니다. Dash를 활용하면 여러 개의 시각화를 하나의 인터페이스에서 보여주고, 사용자와의 상호작용을 처리할 수 있습니다. Dash를 설치하려면 다음 명령어를 사용합니다.

pip install dash

간단한 Dash 애플리케이션을 작성해 보겠습니다.

from dash import Dash, dcc, html

app = Dash(__name__)

app.layout = html.Div(children=[
    html.H1(children='Iris 데이터 시각화'),
    dcc.Graph(
        id='scatter-plot',
        figure=px.scatter(iris_data, x='sepal_length', y='petal_length', color='species')
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

위 코드를 실행하면 로컬 서버에서 Dash 애플리케이션을 실행할 수 있습니다. 웹 브라우저에서 해당 주소로 접속하면, 상호작용 가능한 시각화를 확인할 수 있습니다.

마무리

Plotly는 간단한 설치와 사용법으로 강력한 데이터 시각화 도구를 제공합니다. 산점도, 히스토그램, 선 그래프 등 다양한 시각화를 통해 데이터를 효과적으로 분석하고 전달할 수 있습니다. 또한 Dash를 활용하면 사용자가 상호작용할 수 있는 웹 대시보드를 만들어, 더욱 직관적인 데이터 분석 환경을 구축할 수 있습니다. 데이터 시각화의 중요성이 점점 더 커지는 요즘, Plotly를 통해 시각화의 세계에 한 발 더 나아가 보시기 바랍니다.