Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas - fillna() 메서드로 인덱스 객체의 NaN 값을 지정한 값으로 채우는 방법

Pandas에서 Index 객체에 포함된 NaN(결측값)을 지정한 값으로 채우려면 index.fillna() 메서드를 사용하면 됩니다. 이 메서드는 결측값이 있는 위치를 찾아 사용자가 지정한 값으로 일괄 대체해 주므로, 데이터 정제 과정에서 매우 유용하게 활용됩니다.

필수 라이브러리 가져오기

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd
import numpy as np

NaN 값이 포함된 인덱스 생성

NaN 값도 함께 포함된 Pandas 인덱스를 생성합니다.

index = pd.Index([50, 10, 70, np.nan, 90, 50, np.nan, np.nan, 30])

인덱스 출력하기

생성된 Pandas 인덱스를 화면에 표시합니다.

print("Pandas Index...\n", index)

fillna()로 NaN 값 채우기

이제 fillna() 메서드를 사용해 NaN 값을 특정 값(여기서는 문자열 'Amit')으로 대체합니다.

print("\nNaN 값 채운 후의 인덱스 객체...\n", index.fillna('Amit'))

전체 예제 코드

지금까지 설명한 내용을 모두 포함한 전체 코드는 다음과 같습니다.

import pandas as pd
import numpy as np

# NaN 값이 포함된 Pandas 인덱스 생성
index = pd.Index([50, 10, 70, np.nan, 90, 50, np.nan, np.nan, 30])

# Pandas 인덱스 출력
print("Pandas Index...\n", index)

# 인덱스에 포함된 요소 개수 반환
print("\n인덱스의 요소 개수...\n", index.size)

# 데이터의 dtype 반환
print("\ndtype 객체...\n", index.dtype)

# NaN을 특정 값으로 채우기
print("\nNaN 값 채운 후의 인덱스 객체...\n", index.fillna('Amit'))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Pandas Index...
Float64Index([50.0, 10.0, 70.0, nan, 90.0, 50.0, nan, nan, 30.0], dtype='float64')

인덱스의 요소 개수...
9

dtype 객체...
float64

NaN 값 채운 후의 인덱스 객체...
Index([50.0, 10.0, 70.0, 'Amit', 90.0, 50.0, 'Amit', 'Amit', 30.0], dtype='object')

결과 분석

출력 결과를 살펴보면 몇 가지 중요한 특징을 확인할 수 있습니다.

첫째, 원본 인덱스는 숫자형(float64) 데이터였지만, NaN 자리에 문자열 'Amit'이 들어가면서 전체 인덱스의 dtype이 'object'로 변경되었습니다. 이는 하나의 인덱스 안에 숫자와 문자열이 혼재할 수 없어 Pandas가 자동으로 타입을 변환하기 때문입니다.

둘째, size 속성은 NaN을 포함한 전체 요소 개수인 9를 그대로 반환합니다. 즉, fillna()는 요소를 삭제하는 것이 아니라 기존 위치에 새로운 값을 대체합니다.

셋째, fillna() 메서드는 원본 인덱스를 변경하지 않고 새로운 인덱스 객체를 반환합니다. 따라서 원본 데이터를 보존해야 하는 경우에도 안전하게 사용할 수 있습니다.