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을 인쇄합니다.
OutputName 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이 출력됩니다.
OutputName 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)
그러면 다음이 출력됩니다.
OutputName 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
값이 있는 열은 삭제됩니다.
OutputName 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
값이 있는 행은 삭제됩니다.
OutputName 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
값이 있는 열은 삭제됩니다.
OutputName 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
가 아닌 행은 삭제됩니다.
OutputName 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
값이 있는 인구
가 있는 행은 삭제됩니다.
OutputName 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)
행 1
및 2
의 하위 집합에 NA
값을 포함하는 열:
OutputName 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
변수를 사용하지 않습니다.
그러면 다음이 출력됩니다.
OutputName ID Population Regions
0 Shark 1 100 1
원본 DataFrame이 수정되었습니다.
결론
이 문서에서는 dropna()
함수를 사용하여 NA
값이 있는 행과 열을 제거했습니다.
더 많은 Python 및 pandas 자습서인 pandas Drop Duplicate Rows를 통해 학습을 계속하세요.
참조
- pandas DataFrame
dropna()
API 문서