쉽게 배우는 파이썬 데이터 분석 - 2

esc247·2022년 6월 21일
0

Data Analysis

목록 보기
5/10
post-thumbnail

데이터 정제

결측치, missing value

  • np.nan()
  • .isna() : 결측치 True 표시해 출력
  • .dropna() : 결측치가 있는 행 제거
    subset = [] : [ ] 에서만 결측치 제거
    변수 지정 안하면 하나라도 결측치면 제거.
  • pd.mead() , pd.sum() 같은 수치 연산 함수는 결측치 있으면 자동으로 제거 후 연산.
  • .fillna() : 다른 값으로 대체

이상치 anomaly

: 정상 범위에서 크게 벗어난 값

  • value_counts() 로 이상치 들어 있는지 파악 후 이상치를 결측치로 바꿔서 제거 후 분석.
  • 주의

    np.where()은 반환 값 중에 문자가 있으면 np.nan을 지정 하더라도 NAN이 아니라 문자 'nan'을 반환하므로 주의.
df = pd.DataFrame({'x1':[1,1,2,2]})
df['x2'] = np.where(df['x1']==1 , 'a',np.nan)
df
#
	x1	x2
0	1	a
1	1	a
2	2	nan
3	2	nan
###
df.isna()
#
	x1		x2
0	False	False
1	False	False
2	False	False
3	False	False
  • 결측치로 만들 값에 문자를 부여해 해결
df['x2'] = np.where(df['x1']==1,'a','etc')
df['x2'] = df['x2'].replace('etc',np.nan)
df
#
	x1	x2
0	1	a
1	1	a
2	2	NaN
3	2	NaN

극단치, outlier

논리적으로 존재할 수 있지만 극단적으로 크거나 작은 값.

  • 어디까지를 정상 범위로 볼 것인지 정한 후 제거.
  • box plot 을 이용해 중심에서 크게 벗어난 값 극단치로 간주.
import seaborn as sns
sns.boxplot(data=mpg,y='hwy')

  • (위에서부터) 극단치 - 극단치 경계 - 윗수염 - 3사분위수(Q3) - 2사분위수 - 1사분위수 - 아랫수염 -극단치 경계
  • df.quantile() : 분위 수 구할 수 있다.
pct25 = mpg['hwy'].quantile(.25)
pct25
#
18.0
#
pct75 = mpg['hwy'].quantile(.75)
pct75
#
27.0
  • IQR : 1사분위수와 3사분위수의 거리.
    iqr = pct75 -pct25
  • 하한 : 1사분위수 - 1.5* iqr 보다 작은 값.
  • 상한 : 3사분위수 + 1.5*iqr 보다 큰 값.
profile
막상 하면 모르니까 일단 하자.

0개의 댓글