1. 결측 데이터 처리
👩🏻🚀 판다스는 누락된 데이터를 표시할 때 NaN (Not a Number)로 표기하며, 연산에는 표함되지 않음
1) 결측 데이터 확인
✏️ isna() 메서드는 값이 NaN일 때 True, 아닌 경우엔 False 반환
✏️ isnull() 메서드는 결측 데이터이면 True 반환, 유효한 데이터가 존재하면 False를 반환
⚡️ isna(), isnull()은 기능적으로 동일
import pandas as pd
df = pd.read_csv('../input/weather.csv', index_col='date')
# 두 개다 결과가 같다.
df['max_wind'].isna()
df['max_wind'].isnull()
'''
출력 결과)
2010-08-01,False
2010-08-02,False
2010-08-03,False
2010-08-04,False
2010-08-05,False
2010-08-06,False
2010-08-07,False
2010-08-08,False
2010-08-09,False
2010-08-10,False
'''
① 결측 데이터 개수 확인
df.isnull().sum()
'''
temp 0
max_wind 4
mean_wind 6
dtype: int64
'''
df.isnull().value_counts()
'''
temp max_wind mean_wind
False False False 3646
True 3
True True 3
False 1
Name: count, dtype: int64
'''
✏️ notnull()은 유효한 데이터가 존재하면 True를 반환, 결측 데이터면 False를 반환
df.notnull().sum()
'''
temp 3653
max_wind 3649
mean_wind 3647
dtype: int64
'''
2) 결측 데이터 삭제
✏️ 결측 데이터를 다루는 가장 간단한 방법은 결측 데이터를 가진 행이나 열을 삭제
✏️ 판다스에서 dropna()를 이용하여 삭제 할 수 있다.
✏️ 행 데이터 중 어느 한 변수에도 결측치가 있는 경우 삭제되므로 향후 제거한 데이터프레임을 사용하려면 다른 이름으로 저장해야 함
DataFrame.dropna(axis, how, thresh, subset, inplace)
📍 axis : 축을 행 또는 열로 결정
➡️ 0 또는 'index'이면 누락된 값이 포함된 행을 삭제
➡️ 1 또는 'columns'이면 누락된 값이 포함된 열을 삭제
➡️ 기본값은 0
📍 how : any는 null 값이 있는 경우 행 또는 열을 삭제
all은 모든 값이 누락된 경우 행 또는 열을 삭제
기본값은 any
📍 inplace : 데이터프레임에 나온 값을 저장할 것인지를 설정하는 변수로 기본적으로 값은 False
# 결측 데이터가 있는 행 삭제 후 확인
df2 = df.dropna() # 옵션을 지정하지 않아서 행기준, NaN가 하나라도 있는 경우에 삭제.
df2.isnull().sum()
'''
temp 0
max_wind 0
mean_wind 0
dtype: int64
'''
# 원본 데이터는 변경 x
df.isnull().sum()
'''
temp 0
max_wind 4
mean_wind 6
dtype: int64
'''
3) 결측 데이터 대체
✏️ fillna() : 결측 데이터를 특정 값으로 채움. inplace를 True로 설정해 원본 데이터를 수정
# 결측 데이터 대체하기 : 평균값으로 대체
df['max_wind'].fillna(df['max_wind'].mean(), inplace=True)
df['mean_wind'].fillna(df['mean_wind'].mean(), inplace=True)
# 결측 데이터 대체 후 확인
df.isna().sum()
'''
temp 0
max_wind 0
mean_wind 0
dtype: int64
'''
[ 내용 참고 : IT 학원 강의 ]
'Programming Language > Python' 카테고리의 다른 글
[Python] Matplotlib 라이브러리와 시각화 옵션 [제목, 범례, 색상, 축 이름, 선 모양, 범위 지정], 내장 시각화 옵션 (0) | 2024.03.13 |
---|---|
[Python] Pandas | 컬럼 삭제 및 생성, 컬럼 이름 변경, 데이터 형변환, 데이터 병합, 데이터 그룹핑 (0) | 2024.03.13 |
[Python] Pandas | 데이터 선택 - 열, 행, df.loc, df.iloc, 불인덱싱 (2) | 2024.03.12 |
[Python] Pandas | 데이터 파일 저장 to_csv(), 데이터 확인 메소드 (0) | 2024.03.12 |
[Python] Pandas | 통계 메서드, 판다스 데이터 읽기 read_csv() (0) | 2024.03.12 |