Python Pandas Dataframe에서 NaN 값 바꾸기
fillna() 함수 사용:
사용법:
df['column_name'].fillna(value)
column_name
: NaN 값을 바꿀 열 이름value
: NaN 값으로 채울 값
예시:
import pandas as pd # 데이터프레임 생성 data = {'Age': [25, 30, np.nan, 22], 'Height': [170, 180, 175, 168]} df = pd.DataFrame(data) # 'Age' 열의 NaN 값을 0으로 채우기 df['Age'].fillna(0, inplace=True) print(df)
결과:
Age Height 0 25 170 1 30 180 2 0 175 3 22 168
특정 조건에 따라 NaN 값 채우기:
df['column_name'].fillna(value, condition)
condition
: NaN 값을 채울 조건 (boolean expression)
replace() 함수 사용:
df['column_name'].replace(to_replace=value, method='fillna')
to_replace
: 바꿀 값method='fillna'
: NaN 값만 바꿈 (기본값)
참고:
- 위에 소개된 방법 외에도 다양한 NaN 값 처리 방법이 있습니다.
- 데이터의 특성에 따라 적절한 방법을 선택하는 것이 중요합니다.
예제 코드: 특정 열의 결측값을 평균값으로 채우기
import pandas as pd
# 데이터프레임 생성
data = {'Age': [25, 30, np.nan, 22], 'Height': [170, 180, 175, 168]}
df = pd.DataFrame(data)
# 'Age' 열의 결측값을 평균값으로 채우기
avg_age = df['Age'].mean()
df['Age'].fillna(avg_age, inplace=True)
print(df)
Age Height
0 25.0 170
1 30.0 180
2 27.5 175
3 22.0 168
설명:
import pandas as pd
: Pandas 라이브러리 불러오기data = {'Age': [25, 30, np.nan, 22], 'Height': [170, 180, 175, 168]}
: 데이터 딕셔너리 생성df = pd.DataFrame(data)
: 딕셔너리를 기반으로 데이터프레임 생성avg_age = df['Age'].mean()
: 'Age' 열의 평균값 계산df['Age'].fillna(avg_age, inplace=True)
: 'Age' 열의 결측값을avg_age
로 채우고, 변경 내용을 데이터프레임에 반영
추가 예제:
- 특정 조건에 따라 결측값을 채우는 예시:
import pandas as pd
# 데이터프레임 생성
data = {'Age': [25, 30, np.nan, 22], 'Height': [170, 180, 175, 168]}
df = pd.DataFrame(data)
# 'Age' 열에서 30세 이상인 행의 결측값을 평균값으로 채우기
df['Age'].fillna(df['Age'].mean(), condition=df['Age'] >= 30, inplace=True)
print(df)
- 특정 값을 결측값으로 바꾸는 예시:
import pandas as pd
# 데이터프레임 생성
data = {'Age': [25, 30, -99, 22], 'Height': [170, 180, 175, 168]}
df = pd.DataFrame(data)
# 'Age' 열에서 -99 값을 NaN으로 바꾸기
df['Age'].replace(-99, np.nan, inplace=True)
print(df)
Pandas Dataframe에서 NaN 값을 대체하는 다른 방법
interpolate() 함수:
df['column_name'].interpolate(method='linear')
method
: 보간 방법 (선형 보간 기본값)
bfill() 및 ffill() 함수:
df['column_name'].bfill() df['column_name'].ffill()
idxmin() 함수:
주의:
- 위에 소개된 방법들은 각각 장단점이 있습니다.
- 데이터의 특성과 분석 목적에 따라 적절한 방법을 선택해야 합니다.
- 결측값 처리 전에 데이터의 분포를 확인하고, 어떤 값으로 채우는 것이 분석 결과에 큰 영향을 미치지 않는지 고려해야 합니다.
결론
Pandas는 다양한 NaN 값 처리 기능을 제공합니다. 적절한 방법을 선택하고, 상황에 맞게 조합하여 사용하면 데이터 분석의 질을 높일 수 있습니다.
python pandas dataframe