반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 영국석사
- 코드잇 TIL
- 코드잇
- 코딩독학
- CSS
- 런던
- 파이썬
- 경사하강법
- 선형회귀
- 코딩공부
- 판다스
- 나혼자코딩
- 로지스틱회귀
- HTML
- 머신러닝
- matplotlib
- 데이터분석
- 윈도우함수
- 오늘도코드잇
- Seaborn
- sql연습문제
- 코딩
- 코드잇TIL
- 행렬
- SQL
- numpy
- for반복문
- 유학생
- 다항회귀
- 결정트리
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(데이터분석) 다변량 데이터에서 Faceting(면 분할)하기 본문
728x90
반응형
지난 글에서 seaborn으로 히스토그램으로 패싯팅(면 분할, Faceting)하는 방법에 대해 알아보았습니다.
이번 글에서는 다변량 데이터에서 두 가지 방향으로 패싯팅하는 방법에 대해 알아보겠습니다.
두가지 방향으로 면 분할을 하고 각 면에 이변량 차트를 나타내면 다변량 자료를 만들 수 있습니다.
🔻(참고)Faceitng🔻
1. 차급에 따른 연비의 산점도
- 먼저, 필요한 라이브러리와 연비 데이터를 불러옵니다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
- trans_type 열을 새로 만들어서 변속기 종류를 Automatic과 Manual로만 분류하겠습니다.
df = pd.read_csv('../data/fuel-econ.csv')
df['trans_type'] = df['trans'].apply(lambda x:x.split()[0])
- Facetgrid 함수에는 연비 DataFrame을 지정하고 VClass의 고유한 값을 열로 사용하도록 설정합니다.
- 그 다음, FacetGrid의 map 함수를 사용해서 엔진 배기량과 복합 연비를 나타내는 일련의 이변량 산점도를 작성합니다.
# 차급에 따른 연비의 산점도
g = sns.FacetGrid(data=df, col='VClass')
g.map(plt.scatter, 'displ', 'comb')
- 이 차트에서는 각 열이 서로 다른 차급을 나타냅니다.
- 하나의 변수로만 면 분할을 할 수 있는 것은 아닙니다.
- row 라는 매개변수를 추가할 수도 있습니다.
2. 차급과 변속기 종류에 따른 연비의 산점도
- row를 추가해 trans_type으로 설정한 다음 동일한 map 함수를 실행해봅시다.
# 차급과 변속기 종류에 따른 연비의 산점도
g = sns.FacetGrid(data=df, col='VClass', row='trans_type', margin_titles=True)
g.map(plt.scatter, 'displ', 'comb')
- 차트를 보면 변속기의 종류에 따라 행이 나눠지고 있습니다.
- 첫 번째 행은 자동 변속기이고 두 번째 행은 수동 변속기이며, 각 열은 서로 다른 차급을 나타냅니다.
- 하지만, 차트의 제목을 읽을 수가 없습니다.
- 이때, 매개변수 margin_titles를 True로 설정하면 됩니다.
- 그러면 행의 제목은 각 행에 별도로 표시됩니다.
g = sns.FacetGrid(data=df, col='VClass', row='trans_type', margin_title=True)
g.map(plt.scatter, 'displ', 'comb')
- 행의 제목이 차트의 오른쪽으로 이동하면서 차트가 훨씬 깔끔해졌습니다.
3. 다변량 데이터에서의 면 분할
- 이전 글에서는 FacetGrid를 사용해 범주형 변수의 수준별로 데이터 세트의 부분 집합을 만든 다음 각 부분 집합에 대하여 하나의 차트를 만들 수 있음을 확인했습니다.
- 이전 글에서 본 면 분할 차트는 단변량 차트였습니다.
- 하지만 면 분할 차트를 이변량 차트로 설정하여 다변량 데이터를 시각화 하는 것도 가능합니다.
#차트 작성의 편의를 위해 두 가지 연료만 선택
g = sns.FacetGrid(data=df, col='trans_type')
g.map(sns.boxplot, 'fuelType', 'highway',)
for ax in g.axes.flat:
_ = ax.set_xticklabels(ax.get_xticklabels(), rotation=15)
- 위의 면 분할 상자 그림을 보면 수동 변속기가 평균적으로 조금 더 효율적인 것 같기는 하지만 큰 차이는 없습니다. 하지만 연료 종류에 따른 차이는 분명합니다.
- FacetGrid 에서는 열이 아니라 행을 기준으로 면 분할을 할 수도 있습니다.
- 두 개의 다른 범주형 변수를 각각 서로 다른 축에 설정하는 방식으로도 다변량 데이터의 추세를 나타낼 수 있습니다.
# 간단하게 두 종류의 연료만 살펴보기
df_fueltypes = df[(df['fuelType'] == 'Regular Gasolin') | (df['fuelType'] == 'Disel')].reset_index(drop=True)
g = sns.FacetGrid(data=df_fueltypes, col='fuelType', row='trans_type', margin_titles=True)
g.map(sns.scatterplot, 'co2', 'highway')
- margin_titles = True 의 설정은 각 면마다 행과 열의 레이블을 추가하는 대신, 해당 레이블을 그리드 상단과 오른쪽에 별도로 표시하겠다는 의미입니다.
728x90
반응형
'코딩공부 > Data analysis' 카테고리의 다른 글
(데이터분석) seaborn의 pairgrid 함수 이용해서 차트행렬 (Plot Matrices) 작성하기 (1) | 2024.05.29 |
---|---|
(데이터분석) 이변량 차트를 seaborn의 hue이용해서 다변량 차트 나타내기 (0) | 2024.05.29 |
(데이터분석) matplotlib,seaborn에서 마커를 이용하여 다변량 변수 나타내기 (1) | 2024.05.28 |
(데이터분석) matplotlib으로 선도표 나타내기 (0) | 2024.05.28 |
(데이터분석) seaborn으로 히스토그램 faceting(면 분할) 하기 (0) | 2024.05.27 |