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 |
Tags
- ADsP
- 코딩테스트
- pytorch
- r
- Python
- 시각화
- pandas
- 데이터분석준전문가
- 파이썬
- Google ML Bootcamp
- SQL
- 이코테
- Deep Learning Specialization
- 데이터 전처리
- 통계
- 딥러닝
- 태블로
- ML
- matplotlib
- 자격증
- SQLD
- 머신러닝
- IRIS
- 데이터 분석
- tableau
- 이것이 코딩테스트다
- 회귀분석
- 데이터분석
- sklearn
- scikit learn
Archives
- Today
- Total
함께하는 데이터 분석
[Python] Seaborn을 활용한 범주형 변수의 시각화 본문
안녕하세요!
이번에는 Python에서 Seaborn을 활용하여 범주형 변수의 시각화를
공부해보겠습니다.
라이브러리 실행
import numpy as np
import pandas as pd
import seaborn as sns
데이터 불러오기
mpg = sns.load_dataset('mpg')
1개의 범주형 변수에 대한 시각화
sns.countplot(data = mpg, x='origin')
countplot은 x나 y에 하나의 범주형 변수만 넣으면
나머지는 개수로 표현됩니다.
sns.countplot(data = mpg, y='origin')
mpg['origin'].value_counts()
>>> usa 249
japan 79
europe 70
Name: origin, dtype: int64
'origin'의 개수를 표로 나타낸 것입니다.
sns.countplot(data = mpg, x='origin', hue='cylinders')
pd.crosstab(mpg['origin'], mpg['cylinders'])
barplot
sns.barplot(data = mpg, x='origin', y='mpg') #default = mean, ci=95
x축은 origin, y축은 mpg인 barplot입니다.
검은 선은 CI 95%를 나타냅니다.
mpg.groupby('origin')['mpg'].mean()
>>> origin
europe 27.891429
japan 30.450633
usa 20.083534
Name: mpg, dtype: float64
groupby를 이용하여 표로 나타낸 것입니다.
pd.pivot_table(data=mpg, index='origin', values='mpg') #DataFrame형태로 반환(보기 편리)
pivot_table을 이용하면 DataFrame 형태로
groupby를 편하게 볼 수 있죠.
sns.barplot(data = mpg, x='origin', y='mpg', estimator=np.sum, ci=None)
estimator=np.sum 인자를 이용해 y값을 총합으로 볼 수 있어요.
sns.barplot(data = mpg, x='cylinders', y='mpg', hue='origin', ci=None)
mpg.groupby(['cylinders', 'origin'])['mpg'].mean()
>>> cylinders origin
3 japan 20.550000
4 europe 28.411111
japan 31.595652
usa 27.840278
5 europe 27.366667
6 europe 20.100000
japan 23.883333
usa 19.663514
8 usa 14.963107
Name: mpg, dtype: float64
pd.pivot_table(data=mpg, index='cylinders', columns='origin', values='mpg')
boxplot
sns.boxplot(data=mpg, x='origin', y='mpg')
origin_desc = mpg.groupby('origin')['mpg'].describe()
origin_desc
europe = origin_desc.loc['europe']
europe
>>> count 70.000000
mean 27.891429
std 6.723930
min 16.200000
25% 24.000000
50% 26.500000
75% 30.650000
max 44.300000
Name: europe, dtype: float64
df.loc를 이용하여 원하는 행 또는 열 추출
Q1 = europe['25%']
Q2 = europe['50%']
Q3 = europe['75%']
IQR = Q3 - Q1
out_max = Q3 + 1.5*IQR
out_min = Q1 - 1.5*IQR
out_max, out_min
>>> (40.625, 14.025000000000002)
IQR을 이용하여 이상치 범위 구하기.
violinplot
sns.violinplot(data=mpg, x='origin', y='mpg') #분포까지 보기 쉽게
boxplot보다 분포를 쉽게 볼 수 있는 장점!
산점도를 이용한 범주형 시각화
sns.scatterplot(data = mpg, x='origin', y='mpg') #범주형 데이터 표현 적합x
범주형 변수를 scatterplot를 통해 시각화하는 것은 적합하지 않습니다.
sns.stripplot(data = mpg, x='origin', y='mpg') #밀도 정도만 알 수 있음
stripplot은 밀도는 알 수 있지만 부족한 것을 볼 수 있죠.
sns.swarmplot(data = mpg, x='origin', y='mpg')
swarmplot은 violinplot을 점으로 표현한 것을 알 수 있죠.
catplot
sns.catplot(data = mpg, x='origin', y='mpg', kind='swarm') #kind로 변경가능
catplot은 kind인자를 통해 여러 가지 plot을 시각화할 수 있어요.
sns.catplot(data = mpg, x='origin', y='mpg', col='cylinders', kind='box') #col로 서브플랏 생성가능
sns.catplot(data = mpg, x='origin', col='cylinders', kind='count') #col로 서브플랏 생성가능
col인자를 이용하여 서브플랏도 그릴 수 있습니다.
Copyright
https://www.boostcourse.org/ds101/joinLectures/261910
모두를 위한 데이터 사이언스
부스트코스 무료 강의
www.boostcourse.org
'데이터분석 공부 > Python' 카테고리의 다른 글
[Python] Matplotlib 선 그래프와 배경 꾸미기 (0) | 2022.03.28 |
---|---|
[Python] Matplotlib 기본 설정 & 선 그래프 (0) | 2022.03.27 |
[Python] Seaborn을 활용한 수치형 변수의 시각화 (0) | 2022.03.18 |
[Python] Pandas - ② (0) | 2022.01.24 |
[Python] Pandas - ① (0) | 2022.01.24 |