✅ 산점도 (Scatter plot)
산점도 (Scatter plot) |
matplotlib 메소드 |
seaborn 메소드 |
•연속형 변수 2개 사이의 관계를 점으로 찍어서 표현하는 그래프 •산점도의 형태를 보고 상관관계를 가늠할 수 있 •산점도의 점 하나하나는 관측값을 나타냄
|
plt.scatter() |
sns.scatterplot() |
0️⃣ 패키지 & 데이터프레임 불러오기
- 예시가 될 데이터셋은 Kaggle에서 가져온 Flight Price Prediction 입니다.
- 비행시간(duration)과 비행편 가격(price)간의 관계를 산점도로 찍어서 알아보려고 합니다.
# 패키지 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터셋 불러오기
df = pd.read_csv('./Clean_Dataset.csv', encoding='cp949')
df = df.drop([df.columns[0]], axis=1)
1️⃣ plt 산점도 그리기 :: plt.scatter
- 산점도 생성: plt.scatter(x='x축 들어갈 칼럼', y='y축 들어갈 칼럼')
- 간단하게 2개 칼럼만 넣어서 산점도를 그려볼 수 있습니다. 형태를 보아하니, 아주 약간 양의 상관관계를 가진 것 같습니다.
# 차트 영역 지정하기
plt.figure()
# 산점도 그리기: 비행시간-가격
plt.scatter(x=df['duration'], y=df['price'])
# 차트 표시하기
plt.show()
2️⃣ sns 산점도 그리기 :: sns.scatterplot
- seaborn으로 산점도를 그리면 보다 다양한 요소를 추가할 수 있습니다.
- 2개 칼럼 간의 관계 뿐만 아니라, 그 안에서 또 구분할 카테고리를 추가할 수 있습니다.
hue(색상), style(점 모양), sizes(점 크기)로 카테고리가 구분되어 보이도록 지정할 수 있어요.
- 아래 코드에선 hue(색상)으로 좌석클래스(class)가 구분되어 보이도록 지정해봤습니다.
비즈니스, 이코노미 둘다 비행시간-가격 간에 약한 양의 상관관계를 가진 것 같아 보입니다.
# 그래프 스타일 및 한글출력 설정
sns.set_theme(
style = 'whitegrid', # 그래프 배경 지정
font = 'NanumBarunGothic', # 한글 폰트 지정
rc = {'axes.unicode_minus' : False}
)
scatter = sns.scatterplot(
data=df, x='duration', y='price', # 데이터 지정
hue='class', # 색상으로 구분할 카테고리 변수
alpha=0.5, palette='Set2' # 투명도 및 팔레트 지정
)
# 축 범위, 축 이름, 그래프 제목 지정하기
scatter.set(
xlabel = '비행시간 (duration)',
ylabel = '가격 (price)',
title = '좌석클래스별 비행시간-가격 산점도'
)
# x축 간격 지정하기
scatter.set_xticks(np.arange(0,50,5))