728x90
반응형
isnull()
누락데이터이면 True를 아니면 False를 반환한다. 반대로 notnull()은 누락데이터이면 False를 아니면 True를 반환한다.
직관적으로 누락데이터만을 확인할 수 있다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
# 각 열(axis=0)의 누락데이터 합 보기
print(titanic.isnull().sum())
# tip : 행으로 계산하려면 sum(axis=1)
실행결과
survived 0
pclass 0
sex 0
age 177
sibsp 0
parch 0
fare 0
embarked 2
class 0
who 0
adult_male 0
deck 688
embark_town 2
alive 0
alone 0
dtype: int64
dropna()
옵션에 따라서 열이나 행을 삭제한다.
누락데이터가 많은 열(컬럼) 삭제하기
# ~ 생략 ~
# 누락데이터가 500개 이상인 컬럽을 삭제
df_thresh = titanic.dropna(axis=1, thresh=500)
print(df_thresh.isnull().sum())
실행결과
survived 0
pclass 0
sex 0
age 177
sibsp 0
parch 0
fare 0
embarked 2
class 0
who 0
adult_male 0
embark_town 2
alive 0
alone 0
dtype: int64
특정 열에 누락데이터가 있는 행(인덱스)을 제거하기
# ~ 생략 ~
# age컬럼에 누락데이가 있는 행(인덱스)을 제거
df_age = df_thresh.dropna(
subset=['age'], # 열 선택
# axis=0, # 축 선택 defualt : 0
# how='any' # 방법 선택,
# 하나라도 누락데이터가 있으면 삭제 - 'any'(default) / 행 전체가 모두 누락데이터이면 삭제 - 'all'
)
print(df_thresh.notnull().sum())
print()
print(df_age.notnull().sum())
실행결과
survived 891
pclass 891
sex 891
age 714
sibsp 891
parch 891
fare 891
embarked 889
class 891
who 891
adult_male 891
embark_town 889
alive 891
alone 891
dtype: int64
survived 714
pclass 714
sex 714
age 714
sibsp 714
parch 714
fare 714
embarked 712
class 714
who 714
adult_male 714
embark_town 712
alive 714
alone 714
dtype: int64
fillna()
누락 데이터를 다른 값으로 치환한다.
특정 값으로 치환
# age 컬럼의 누락데이터를 age의 평균값으로 치환
df_age2 = df_thresh.copy()
print(df_age2['age'].head(10))
print()
mean_age = int(df_age2['age'].mean())
print(mean_age)
print()
df_age2['age'].fillna(mean_age, inplace=True)
print(df_age2['age'].head(10))
실행결과
0 22.0
1 38.0
2 26.0
3 35.0
4 35.0
5 NaN
6 54.0
7 2.0
8 27.0
9 14.0
Name: age, dtype: float64
29
0 22.0
1 38.0
2 26.0
3 35.0
4 35.0
5 29.0
6 54.0
7 2.0
8 27.0
9 14.0
Name: age, dtype: float64
인접한 값으로 치환
# embark_town의 누락 데이터에 인접한 값으로 치환
df_embark = df_thresh.copy()
print(df_embark['embark_town'][825:831]) ;print()
df_embark['embark_town'].fillna(method='ffill',inplace=True)
# 'ffill' 앞(front)에 값으로,'bfill' 뒤(back)에 값으로 대체
print(df_embark['embark_town'][825:831])
실행결과
825 Queenstown
826 Southampton
827 Cherbourg
828 Queenstown
829 NaN
830 Cherbourg
Name: embark_town, dtype: object
825 Queenstown
826 Southampton
827 Cherbourg
828 Queenstown
829 Queenstown
830 Cherbourg
Name: embark_town, dtype: object
replace()
replace() 함수는 요소를 바꿔주는 함수이지만 누락데이터를 처리할 때에도 쓸 수 있다.
보통 누락 데이터는 np.nan을 넣는 경우가 많지만 '?','-' 등 기호가 들어가 있을 경우에는 이전에 함수들로는 처리할 수 없기 때문에 replace()함수를 써서 np.nan으로 바꾼 뒤 이전에 함수들로 처리하거나 평균 등 특정 값으로 바꾸어 넣을 수 있다.
728x90
반응형
'Python 파이썬 > pandas' 카테고리의 다른 글
pandas ) 특정 요소 변경 replace() 함수 (0) | 2022.04.12 |
---|---|
pandas ) 중복 데이터 처리 duplicated(), drop_duplicates() (0) | 2022.04.04 |
pandas ) 판다스 내장 그래프 도구 (0) | 2022.03.22 |
pandas ) 판다스 데이터 속성&메소드 Pandas Data Properties&Method (0) | 2022.03.21 |
pandas ) I/O 도구 (0) | 2022.03.15 |
댓글