본문 바로가기
판다스/기초 파이썬

[python] 번외. Null

by 김판다t 2024. 11. 11.

데이터 분석 입문을 위한 기초적인 파이썬 내용을 다룹니다. 데이터 분석은 주로 파이썬의 라이브러리인 판다스를 활용해 이루어지며, 이를 위해 기본적인 파이썬 개념에 대한 이해가 필요합니다. 하지만 이것은 파이썬을 완벽하게 숙달해야 한다는 의미는 아닙니다. 그렇기에 판다스와 데이터 분석에 입문할 수 있도록 핵심 파이썬 개념을 간략하게 제공할 것입니다.

 

 

번외 Null

Null은 값이 없거나 정의되지 않은 상태를 나타냅니다. 파이썬에서 Null은 주로 None과 NaN으로 표현되며, 둘 다 비어 있거나 미정의 상태를 의미하지만, 사용 목적과 상황이 다릅니다. None과 NaN의 차이점과 사용 방식을 살펴보겠습니다. 

 

None

 

None은 파이썬에서 값이 없음을 나타내는 상수로, 다른 언어의 null 또는 nil과 유사합니다. None은 고유한 객체로, 모든 None 값은 동일한 메모리 주소를 가지므로 비교할 때는 == 대신 is를 사용하는 것이 권장됩니다.

 

주요 사용 사례:

  • 값이 비어 있거나 설정되지 않았음을 표현할 때
  • 함수의 반환 값이 없음을 명시할 때
# x에 None 할당
x = None

# x가 None인지 확인
if x is None:  
    print("x는 None입니다.")  # 출력 결과: x는 None입니다.
 

None의 자료형은 NoneType이며, type(None) 코드로 이를 확인할 수 있습니다. 

# None의 자료형을 출력
print(type(None))  # 출력 결과: <class 'NoneType'>
 
NaN

 

NaN(Not a Number) 또는 nan은 수학 연산에서 정의되지 않은 결과를 나타내며, float('nan')으로 생성할 수 있습니다. 주로 데이터 분석에서 결측값이나 비정상적인 수치를 표현할 때 사용됩니다. 

# y에 NaN을 할당
y = float('nan')

# y의 값을 출력
print(y)  # 출력 결과: nan
 

NaN의 자료형은 실수(float)이며, 수치형 데이터로 취급됩니다.

# NaN의 자료형을 출력
print(type(float('nan')))  # 출력 결과: <class 'float'>

 

None과 NaN의 차이점

 

  • None: 값이 전혀 없음을 나타내는 고유한 객체로, 주로 변수가 초기화되지 않았거나 함수의 반환 값이 없을 때 사용됩니다.
  • NaN: 수학적 계산에서 정의되지 않은 결과를 나타내는 실수(float) 타입의 수치형 데이터로, 데이터 분석에서 결측값이나 비정상적인 데이터를 표현하는 데 활용됩니다.

 

NaN의 독특한 비교 특성

 

NaN의 특징 중 하나는 모든 비교 연산에서 False를 반환한다는 점입니다. 심지어 NaN 자체와 비교해도 같지 않으므로, float('nan') == float('nan')은 False를 반환합니다. 이는 NaN이 비교할 수 없는 정의되지 않은 상태를 나타냄을 의미합니다.

# y에 NaN을 할당
y = float('nan')

# y가 자신과 같은지 확인
print(y == y)  # 출력 결과: False

 

이러한 특성 때문에 NaN은 일반적인 비교 연산으로는 탐지하기 어려워, 주로 특정 모듈을 사용하여 NaN 여부를 확인합니다.(예: 판다스의 isna 함수) 모듈은 다른 사람이 미리 작성해 둔 코드의 모음으로, 이후 학습할 내용입니다.

 

입문자들이 None과 혼동하기 쉬운 객체

 

입문자들이 자주 오해하는 부분 중 하나는 빈 문자열(''), 빈 리스트([]),  빈 딕셔너리({}) 등과 None을 동일하게 여기는 것입니다. 하지만 빈 문자열이나 빈 컬렉션은 None과는 엄연히 다릅니다.

  • 빈 문자열과 빈 컬렉션: 메모리상에 존재하는 길이가 0인 데이터로, 값이 비어 있지만 실제로 존재하는 객체입니다. 예를 들어, 빈 리스트는 데이터를 추가할 수 있는 저장 공간을 제공하며, 빈 문자열 또한 문자 데이터를 저장할 수 있는 준비된 객체입니다. 따라서 빈 컬렉션과 빈 문자열은 값이 없더라도 존재하는 객체입니다.

그에 반해 None은 어떤 값도 가질 수 없으며, 메모리상에서 오직 하나의 고유한 객체로 관리됩니다.

 

판다스와 Null

 

※ 판다스는 기초 파이썬과 직접 관련이 없으므로, 추후 판다스를 학습한 후에 확인하셔도 됩니다.

데이터 분석에서는 주로 NaN을 Null 값으로 사용해 값이 누락된 결측값을 표시합니다. 앞서 설명했듯 NaN은 비교 연산으로 탐지하기 어려워, isna 함수와 같은 전용 함수를 사용하여 결측값을 탐지합니다.


 

유튜브에서 판다스 강의 중입니다.

https://www.youtube.com/@KimPandas