웹사이트 검색

Python pandas dropna()를 사용하여 DataFrame에서 NA 값을 삭제하는 방법


소개

이 튜토리얼에서는 panda의 DataFrame dropna() 함수를 사용하는 방법을 배웁니다.

NA 값은 "사용할 수 없음\입니다. 이는 Null, None, pandas.NaT 또는 numpy.nan. dropna()를 사용하면 이러한 값이 있는 행과 열이 삭제됩니다. 이는 유효한 데이터만 제공하는 데 유용할 수 있습니다.

기본적으로 이 함수는 새 DataFrame을 반환하고 소스 DataFrame은 변경되지 않은 상태로 유지됩니다.

이 튜토리얼은 Python 3.10.9, pandas 1.5.2 및 NumPy 1.24.1에서 검증되었습니다.

통사론

dropna()는 다음 매개변수를 사용합니다.

dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False)

  • : {0(또는 색인), 1(또는 열)}, 기본값 0
  • 0인 경우 누락된 값이 있는 행을 삭제합니다.
  • 1인 경우 누락된 값이 있는 열을 삭제합니다.
  • 방법: {any, all}, 기본값 any
  • any인 경우 값 중 하나라도 NA이면 행이나 열을 삭제합니다.
  • all인 경우 모든 값이 NA이면 행이나 열을 삭제합니다.
  • thresh: (선택 사항) 드롭 작업의 임계값을 지정하는 int 값입니다.
  • 하위 집합: (선택 사항) 행 또는 열을 지정하기 위한 열 레이블 또는 레이블 시퀀스.
  • inplace: (선택 사항) bool 값.
  • True이면 소스 DataFrame이 변경되고 None이 반환됩니다.

샘플 데이터 프레임 구성

유효한 값과 잘못된 값을 포함하는 샘플 DataFrame을 생성합니다.

import pandas as pd
import numpy as np

d1 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish'],
'ID': [1, 2, 3, 4],
'Population': [100, 200, np.nan, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT]
}

df1 = pd.DataFrame(d1)
print(df1)

이 코드는 DataFrame을 인쇄합니다.

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT

그런 다음 NA 값이 있는 추가 행과 열이 있는 두 번째 DataFrame을 추가합니다.

d2 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish', pd.NaT],
'ID': [1, 2, 3, 4, pd.NaT],
'Population': [100, 200, np.nan, pd.NaT, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT, pd.NaT],
'Endangered': [pd.NaT, pd.NaT, pd.NaT, pd.NaT, pd.NaT]
}

df2 = pd.DataFrame(d2)
print(df2)

그러면 새 DataFrame이 출력됩니다.

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT 4 NaT NaT NaT NaT NaT

다음 예제에서는 앞의 DataFrame을 사용합니다.

누락된 값이 있는 모든 행 삭제

None, NaN 또는 NaT 값이 있는 행을 제거하려면 dropna()를 사용하세요.

dfresult = df1.dropna()
print(dfresult)

그러면 다음이 출력됩니다.

Output
Name ID Population Regions 0 Shark 1 100 1

NA 값이 포함되지 않은 단일 행이 있는 새 DataFrame.

누락된 값이 있는 모든 열 삭제

axis=1과 함께 dropna()를 사용하여 None, NaN 또는 NaT가 있는 열을 제거합니다. 값:

dfresult = df1.dropna(axis=1)
print(dfresult)

None, NaN 또는 NaT 값이 있는 열은 삭제됩니다.

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4

NA가 아닌 값을 포함하는 단일 열이 있는 새 DataFrame.

모든 값이 Null인 경우 행 또는 열 삭제

두 번째 DataFrame 및 방법 사용:

dfresult = df2.dropna(how='all')
print(dfresult)

NA와 같은 all 값이 있는 행은 삭제됩니다.

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT

다섯 번째 행이 삭제되었습니다.

다음으로 방법을 사용하고 을 지정합니다.

dfresult = df2.dropna(how='all', axis=1)
print(dfresult)

NA와 같은 all 값이 있는 열은 삭제됩니다.

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT 4 NaT NaT NaT NaT

다섯 번째 열이 삭제되었습니다.

임계값이 thresh와 교차하는 경우 행 또는 열 삭제

thresh와 함께 두 번째 DataFrame을 사용하여 최소 3 NA가 아닌 값의 임계값을 충족하지 않는 행을 삭제합니다.

dfresult = df2.dropna(thresh=3)
print(dfresult)

행에 3 이상이 없는 경우 NA가 아닌 행은 삭제됩니다.

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

세 번째, 네 번째 및 다섯 번째 행이 삭제되었습니다.

특정 하위 집합에 대한 행 또는 열 삭제

subset이 있는 두 번째 DataFrame을 사용하여 Population 열에서 NA 값이 있는 행을 삭제합니다.

dfresult = df2.dropna(subset=['Population'])
print(dfresult)

NA 값이 있는 인구가 있는 행은 삭제됩니다.

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

세 번째, 네 번째 및 다섯 번째 행이 삭제되었습니다.

DataFrame에서 열을 삭제할 때 subset에서 인덱스 값을 지정할 수도 있습니다.

dfresult = df2.dropna(subset=[1, 2], axis=1)
print(dfresult)

12의 하위 집합에 NA 값을 포함하는 열:

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4 4 NaT NaT

세 번째, 네 번째 및 다섯 번째 열이 삭제되었습니다.

inplace로 행 또는 열을 삭제한 후 소스 DataFrame 변경

기본적으로 dropna()는 소스 DataFrame을 수정하지 않습니다. 그러나 경우에 따라 inplace를 사용하여 대용량 소스 DataFrame으로 작업할 때 메모리를 절약할 수 있습니다.

df1.dropna(inplace=True)
print(df1)

이 코드는 dfresult 변수를 사용하지 않습니다.

그러면 다음이 출력됩니다.

Output
Name ID Population Regions 0 Shark 1 100 1

원본 DataFrame이 수정되었습니다.

결론

이 문서에서는 dropna() 함수를 사용하여 NA 값이 있는 행과 열을 제거했습니다.

더 많은 Python 및 pandas 자습서인 pandas Drop Duplicate Rows를 통해 학습을 계속하세요.

참조

  • pandas DataFrame dropna() API 문서