본문 바로가기
판다스/판다스 팁

[pandas] NaN이 포함된 열에서 정수를 유지하는 방법

by 김판다t 2024. 2. 27.

판다스 NaN이 포함된 열에서 정수를 유지하는 방법

 

데이터 분석 과정에서, NaN 값을 포함한 열은 dtype이 실수(float)로 변환됩니다. 그 결과, 정수로 입력된 값이 실수 형태로 변환되어 표현됩니다.

 

예제:

import pandas as pd
s = pd.Series([1, 2, 3, float('nan')])

 

s:

0   1.0    <-- 정수 1이 1.0으로 표현됨
1   2.0
2   3.0
3   NaN
dtype: float64 <- dtype이 실수이기 때문

 

 

NaN 값을 포함하는 열은 자동으로 실수형으로 변환되기 때문에, 정수를 유지할 수 없습니다. 일반적으로 NaN은 결측값을 의미하기에 반드시 NaN을 사용할 필요는 없습니다. NaN 대신 다른 null 값을 사용하면 정수를 유지할 수 있습니다. 판다스에서 제공하는 Int64 자료형을 사용하면 가능합니다.

 

s.astype('Int64')

 

out:

0       1
1       2
2       3
3    <NA>
dtype: Int64

 

Int64 자료형으로 변환할 경우, NaN 값은 <NA>로 표시되고, 정수는 유지됩니다. <NA>는 판다스의 pd.NA를 뜻하며 정수형에서 사용하는 결측값을 나타냅니다. <NA>는 NaN과는 약간 다르지만 null 값을 나타내는 점에서는 동일하여 유사하게 사용할 수 있습니다.

 

 

여기서 중요한 점은, 대소문자를 정확히 구분하여 Int64로 변환해야 한다는 것입니다. 만약 소문자 'int64'로 입력할 경우, NaN을 정수로 다음 에러가 발생합니다.

s.astype('int64')
IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer

 

 


교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지