본문 바로가기
Python/Pandas

pandas ValueError: cannot mask array with array containing NA / NaN values 오류 해결하기

by PySun 2025. 5. 19.
반응형

소개

파이썬의 Pandas 라이브러리를 사용할 때, 'ValueError: cannot mask array with array containing NA / NaN values' 오류가 발생하는 경우가 있습니다. 이 오류는 주로 NaN(결측값)이 포함된 배열로 마스킹(masking) 작업을 시도할 때 발생합니다. 이 블로그 글에서는 이러한 에러의 발생 원인과 그 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: cannot mask array with array containing NA / NaN values' 에러가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

import pandas as pd
import numpy as np

# 데이터프레임 생성
data = {'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)

# 조건에 맞는 행 마스킹
mask = df['A'] > 2
filtered_df = df[mask]
print(filtered_df)

에러 해결 방법

1. 마스크를 생성하기 전에 NaN 값 제거

마스크를 적용하기 전에 NaN 값을 제거하거나 NaN을 특정 값으로 대체하여 문제를 해결할 수 있습니다. 예를 들어, 'fillna()' 메서드를 사용할 수 있습니다.

import pandas as pd
import numpy as np

# 데이터프레임 생성
data = {'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)

# NaN 값을 0으로 대체
df['A'] = df['A'].fillna(0)

# 조건에 맞는 행 마스킹
mask = df['A'] > 2
filtered_df = df[mask]
print(filtered_df)

2. NaN 값을 제외한 마스크 생성

또한, NaN이 없는 부분만을 기준으로 마스크를 만들 수 있습니다. 'dropna()' 메서드를 사용하면 NaN 값을 포함하지 않는 데이터프레임을 만들 수 있습니다.

import pandas as pd
import numpy as np

# 데이터프레임 생성
data = {'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)

# NaN 값이 없는 행만 선택
df_dropped = df.dropna(subset=['A'])

# 조건에 맞는 행 마스킹
mask = df_dropped['A'] > 2
filtered_df = df_dropped[mask]
print(filtered_df)

마무리

이번 블로그 글에서는 Pandas에서 발생하는 'ValueError: cannot mask array with array containing NA / NaN values' 에러의 원인과 해결 방법에 대해 살펴보았습니다. NaN 값을 처리하는 다양한 방법을 알아보고, 어떻게 데이터프레임을 안전하게 다룰 수 있는지 배웠습니다. 데이터를 다룰 때는 항상 NaN 값에 주의하고, 에러를 미리 예방하기 위한 방법들을 사용하는 것이 중요합니다.

반응형