판다스 where: 널 값 관리를 위한 판다스의 파워 활용
Published on
데이터 작업은 우리가 하는 일의 핵심입니다. 그러나 raw data는 종종 불완전하고 널 값을 가지며 처리해야 합니다. 적절하게 처리하지 않으면 누락값은 데이터 분석 또는 기계 학습 작업 수행 시 문제를 일으킬 수 있습니다. 운이 좋게도 Python의 판다스 라이브러리를 사용하여 빠르고 효과적으로 데이터에서 널 값을 관리할 수 있습니다.
이 글에서는 판다스의 where() 함수와 널 값을 처리하는 다양한 기술을 살펴보겠습니다. 판다스 DataFrame에서 누락된 데이터를 식별하고 처리하는 방법, 널 값을 처리하는 전략, 누락된 값을 관리하는 데 필수적인 최상의 방법 등에 대해 다룰 예정입니다.
파이썬에서 빠르게 데이터 시각화를 만들고 싶나요?
PyGWalker는 주피터 노트북 기반 환경에서 데이터 분석 및 시각화 작업을 빠르게 수행할 수 있는 오픈 소스 파이썬 프로젝트입니다.
PyGWalker (opens in a new tab)는 Pandas DataFrame (또는 Polars DataFrame)를 시각적 UI로 변환하여 변수를 드래그 앤 드롭하여 쉽게 그래프를 생성할 수 있습니다. 다음 코드를 사용하세요:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
PyGWalker를 지금 바로 온라인 노트북에서 실행해보세요:
그리고, 반드시 GitHub에서 ⭐️를 눌러주세요!
판다스 DataFrame에서 누락된 데이터 식별 및 처리
데이터 작업을 수행할 때 가장 흔한 작업 중 하나는 누락된 데이터를 확인하는 것입니다. Pandas는 isnull() 및 notnull()을 포함하여 널 값을 식별하는 여러 가지 방법을 제공합니다. 이러한 함수를 사용하여 데이터에서 누락된 값이 있는지 빠르게 찾아볼 수 있습니다.
예를 들어, 여러 열이 포함된 DataFrame에는 누락된 값을 포함하는 열이 있을 수 있습니다.
import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, np.nan, 30],
'gender': ['F', 'M', 'M'],
'income': [50000, 60000, np.nan]}
df = pd.DataFrame(data)
우리의 DataFrame에서 누락된 값들을 확인하기 위해서는 isnull() 함수를 DataFrame 전체에 적용할 수 있습니다.
print(df.isnull())
이는 원래 DataFrame과 동일한 모양을 가진 DataFrame을 반환하며, 여기서 True는 null 값을 나타내고, False는 non-null 값을 나타냅니다.
우리 DataFrame의 각 열에서 누락된 값을 세는 것은, isnull() 함수를 적용한 후에 sum() 메소드를 사용할 수 있습니다.
print(df.isnull().sum())
이는 인덱스가 열 이름이고 값이 각 열의 누락된 값의 수인 Series 객체를 반환합니다.
우리는 또한 null 값을 포함하는 행 또는 열을 제거하기 위해 dropna() 메서드를 사용할 수 있습니다. 이 메서드는 적어도 하나의 null 값을 포함하는 모든 행 또는 열을 제거합니다.
df.dropna()
대안적으로, fillna() 함수를 사용하여 null 값을 특정 값으로 대체할 수 있습니다.
df.fillna(0)
이것들은 Pandas에서 null 값 식별 및 처리를 위해 사용 가능한 메서드의 몇 가지 예시입니다. 포괄적인 목록은 Pandas 문서를 참조하세요.
Pandas에서 null 값 다루기
null 값은 데이터 분석 또는 기계 학습 작업을 수행할 때 어려움을 초래할 수 있습니다. 그러나 우리는 null 값을 효과적으로 처리하기 위해 많은 전략을 사용할 수 있습니다. 여기 그 중 몇 가지입니다.
보간
누락된 데이터를 처리하기 위한 공통 기술 중 하나는 보간입니다. 보간은 인근 행에서 관찰된 값을 기반으로 누락된 값을 추정하는 통계 기술입니다. Pandas에서, interpolate() 메서드를 사용하여 DataFrame에서 보간을 수행할 수 있습니다.
df.interpolate()
누락된 값 채우기
null 값 처리를 위한 다른 전략은 누락된 값을 일정한 상수나 나머지 데이터에서 계산된 값을 채우는 것입니다. 특정 값을 사용하여 null 값을 채우기 위해 fillna() 메서드를 사용할 수 있습니다.
df.fillna(0)
대안적으로, 나머지 데이터의 평균, 최빈값 또는 중앙값으로 null 값을 채울 수 있습니다.
df.fillna(df.mean())
누락된 값 제거하기
누락된 값을 처리하는 공통 전략 중 하나는 누락된 값을 포함하는 모든 행을 제거하는 것입니다. 우리는 dropna() 메서드를 사용하여 하나 이상의 null 값을 포함하는 모든 행을 제거할 수 있습니다.
df.dropna()
우리는 널 값을 포함하는 열도 삭제할 수 있습니다.
df.dropna(axis=1)
대치
대치(Imputation)는 관측 데이터를 기반으로 결측값을 추정하는 기술입니다. Pandas에서는 scikit-learn 패키지를 사용하여 대치를 수행할 수 있습니다.
from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
df[['age', 'income']] = imp.fit_transform(df[['age', 'income']])
이것들은 Pandas에서 널 값을 처리하는 많은 전략 중 일부 예시입니다. 적합한 전략은 특정 문제와 결측 데이터의 성격에 따라 다릅니다.
Pandas에서 결측값 관리에 대한 Best Practices
결측 데이터를 처리하는 것은 도전이 될 수 있지만, 몇 가지 best practices가 도움이 될 수 있습니다. Pandas에서 널 값을 관리하는 몇 가지 팁은 다음과 같습니다.
- 언제나 분석을 수행하기 전에 결측 데이터를 확인하세요.
- 기술통계를 사용하여 데이터의 분포를 이해하고 이상치를 식별하세요.
- 보간(interpolation), 대치, 또는 결측값 삭제와 같은 다른 결측 데이터 처리 전략을 고려하세요.
- 서로 다른 전략이 가지는 잠재적인 결과와 분석에 미칠 수 있는 영향에 대해 인식하세요.
- 데이터 시각화 도구를 사용하여 데이터의 특성과 분포를 파악하세요.
- 분석에서 결측값이 어떻게 처리되었는지와 그들이 어떻게 다뤄졌는지 문서화하세요.
이러한 best practices를 따르면 데이터의 결측값을 더 잘 관리하고 효과적인 데이터 분석 또는 기계 학습 작업을 수행할 수 있습니다.
결론
데이터를 다룰 때 널 값을 처리하는 것은 도전이 될 수 있지만, Pandas를 사용하면 결측 데이터를 식별하고 처리하기 위한 강력한 도구 세트에 액세스할 수 있습니다. 이 글에서는 Pandas where() 함수와 널 값을 처리하기 위한 다양한 기술과 전략을 살펴보았습니다. 이러한 기술을 적용하고 best practices를 따르면 데이터의 결측값을 더 잘 관리하고 효과적인 데이터 분석 및 기계 학습 작업을 수행할 수 있습니다.