Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas - DataFrame에서 null(NaN) 행 삭제하는 방법

Pandas DataFrame에서 null 행 삭제하기

Pandas DataFrame에서 null(NaN) 값이 포함된 행을 삭제하려면 dropna() 메서드를 사용합니다. 이 메서드는 결측값이 하나라도 존재하는 행을 자동으로 제거해 주기 때문에 데이터 전처리 과정에서 매우 자주 활용됩니다.

다음과 같이 일부 NaN, 즉 null 값이 포함된 CSV 파일이 있다고 가정해 보겠습니다.

Python Pandas - DataFrame에서 null(NaN) 행 삭제하는 방법

read_csv() 함수를 사용하여 CSV 파일을 읽어 보겠습니다. 여기서는 파일이 바탕화면(Desktop)에 저장되어 있다고 가정합니다.

dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\CarRecords.csv")

dropna() 메서드를 호출하여 null 값이 포함된 행을 제거합니다.

dataFrame = dataFrame.dropna()

전체 예제 코드

다음은 위 과정을 모두 포함한 전체 코드입니다.

import pandas as pd

# CSV 파일 읽기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\CarRecords.csv")
print("DataFrame...\n",dataFrame)

# DataFrame의 행과 열 개수 확인
print("\nNumber of rows and column in our DataFrame = ",dataFrame.shape)

dataFrame = dataFrame.dropna()
print("\nDataFrame after removing null values...\n",dataFrame)
print("\n(Updated) Number of rows and column in our DataFrame = ",dataFrame.shape)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DataFrame...
           Car       Place   UnitsSold
0         Audi   Bangalore        80.0
1      Porsche      Mumbai       110.0
2   RollsRoyce        Pune         NaN
3          BMW       Delhi       200.0
4     Mercedes   Hyderabad        80.0
5  Lamborghini  Chandigarh         NaN
6         Audi      Mumbai         NaN
7     Mercedes        Pune       120.0
8  Lamborghini       Delhi       100.0

Number of rows and column in our DataFrame = (9, 3)

DataFrame after removing null values...
           Car      Place   UnitsSold
0         Audi  Bangalore        80.0
1      Porsche     Mumbai       110.0
3          BMW      Delhi       200.0
4     Mercedes  Hyderabad        80.0
7     Mercedes       Pune       120.0
8  Lamborghini      Delhi       100.0

(Updated) Number of rows and column in our DataFrame = (6, 3)

결과 분석

원래 DataFrame은 9개의 행과 3개의 열로 구성되어 있었지만, NaN 값을 포함하던 행(인덱스 2, 5, 6)이 삭제되면서 6개의 행으로 줄어든 것을 확인할 수 있습니다. 이처럼 dropna()는 결측값이 있는 행 전체를 한 번에 제거합니다.

dropna()의 주요 옵션

기본 동작 외에도 dropna()는 다양한 매개변수를 제공하여 삭제 기준을 세밀하게 조절할 수 있습니다.

  • axis : 기본값은 0으로 행을 삭제합니다. axis=1로 설정하면 NaN이 포함된 열을 삭제합니다.
  • how : 기본값은 'any'로, NaN이 하나라도 있으면 삭제합니다. how='all'로 설정하면 모든 값이 NaN인 행만 삭제합니다.
  • subset : 특정 열만 기준으로 결측값을 검사하려면 subset=['열이름'] 형태로 지정합니다.
  • inplace : inplace=True로 설정하면 원본 DataFrame을 직접 수정하여 새로운 변수에 할당할 필요가 없습니다.

예를 들어 'UnitsSold' 열을 기준으로만 결측값이 있는 행을 삭제하려면 다음과 같이 작성할 수 있습니다.

dataFrame = dataFrame.dropna(subset=['UnitsSold'])

이처럼 상황에 맞는 옵션을 활용하면 데이터 손실을 최소화하면서 결측값을 효율적으로 처리할 수 있습니다.