데이터가 많거나, 분석해야 할 범주(부서 등)가 여러 개인 경우에는 한 화면에 담기가 쉽지 않습니다. 이럴 때 Seaborn의 FacetGrid를 활용하면, 특정 범주를 기준으로 여러 개의 서브플롯을 한 번에 생성할 수 있어 다차원으로 데이터를 살펴보기에 매우 편리합니다. 이번 포스팅에서는 FacetGrid와 map() 메서드를 이용해 부서별(Department) 연차(TotalWorkingYears)와 월급(MonthlyIncome)의 관계를 시각화해보겠습니다.
python
코드 복사
import seaborn as sns
import matplotlib.pyplot as plt
# FacetGrid 생성: col='Department' → 부서별로 각각 플롯을 나눔
facet = sns.FacetGrid(df, col='Department')
# facet.map(그래프 함수, x축 컬럼, y축 컬럼, ...)
facet.map(sns.barplot, 'TotalWorkingYears', 'MonthlyIncome')
# 그래프 제목, 레이아웃 조정
plt.subplots_adjust(top=0.85)
plt.suptitle("FacetGrid: MonthlyIncome by TotalWorkingYears, split by Department", y=1.02)
plt.show()
sns.FacetGrid(df, col='Department')df에서 Department 컬럼을 기준으로 열(col) 방향으로 서브플롯을 나눔.map(sns.barplot, 'TotalWorkingYears', 'MonthlyIncome')sns.barplot() 함수를 사용함TotalWorkingYears, y축은 MonthlyIncome으로 매핑plt.suptitle()위 코드가 정상적으로 실행되면, 화면에 각 부서별로 막대 그래프가 나란히 표시됩니다.
이를 통해 부서 간 경력(연차)에 따른 급여 정책이 다르거나, 직무 특성에 따른 차이가 있음을 추정할 수 있습니다.
FacetGrid를 생성할 때 row='Gender', col='Department', hue='JobLevel'처럼 여러 기준을 동시에 설정 가능map(sns.scatterplot, 'x', 'y')나 map(sns.histplot, 'x') 등 다양한 Seaborn 그래프 함수를 적용할 수 있음map 함수로 barplot을 쓸 때, order나 ci=None 같은 추가 인자를 넣을 수 있음facet.map(sns.barplot, 'TotalWorkingYears', 'MonthlyIncome', order=[1,2,3,4,5], ci=None)catplotcatplot이라는 고급 함수가 있어, kind='bar', kind='box', kind='count' 등으로 다양한 그래프를 한 번에 Facet 형태로 그릴 수 있음python
코드 복사
sns.catplot(data=df, x='TotalWorkingYears', y='MonthlyIncome', col='Department', kind='bar')
Seaborn의 FacetGrid는 다차원으로 데이터를 시각화할 때 매우 유용한 도구입니다. 위 예시처럼 부서별로 연차와 월급이 어떻게 달라지는지를 별도 그래프로 비교해 보면, 조직 구조나 보상 체계를 좀 더 입체적으로 이해할 수 있습니다.