1. 결측치 처리 (info(), isna(), isnull(), notnull(), isna().sum())
- 결측치는 NaN 값으로, 누락된 데이터를 처리하기 위한 전처리 작업이 필요함.
- 제거를 하거나, 다른 값(평균값, 최빈값 등)으로 채워야 함.
1) 결측치 찾기
# info()
df.info() # Non-Null Count를 확인하여, Null 값을 찾는다.
# isna(), isnull(), notnull()
df.isnull() # Null 값을 True나 False로 반환 (결측치를 True로 반환)
# isna().sum()
df.isna().sum() # 열의 결측치 개수 확인
2) 결측치 제거 (dropna())
# dropna()
df.dropna(axis=0, inplace=True) # 결측치가 하나라도 있는 '행'을 제거
# dropna(subset=['특정열'], axis=0, inplace=True)
df.dropna(subset=['Ozone'], axis=0, inplace=True) # 'Ozone' 열에 결측치가 있는 행을 제거
# dropna(axis=1, inplace=True)
df.dropna(axis=1, inplace=True) # 결측치가 있는 모든 '열'을 제거
3) 결측치 채우기 (fillna())
# 평균값으로 채우기
# Ozone 평균 구하기
mean_Ozone = air_test['Ozone'].mean()
# 결측치를 평균값으로 채우기
air_test['Ozone'].fillna(mean_Ozone, inplace=True) # 원래 inplace=True 열에는 X,, 원래는 dataframe에 대한 거기때문
# air_test['Ozone'] = air_test['Ozone'].fillna(mean_Ozone)
# 특정값으로 채우기
air_test['Solar.R'].fillna(0, inplace=True) # 경고 발생
# air_test = air_test['Solar.R'].fillna(0)
# 직전 행의 값 또는 바로 다음 행의 값 : ffill(바로 앞의 값), bfill(바로 다음 값)
# Ozone 열의 누락된 값을 바로 앞의 값으로 채우기
# air_test['Ozone'] = air_test['Ozone'].fillna(method='ffill')
air_test['Ozone'] = air_test['Ozone'].ffill
# Solar.R 열의 누락된 값을 바로 뒤의 값으로 채우기
# air_test['Solar.R'] = air_test['Solar.R'].fillna(method='bfill')
air_test['Solar.R'] = air_test['Solar.R'].bfill
# 선형보간법으로 채우기 interpolate()
df.interpolate(method='linear', inplace=True)
2. 가변수(Dummy Variable) 만들기 (One-Hot-Encoding)
- 범주형 '문자열' 데이터는 머신러닝에서 인식하지 못하므로, 머신러닝 알고리즘에 사용하기 위하여 숫자로 변환함.
- get_dummies()
1) 변수 개별 처리
- columns 옵션에 열을 하나 지정해 처리
- 자동으로 원본 열 제거, 열 이름 prefix로 사용됨.
- 다중공선성 문제를 없애기 위해 drop_first=True 옵션 지정
* 다중공선성 문제
- 통계학의 회귀분석에서 독립변수들 간에 강한 상관관계가 나타나는 문제
- 독립변수들 간 정확한 선형관계가 존재하는 완전공선성의 경우와
- 독립변수들 간 높은 성형관계가 존재하는 다중공선성으로 구분
=> 적절한 회귀분석을 위해 해결해야 하는 문제
ex) adult_Yes, adult_No가 각
Yes : No
1 0
0 1
0 1 로 되어 있으면
- 하나의 값이 없어도 다른 하나의 값으로 인해 값을 알 수 있음.
- adult_Yes가 없어도 adult_No로 충분히 값을 확인할 수 있음.
2) 일괄 처리
# 여러 범주형 변수를 가변수화: smoker, day, time
dumn_cols = ['smoker', 'day', 'time']
tip = pd.get_dummies(tip, columns=dumn_cols, drop_first=True, dtype=int)
# columns 옵션을 지정하지 않으면, 문자열 값을 갖는 열 모두를 대상으로 함
# 참고 => dtype=int : 결측치가 있으면 자료형이 float가 되므로, int로 바꾸어 주어야 함.
'파이썬 > 데이터 다듬기' 카테고리의 다른 글
[240920] 데이터다듬기#8 - 판다스 데이터프레임 변경(4) (0) | 2024.09.21 |
---|---|
[240920] 데이터다듬기#7 - 판다스 데이터프레임 변경 (3) (0) | 2024.09.21 |
[240920] 데이터다듬기 #5 판다스 데이터프레임 변경(1) (1) | 2024.09.21 |
[240913] 데이터다듬기#4 - 판다스 데이터프레임 집계 (0) | 2024.09.13 |
[240913] 데이터다듬기#3 - 판다스 데이터프레임 조회 (1) | 2024.09.13 |