import plotly.express as px
import seaborn as sns
# 데이터 로드
= sns.load_dataset('iris')
df
# 산점도 생성
= px.scatter(df, x='sepal_width', y='sepal_length', color='species',
fig ='Sepal Width vs Sepal Length')
title fig.show()
Plotly Express 소개하기
Plotly Express란 무엇인가요?
Plotly Express와 Plotly Graph Objects (go)는 둘 다 Plotly 라이브러리의 일부로, 데이터를 시각화하는 데 사용됩니다. 그러나 이 두 가지는 서로 다른 사용 목적과 장점을 가지고 있습니다.
Plotly Express란?
Plotly Express는 Plotly의 하위 모듈로, 간단한 코드로 고급 시각화를 구현할 수 있도록 설계된 데이터 시각화 라이브러리입니다. Plotly Express는 DataFrame이나 다른 데이터 구조를 사용하여 그래프를 생성하며, 다양한 차트 유형을 지원합니다. 이를 통해 복잡한 그래프도 몇 줄의 코드로 쉽게 그릴 수 있습니다.
Plotly Express와 Graph Objects의 차이점
Plotly Express: 데이터 분석이나 시각화를 처음 시도할 때, 빠르게 다양한 차트를 시도해보고 싶을 때 Plotly Express가 매우 유용합니다. 몇 줄의 코드만으로도 다양한 차트 유형을 생성할 수 있습니다.
Graph Objects(go): 그래프의 디자인이나 상호작용을 세밀하게 조정해야 하는 상황에서는 go를 사용합니다. 그러나 이는 초기 프로토타이핑보다는 프로젝트의 후반부, 즉 시각화의 세부 사항을 다듬는 단계에서 더 적합합니다.
Plotly Express의 장점
- 간단한 문법: 몇 줄의 코드만으로 복잡한 시각화를 구현할 수 있습니다.
- 다양한 차트 유형 지원: 산점도, 막대 그래프, 히스토그램, 선 그래프, 버블 차트 등 다양한 차트를 쉽게 그릴 수 있습니다.
- 인터랙티브 시각화: Plotly Express로 생성된 모든 차트는 기본적으로 인터랙티브합니다. 사용자는 차트를 확대하거나 축소하고, 데이터 포인트에 마우스를 올려 추가 정보를 확인할 수 있습니다.
- 자동화된 데이터 처리: Plotly Express는 입력된 데이터를 자동으로 분석하고 적절한 형태로 시각화합니다. 데이터 정규화나 처리에 대한 부담을 덜 수 있습니다.
- 다양한 커스터마이징 옵션: 차트의 색상, 크기, 스타일 등을 자유롭게 조정할 수 있으며, 필요한 경우 Plotly의 하위 레벨 API를 사용해 더욱 세밀하게 조정할 수 있습니다.
Plotly Express 설치
Plotly Express는 Plotly 패키지에 포함되어 있으므로 Plotly를 설치하면 함께 사용할 수 있습니다.
pip install plotly
Plotly Express 사용 예제
다양한 예제를 통해 Plotly Express의 기능을 살펴보겠습니다.
1. 산점도 (Scatter Plot)
산점도는 두 개의 변수 간의 관계를 시각화하는 데 유용합니다. 예를 들어, sepal_width
와 sepal_length
간의 관계를 시각화해보겠습니다.
color='species'
: 데이터를 꽃의 종류별로 구분하여 색상으로 표시합니다.title
: 그래프의 제목을 설정합니다.
2. 막대 그래프 (Bar Chart)
막대 그래프는 범주형 데이터의 크기 비교를 시각화하는 데 유용합니다. 예를 들어, 각 꽃의 종류별로 꽃잎의 평균 길이를 시각화해보겠습니다.
import pandas as pd
= {
data '제품': ['A', 'B', 'C', 'D'],
'2023년 판매량': [150, 200, 300, 100],
'2024년 판매량': [180, 210, 320, 130]
}
= pd.DataFrame(data)
df
# 막대 그래프 생성
= px.bar(df, x='제품', y='2023년 판매량',
fig ='2023년 제품별 판매량')
title fig.show()
labels
: 축의 이름을 커스터마이징할 수 있습니다.barmode='group'
: 막대를 그룹화하여 각 범주를 나란히 표시합니다.
3. 히스토그램 (Histogram)
히스토그램은 연속형 데이터의 분포를 시각화하는 데 유용합니다. sepal_width
의 분포를 시각화해보겠습니다.
import plotly.express as px
import seaborn as sns
# 데이터 로드
= sns.load_dataset('iris')
df
# 히스토그램 생성
= px.histogram(df, x='sepal_width', nbins=20, title='Distribution of Sepal Width')
fig fig.show()
nbins=20
: 히스토그램의 빈(bin) 수를 설정하여 데이터의 분포를 더 세밀하게 표현합니다.
4. 선 그래프 (Line Plot)
선 그래프는 시간에 따른 데이터의 변화나 연속된 데이터 포인트 간의 관계를 시각화하는 데 사용됩니다. 예를 들어, 시간에 따른 주식 가격 변동을 시각화할 수 있습니다.
# 선 그래프 예제 데이터 생성
import pandas as pd
= {
data 'Date': pd.date_range(start='2023-01-01', periods=100, freq='D'),
'Stock Price': pd.Series(range(100)) + pd.Series(range(100)).apply(lambda x: x*0.5)
}
= pd.DataFrame(data)
df
# 선 그래프 생성
= px.line(df, x='Date', y='Stock Price', title='Stock Price Over Time')
fig fig.show()
5. 버블 차트 (Bubble Chart)
버블 차트는 세 개의 변수 간의 관계를 동시에 시각화하는 데 사용됩니다. 예를 들어, 각 나라의 GDP, 인구수, 그리고 평균 수명을 시각화해보겠습니다.
# 버블 차트 생성
= pd.DataFrame({
df 'Country': ['USA', 'China', 'India', 'Germany', 'UK'],
'GDP': [21.43, 14.34, 2.87, 3.86, 2.83], # 단위: 조 달러
'Population': [331, 1441, 1380, 83, 68], # 단위: 백만 명
'Life Expectancy': [78.9, 76.7, 69.7, 81.2, 81.3] # 단위: 년
})
= px.scatter(df, x='GDP', y='Life Expectancy', size='Population', color='Country',
fig ='Country', size_max=60, title='GDP vs Life Expectancy')
hover_name fig.show()
결론
Plotly Express는 데이터 시각화를 간편하고 강력하게 수행할 수 있는 도구입니다. 간단한 코드만으로도 다양한 차트를 생성할 수 있으며, 기본 제공되는 인터랙티브 기능 덕분에 시각화된 데이터를 더 쉽게 탐색할 수 있습니다.