Seaborn의 산점도(scatter plot)는 두 변수 간의 관계를 점으로 표현하면서, 여러 의미론적 그룹화(색상·크기·스타일 등)를 함께 적용할 수 있는 강력한 시각화 기법입니다. 이를 구현하는 핵심 함수는 바로 seaborn.scatterplot()입니다.
이번 글에서는 크리켓 선수 데이터(Cricketers.csv)를 예제로 사용하여, 나이(Age)와 몸무게(Weight)의 관계를 산점도로 시각화하는 방법을 단계별로 알아보겠습니다.
1. 필수 라이브러리 임포트
먼저 시각화에 필요한 세 가지 라이브러리를 임포트합니다.
import seaborn as sb import pandas as pd import matplotlib.pyplot as plt
- seaborn: 통계 기반 데이터 시각화 라이브러리
- pandas: CSV 파일을 읽고 데이터를 다루는 라이브러리
- matplotlib.pyplot: 그래프 표시 및 축 레이블 설정에 사용
2. CSV 데이터 불러오기
pd.read_csv() 함수를 사용해 CSV 파일의 데이터를 Pandas DataFrame으로 로드합니다.
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")3. hue 매개변수로 그룹 구분하기
나이(Age)와 몸무게(Weight)를 축으로 하는 산점도를 그리고, hue 매개변수를 "Role"로 설정하면 선수 역할별로 다른 색상이 자동으로 적용되어 그룹 간 차이를 한눈에 파악할 수 있습니다.
sb.scatterplot(x=dataFrame['Age'], y=dataFrame['Weight'], hue=dataFrame['Role'])
참고: 최신 버전의 Seaborn에서는 위치 인자(positional argument) 전달 방식이 지원 중단(deprecated)되었으므로, 위 코드처럼
x=,y=키워드 인자를 명시적으로 지정하는 것이 권장됩니다.
전체 예제 코드
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
# CSV 파일에서 데이터를 로드하여 Pandas DataFrame으로 변환
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")
# Age와 Weight(kgs)로 산점도 그리기
# hue 매개변수를 "Role"로 설정하여 역할별 색상 구분
sb.scatterplot(x=dataFrame['Age'], y=dataFrame['Weight'], hue=dataFrame['Role'])
plt.ylabel("Weight (kgs)")
plt.show()실행 결과
위 코드를 실행하면 나이에 따른 몸무게 분포가 점으로 표시되고, 선수의 역할(Role)에 따라 색상이 달라진 산점도가 출력됩니다. 이를 통해 특정 역할 그룹의 신체적 특성 패턴을 쉽게 발견할 수 있습니다.
4. hue 없이 기본 산점도 그리기
hue 매개변수를 설정하지 않으면 모든 데이터 포인트가 동일한 색상으로 표시됩니다. 단순히 두 변수 간의 관계만 확인하고 싶을 때 유용합니다.
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
# CSV 파일에서 데이터를 로드하여 Pandas DataFrame으로 변환
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")
# Age와 Weight(kgs)로 기본 산점도 그리기
sb.scatterplot(x=dataFrame['Age'], y=dataFrame['Weight'])
plt.ylabel("Weight (kgs)")
plt.show()실행 결과
색상 구분 없이 나이와 몸무게 사이의 전체적인 상관관계가 하나의 색상으로 표현된 산점도가 출력됩니다.
마무리
Seaborn의 scatterplot()은 단 몇 줄의 코드로 데이터의 관계를 직관적으로 시각화할 수 있습니다. hue 매개변수를 활용하면 카테고리형 변수에 따른 그룹 비교까지 손쉽게 수행할 수 있으므로, 탐색적 데이터 분석(EDA) 단계에서 매우 유용하게 활용할 수 있습니다.