일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터분석
- Python
- IRIS
- tableau
- SQL
- pandas
- SQLD
- ML
- 데이터 전처리
- r
- 시각화
- 코딩테스트
- 이코테
- 머신러닝
- 태블로
- scikit learn
- 자격증
- pytorch
- 이것이 코딩테스트다
- ADsP
- 통계
- 파이썬
- 데이터 분석
- matplotlib
- 회귀분석
- 딥러닝
- 데이터분석준전문가
- sklearn
- Google ML Bootcamp
- Deep Learning Specialization
- Today
- Total
함께하는 데이터 분석
[Python] Seaborn을 활용한 수치형 변수의 시각화 본문
안녕하세요!
오늘은 Python에서 Seaborn을 이용하여 수치형 변수의 시각화를
공부해보겠습니다.
Seaborn은 Matplotlib보다 고수준으로 코드도 간단하고
미학적으로도 괜찮습니다. 그렇다면 Matplotlib보다 Seaborn이 좋다는 것일까요?
결론적으로는 두 가지 라이브러리를 다 사용할 줄 알아야 합니다.
Matplotlib과 Seaborn을 같이 사용했을 때 Seaborn만을 사용했을 때 보다
더 좋은 결과물을 얻어낼 수 있습니다.
이처럼 결국에는 두 가지 라이브러리를 함께 사용하는 것이 효과적입니다.
그러면 오늘은 Seaborn을 이용하여 시각화를 시작해볼까요?
라이브러리 실행
import numpy as np
import pandas as pd
import seaborn as sns
numpy와 pandas 그리고 여기서 핵심인 seaborn을 불러와줍니다.
데이터 불러오기
mpg = sns.load_dataset("mpg")
seaborn에서 제공하는 mpg데이터를 활용하겠습니다.
데이터 일부분 불러오기
mpg.head() #5까지가 default
head와 tail은 default값이 5입니다.
mpg.tail(3)
만약 3행만 보고 싶으면 위와 같이 3을 넣으세요.
데이터 요약정보
mpg.info()
mpg, cylinders... 와 같은 독립변수들이 있습니다.
여기서 Dtype가 중요한데 float이 연속형 변수
int가 이산형 변수로 둘 다 수치형 변수입니다.
object는 범주형 변수입니다.
결측치 확인하기
mpg.isnull().sum()
변수 중 horsepower변수에 결측치가 6개가 있습니다.
데이터 기술통계
mpg.describe()
mpg.describe(include = 'object') #범주형 변수 기술통계
describe에 include = 'object' 인자를 넣으면 범주형 변수에 대해서도
기술통계 값을 제공해줍니다.
unique는 고유한 값의 개수고, top이 빈도수가 가장 높은 것
freq는 그것의 빈도수를 나타냅니다.
히스토그램
mpg.hist(figsize = (10, 8), bins = 50) #bins = 막대 갯수
왜도 구하기
mpg.skew() #양수일 때 오른쪽 부분에 긴 꼬리, 음수일 때 왼쪽 부분에 긴 꼬리, 정규분포 0에 가깝다
>>> mpg 0.457066
cylinders 0.526922
displacement 0.719645
horsepower 1.087326
weight 0.531063
acceleration 0.278777
model_year 0.011535
dtype: float64
양수일 때 오른쪽 부분에 긴 꼬리, 음수일 때 왼쪽 부분에 긴 꼬리
0에 가까울수록 정규분포와 유사한 형태를 갖습니다.
첨도 구하기
mpg.kurt() #3보다 작으면 정규분포보다 뾰족한 분포, 3보다 크면 정규분포보다 납작한 분포
>>> mpg -0.510781
cylinders -1.376662
displacement -0.746597
horsepower 0.696947
weight -0.785529
acceleration 0.419497
model_year -1.181232
dtype: float64
값이 3보다 작으면 정규분포보다 뾰족한 분포이고
값이 3보다 크면 정규분포보다 납작한 분포를 따릅니다.
Seaborn 시각화(1개 변수)
displot
sns.displot(data = mpg, x = 'mpg', kde = True) #kde = 선
mpg['mpg'].agg(['skew', 'kurt']) #왜도와 첨도 확인
>>> skew 0.457066
kurt -0.510781
Name: mpg, dtype: float64
boxplot
sns.boxplot(data = mpg, x = 'mpg') # 사분위수 보기 편함
boxplot에서 처음 선은 min 가장 마지막 선은 max값을 나타냅니다.
그리고 가운데 상자의 선은 순서대로 Q1, Q2(median), Q3를 나타냅니다.
위의 사진에 보이는 오른쪽 점은 이상치(outlier)를 나타내죠.
mpg['mpg'].describe()
>>> count 398.000000
mean 23.514573
std 7.815984
min 9.000000
25% 17.500000
50% 23.000000
75% 29.000000
max 46.600000
Name: mpg, dtype: float64
sns.boxplot(data = mpg)
violinplot
sns.violinplot(data = mpg, x = 'mpg') #boxplot 단점 보완(전체적인 데이터 분포 볼 수 있음)
violinplot은 boxplot에서 분포까지 더해주는 효과가 있습니다.
오른쪽 꼬리가 긴 것을 보아 왜도가 양수임을 알 수 있죠.
sns.violinplot(data = mpg)
Seaborn 시각화(2개 변수)
scatterplot
sns.scatterplot(data = mpg, x = 'weight', y = 'mpg', hue = 'origin') #hue 색상 표현
hue = 'origin'인자를 추가하면 origin 개체의 색깔을 나눠서 표시해줍니다.
회귀 시각화
sns.regplot(data = mpg, x = 'weight', y = 'mpg')
sns.lmplot(data = mpg, x='weight', y='mpg', hue='origin', col='origin', truncate=False) #truncate=False -> 연장선
lmplot은 regplot은 표현할 수 없는 개체마다 다른 서브 플랏을 표현해줄 수 있고
확장된 회귀선을 표시해줄 수 있습니다.
잔차 시각화
sns.residplot(data = mpg, x='weight', y='mpg')
jointplot
sns.jointplot(data = mpg, x='weight', y='mpg')
pairplot
sns.pairplot(data = mpg, hue='origin') #시간이 오래걸림, 전체적인 수치변수에 시각화 가능(상관)
lineplot
sns.lineplot(data = mpg, x='model_year', y='mpg') #ci=95 default
lineplot은 평균을 이어주는 선 그래프입니다.
주변의 그림자 같은 것은 CI이고 default는 95%입니다.
relplot
sns.relplot(data=mpg, x='model_year', y='mpg', col='origin', kind='line')
relplot은 col인자로 서브플랏을 그릴 수 있고
kind인자를 통해 여러 가지 플랏을 그릴 수 있습니다.
상관분석
mpg.corr()
sns.heatmap(mpg.corr(), annot=True, cmap='coolwarm', vmax=1, vmin= -1)
annot=True인자는 상관계수 숫자를, cmap='coolwarm'은
상관계수가 1에 가까울수록 빨간색, -1에 가까울수록 파란색으로 표시해줍니다.
Copyright
https://www.boostcourse.org/ds101/joinLectures/261910
'데이터분석 공부 > Python' 카테고리의 다른 글
[Python] Matplotlib 기본 설정 & 선 그래프 (0) | 2022.03.27 |
---|---|
[Python] Seaborn을 활용한 범주형 변수의 시각화 (0) | 2022.03.19 |
[Python] Pandas - ② (0) | 2022.01.24 |
[Python] Pandas - ① (0) | 2022.01.24 |
[Python] NumPy (0) | 2022.01.23 |