시각화를 통한 데이터 드릴다운 3 – Regplot

Ryan·2025년 1월 14일

SQL/Python 분석

목록 보기
44/94

데이터 분석에서 숫자형 변수 두 개를 가지고 선형적인 관계를 시각적으로 파악하고 싶다면, Seaborn의 regplot()을 활용해 볼 수 있습니다. 이번 포스팅에서는 나이(Age)와 월급(MonthlyIncome) 간의 관계를 회귀선(Regression Line)으로 시각화하는 예시를 살펴보겠습니다.


1. Regplot이란?

  • Seaborn에서 제공하는 산점도(Scatter Plot) + 회귀선(Regression Line)을 한 번에 그려주는 함수
  • 데이터 포인트들이 어떻게 분포되어 있는지 확인할 수 있고, 동시에 추세선(선형 회귀선)을 통해 변수 간 선형관계를 간단히 파악
  • 예: “나이가 많을수록 월급이 증가하는가?”를 직관적으로 확인 가능

2. 코드 예시

아래 코드는 df 데이터프레임에서 Age(x축)와 MonthlyIncome(y축) 간의 관계를 regplot()을 이용해 시각화합니다.

python
코드 복사
import seaborn as sns
import matplotlib.pyplot as plt

# 나이와 월급 간의 관계 확인
sns.regplot(x=df['Age'], y=df['MonthlyIncome'])
plt.title("Age vs. MonthlyIncome (Regplot)")
plt.xlabel("Age")
plt.ylabel("MonthlyIncome")
plt.show()

코드 해설

  1. sns.regplot(x=df['Age'], y=df['MonthlyIncome'])
    • xy 파라미터로 각각 데이터프레임의 컬럼을 지정
    • 산점도와 함께 선형 회귀선(붉은색 선)이 그려짐
  2. plt.title(), plt.xlabel(), plt.ylabel()
    • 그래프 제목과 축 라벨을 지정해 그래프를 더욱 명확하게 전달
  3. plt.show()
    • 그래프를 화면에 표시

3. 결과 해석

위 코드를 실행하면, 데이터 포인트들이 (Age, MonthlyIncome) 좌표 상에 분포하고, 그 위에 회귀선이 그려져 있습니다.

  • 나이가 많을수록 월급이 약간씩 증가하는 경향이 있을 수 있음
  • 산점도가 좌우로 퍼져 있되, 회귀선이 상향 기울기를 갖고 있다면, 나이와 월급 간에 양의 상관관계가 있음을 시사
  • 그러나 데이터 분포가 회귀선 주변에 많이 흩어져 있다면(결정계수 R²가 낮다면), 관계가 하거나 노이즈가 많다는 의미이기도 함

4. 추가 파라미터

  • fit_reg=False: 회귀선을 그리지 않고 단순 산점도만 보고 싶다면 fit_reg=False 옵션 활용 가능
    python
    코드 복사
    sns.regplot(x='Age', y='MonthlyIncome', data=df, fit_reg=False)
    
  • order: 단순 선형이 아니라 다항 회귀를 적용하고 싶다면 order=2 등으로 지정 가능
  • ci=None: 회귀선의 신뢰 구간(Confidence Interval)을 제거하고 싶다면
    python
    코드 복사
    sns.regplot(x='Age', y='MonthlyIncome', data=df, ci=None)
    
  • scatter_kws & line_kws: 산점도와 회귀선의 스타일(색, 투명도 등)을 세부 조정할 수 있음
    python
    코드 복사
    sns.regplot(
        x='Age', y='MonthlyIncome', data=df,
        scatter_kws={'alpha':0.5, 'color':'blue'},
        line_kws={'color':'red'}
    )
    

5. 나아가서…

  1. 상관계수와 함께 활용
    • df[['Age', 'MonthlyIncome']].corr()로 실제 상관계수를 확인해, 그래프 해석을 수치적 지표로 보완
  2. 다른 변수들과의 비교
    • 여러 변수 간 관계를 모두 보고 싶다면, Pairplot(sns.pairplot())을 사용하거나, Heatmap으로 상관계를 전체적으로 볼 수도 있음
  3. 집단별 차이
    • hue 옵션이 지원되는 그래프(예: lmplot)에서 부서(Department)직급(JobLevel) 등을 구분해 본다면, 나이-월급 관계가 집단별로 어떻게 달라지는지 드릴다운 가능
    • 예:
      python
      코드 복사
      sns.lmplot(data=df, x='Age', y='MonthlyIncome', hue='Department')
      
  4. 회귀 모델링
    • 단순 시각화 수준을 넘어, 실제 선형회귀 모델(OLS) 등을 통해 통계적 유의성, 결정계수(R²), p값 등을 정량적으로 분석할 수도 있음

마무리

Seaborn의 regplot()산점도회귀선을 한 번에 보여주어, 두 숫자형 변수 간의 관계(특히 선형적 관계)를 직관적으로 파악하게 해주는 강력한 툴입니다.

예시처럼 Age(나이)가 많을수록 MonthlyIncome(월급)이 조금씩 올라간다는 사실을 한눈에 확인할 수 있죠.

하지만 기억해야 할 점은, 높은 상관관계(또는 회귀선 기울기)인과관계를 의미하지는 않는다는 것입니다. 추가로 도메인 지식, 통계 검증 등 여러 분석 기법을 통해 더 깊은 인사이트를 얻어야 할 필요가 있어 보인다.

0개의 댓글