#0. 준비단계 : 데이터셋 로드 및 라이브러리 import
- 라이브러리 불러오기
-seaborn에 내장된 데이터셋 'mpg' 로드
#1. Count : 각 범주별 빈도수 세기
-1개 변수의 빈도수 => series
: 변수. value_counts()
-2개 변수 빈도수 => table
: 데이터셋. crosstab( 변수1, 변수2)
![]() |
![]() |
df['origin'].value_counts()
|
pd.crosstab(df['origin'], df['cylinders'] )
|
- 빈도수 그래프=> countplot
: 데이터셋. countplot( data=데이터셋, x= 변수1)
#옵션
- hue : 범주별로 다른 색상 표현
![]() |
![]() |
#countplot ->origin 빈도수 시각화 하기
sns.countplot(data=df, x='origin')
|
#2개 이상의 빈도수
sns.countplot(data=df, x='origin', hue='cylinders') |
- 2. 두 변수의 관계
# 막대 그래프=> barplot
: 데이터셋. barplot( data=데이터셋, x= 변수1, y=변수2)
#옵션
- estimator = np.mean /np.sum 등 값 지정 가능
- ci : 신뢰구간 / = 'sd' 지정하면 표준편차
ex)
sns.barplot(data= df, x='origin', y='mpg', estimator=np.mean , ci='sd')
#groupby = > series
: 데이터셋. groupby('기준')
-> 슬라이싱을 통해 원하는 열만 추출 가능
-> 메소드 체이닝으로 .sum / ,mean등의 통계 가능
ex)
![]() |
![]() |
df.groupby('origin') ['mpg']. mean() |
df.groupby(['cylinders','origin'])['mpg'].mean().unstack()
|
# pivot_table = > series
: pd. pivot_table(data = 데이터셋, index= '열1', values = '열2')
-> table로 나타남
ex)
![]() |
![]() |
pd.pivot_table(data=df, index='origin', values='mpg') |
pd.pivot_table(data=df, index= ['cylinders', 'origin'], values= 'mpg')
|
#3. boxplot 으로 이상치 구하기
=> outer(이상치)는 각 minumum과 maximum 밖에 있는 숫자들을 뜻함
예제 : origin에 따른 mpg 값을 구하는데 있어 이상치를 구해보자!
먼저 boxplot을 나타내 보면
이상치가 존재함을 알 수 있다.
그럼 어떻게 그 기준을 구할 수 있을까?
1단계 : 묶을 데이터 변수 파악
>> df.groupby('origin').describe()
=> 여기서 우린 25%, 50%, 75%의 행을 사용할 거임
=> 우선 mpg 만 슬라이스해서 저장해보자
2단계 : 관계를 파악할 변수의 기술통계값 저장
origin_desc = df.groupby('origin')['mpg'].describe()
3단계 : 각 사분위수와 IQR 구하기
#IQR, 이상치를 제외한 최댓값, 최솟값 구하기
europe = origin_desc.loc['europe']
Q3 = europe['75%']
Q1 = europe['25%']
IQR = Q3-Q1
OUT_MAX = Q3+1.5*IQR
OUT_MIN = Q1 -1.5*IQR
=> OUT_MAX와 OUT_MIN 밖에 있는 수가 이상치
#4. 산점도로 범주형 변수 시각화하기
# sns.scatterplot ( data = 데이터셋, x = 변수1 , y = 변수2) // 점그래프
ex)
sns.scatterplot(data=df, x='origin', y='mpg')
# sns.stripplot ( data = 데이터셋, x = 변수1 , y = 변수2) // 점그래프 흩뿌리기
ex)
sns.stripplot(data=df, x='origin', y='mpg', hue='origin')

# sns.swarmplot ( data = 데이터셋, x = 변수1 , y = 변수2) // 점그래프 분포 표시
ex)
sns.swarmplot(data=df, x='origin', y='mpg', hue='origin', size=3)
#size : 마커의 크기 표시
#hue : 각 범주별 색깔 표시
# sns.catplot ( data = 데이터셋, x = 변수1 , y = 변수2) // 점그래프 분포 표시
=> kind로 종류 지정 가능(기본 : scatter)
#옵션
col : 서브플롯 분기 기준 지정 가능
col_warp : 한 줄에 보여주는 그래프 개수
ex)cylinder 별 origin-mpg의 관계
![]() |
![]() |
sns.catplot(data=df, x='origin', y='mpg', col = 'cylinders', col_wrap=3)
|
sns.catplot(data=df, x='origin', y='mpg', col = 'cylinders', col_wrap=3, kind='box')
|
![]() |
![]() |
sns.catplot(data=df, x='origin', y='mpg', col = 'cylinders', col_wrap=3, kind='violin')
|
sns.catplot(data=df, x='origin', col = 'cylinders', col_wrap=3, kind='count')
|
'데이터 분석 > 파이썬' 카테고리의 다른 글
[나도코딩] 데이터 분석 및 시각화 - matplotlib 요약 (0) | 2023.04.12 |
---|---|
[나도코딩] 데이터 분석 및 시각화 - Pandas 요약 (0) | 2023.04.12 |
5-3) 수치형 데이터 변수의 요약과 기술통계 (0) | 2023.03.29 |
5-2) 탐색적 데이터 도구 : pandas_profiling / sweetviz (0) | 2023.03.26 |
5-1) Pandas 기초와 데이터요약 (0) | 2023.03.25 |