Coding Diary.

(데이터분석) 산점도(scatterplots) 개념 및 matplotlib, seaborn으로 그리기 본문

Coding/Data analysis

(데이터분석) 산점도(scatterplots) 개념 및 matplotlib, seaborn으로 그리기

life-of-nomad 2024. 5. 26. 16:01
728x90
반응형
두 숫자 변수 사이에 존재하는 관계를 조사할 때 대표적으로 활용하는 차트는 산점도입니다.
이번 글에서는 산점도와 matplotlib으로 그리는 방법에 대해 알아보겠습니다.

 

 

1. 산점도

  • 산점도에서 각 데이터 포인트는 하나의 점으로 표현되며, x축과 y축에서의 위치는 각각 서로 다른 변수에 따라 결정됩니다.
  • 산점도는 두 개의 정량적 변수 간에 존재하는 관계를 나타낼 때 사용합니다.
  • 이 때 두 변수는 각각 x축과 y축을 통해 표시됩니다.
  • 산점도를 작성하면 두 변수 사이에 존재하는 상관관계를 분명하게 확인할 수 있습니다.

 

2. 상관관계

  • 두 변수 사이에 존재하는 상관관계의 강도는 상관계수로 나타냅니다. 
  • 피어슨 상관관계 (Pearson correlation coefficient) : 선형적인 관계를 반영하며 그 값은 최소 -1부터 최대 +1입니다. 
  • r이 양수라면 한쪽 변수의 값이 증가할 때 다른 변수의 값이 함께 증가하는 경향이 있다는 뜻입니다.
  • r이 음수라면 한쪽 변수의 값이 증가할 때 다른 변수의 값은 감소하는 경향이 있습니다.
  • 반면, r이 0에 가깝다면 상관관계가 약하다는 의미이며, -1또는 +1에 가깝다면 상관관계가 강하다는 뜻입니다.
  • 다음은 pearson 상관계수가 동일하지만 매우 다른 형태의 여러 데이터 세트입니다. 

  • 숫자가 데이터에 의미가 있는지의 여부도 고려하는 것이 중요합니다.
  • 목표 중 하나가 데이터를 중심으로 회귀 모델을 만드는 것인 경우, 비선형에서 선형으로 배율을 바꾸면 유용합니다.
  • 아래의 산점도에서는 x값이 증가할수록 y값이 크게 증가합니다. 

  • y변수의 배율을 로그 배율로 변경하면 선형패턴이 나타납니다. 

  • 즉, x값을 사용하여 회귀 접근법에서 y의 로그값을 예측하고자 한다는 것을 알려줍니다.

 

3. matplotlib.pyplot.scatter()

  • 예시로, 연료 효율에 대한 데이터세트를 사용하여 이변량 시각화를 알아보겠습니다.
  • 먼저, 필요한 라이브러리와 데이터세트를 불러옵니다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

fuel_econ = pd.read_csv('fuel_econ.csv')
print(fuel_econ.shape)
fuel_econ.head(6)

  • 이 데이터세트에서 엔진 배기량(리터)와 전체 연료 주행거리(갤런당 마일수)라는 두 가지 정량 변수 간의 관계를 살펴보겠습니다.
  • 엔진이 클수록 연료 효율이 높은지, 낮은지 산점도를 통해 알아보겠습니다.
  • 산점도 생성 방법 중 하나는 matplotlib의 scatter 함수를 사용하는 것입니다.
  • 이 함수의 인수는 지난 글에서 막대그래프, 히스토그램에서 사용한 것과 비슷하지만 x축, y축 모두에서 변수를 지정합니다.
  • 🔻(지난글) 막대그래프, 히스토그램🔻
 

(데이터분석) seaborn과 matplotlib으로 히스토그램 나타내기

히스토그램은 숫자 변수의 분포를 나타낼 때 사용합니다. 막대 그래프를 정량적 변수에 적용한 것과 같습니다.하지만 하나의 막대로 각 고유 범주에 속하는 값의 개수를 나타내는 대신, 값을

life-of-nomad.tistory.com

  • 통합 연료 효율에 대해 data매개변수를 fuel_econ으로, x를 dispel으로, y를 comb로 설정합니다.
  •  또한 각 축에 표시된 변수를 알아볼 수 있도록 x레이블과 y레이블을 추가하겠습니다.
plt.scatter(data=df, x='displ', y='comb');
plt.xlabel('Displacement (1)')
plt.ylabel('Combined Fuel Eff. (mpg)')

  • 이 도표는 일반적으로 엔진 크기와 연료 효율간의 음의 상관관계를 나타냅니다.
  • 큰 배기량보다 작은 배기량에서 가변성이 더 큽니다.

 

4. seaborn.regplot()

  • 산점도 생성 방법 중 또 다른 한가지는 seaborn의 regplot 함수를 사용하는 것입니다.
  • 이 함수는 데이터에 대한 회귀선 적합과 산점도 생성을 결합합니다.
  • regplot 함수의 기본적인 매개변수는 'data', 'x', 'y'로 matplotlib의 scatter와 동일합니다.
sb.regplot(data = fuel_econ, x='displ', y='comb')
plt.xlabel('Displacement (1)')
plt.ylabel('Combined Fuel Eff. (mpg)');

  • 이 선을 보면 배기량이 낮고 효율이 높은 차량이 선의 왼쪽에 표시됨을 알 수 있습니다.
  • fit_reg = false를 이용하여 회귀선을 해제할 수도 있습니다.
728x90
반응형