Pandas는 NaN을 사용하여 행을 삭제합니다

Suraj Joshi 2023년1월30일
  1. Pandas는DataFrame.notna()메서드를 사용하여 NaN으로 행을 삭제합니다
  2. Pandas는DataFrame.dropna()메서드를 사용하여 모든 열에 대해NaN 값이있는 행만 삭제합니다
  3. Pandas는DataFrame.dropna()메서드를 사용하여 특정 열에 대해NaN 값이있는 행만 삭제합니다
  4. Pandas는DataFrame.dropna()메서드를 사용하여 모든 열에 대해NaN 값이있는 행을 삭제합니다
Pandas는 NaN을 사용하여 행을 삭제합니다

이 튜토리얼에서는DataFrame.notna()DataFrame.dropna()메서드를 사용하여NaN 값이있는 모든 행을 삭제하는 방법을 설명합니다.

아래 예제 코드에서 DataFrame을 사용합니다.

import pandas as pd

roll_no = [501, 502, 503, 504, 505]

data = pd.DataFrame(
    {
        "Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
        "Age": [19, None, 18, 21, None],
        "Income($)": [4000, 5000, None, 3500, None],
        "Expense($)": [3000, 2000, 2500, 25000, None],
    }
)

print(data)

출력:

      Name   Age  Income($)  Expense($)
0    Alice  19.0     4000.0      3000.0
1   Steven   NaN     5000.0      2000.0
2  Neesham  18.0        NaN      2500.0
3    Chris  21.0     3500.0     25000.0
4    Alice   NaN        NaN         NaN

Pandas는DataFrame.notna()메서드를 사용하여 NaN으로 행을 삭제합니다

DataFrame.notna()메서드는 호출자 DataFrame과 동일한 수의 행과 열을 가진 부울 객체를 반환합니다. 요소가 NaN이 아니면 boolean 객체의 True값에 매핑되고, 요소가 NaN이면 False값에 매핑됩니다.

import pandas as pd

roll_no = [501, 502, 503, 504, 505]

data = pd.DataFrame(
    {
        "Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
        "Age": [19, None, 18, 21, None],
        "Income($)": [4000, 5000, None, 3500, None],
        "Expense($)": [3000, 2000, 2500, 25000, None],
    }
)
print("Initial DataFrame:")
print(data)

print("")

data = data[data["Income($)"].notna()]
print("DataFrame after removing rows with NaN value in Income Field:")
print(data)

출력:

Initial DataFrame:
      Name   Age  Income($)  Expense($)
0    Alice  19.0     4000.0      3000.0
1   Steven   NaN     5000.0      2000.0
2  Neesham  18.0        NaN      2500.0
3    Chris  21.0     3500.0     25000.0
4    Alice   NaN        NaN         NaN

DataFrame after removing rows with NaN value in Income Field:
     Name   Age  Income($)  Expense($)
0   Alice  19.0     4000.0      3000.0
1  Steven   NaN     5000.0      2000.0
3   Chris  21.0     3500.0     25000.0

여기서는Income($)열에notna()메소드를 적용하여 열의 값에 따라True 또는False 값이있는 계열 객체를 반환합니다. boolean 객체를 인덱스로 원본 DataFrame에 전달하면Income($)열에 대해NaN 값이없는 행만 가져옵니다.

Pandas는DataFrame.dropna()메서드를 사용하여 모든 열에 대해NaN 값이있는 행만 삭제합니다

import pandas as pd

roll_no = [501, 502, 503, 504, 505]

data = pd.DataFrame(
    {
        "Id": [621, 645, 210, 345, None],
        "Age": [19, None, 18, 21, None],
        "Income($)": [4000, 5000, None, 3500, None],
        "Expense($)": [3000, 2000, 2500, 25000, None],
    }
)
print("Initial DataFrame:")
print(data)

print("")

data = data.dropna(how="all")
print("DataFrame after removing rows with NaN value in All Columns:")
print(data)

출력:

Initial DataFrame:
      Id   Age  Income($)  Expense($)
0  621.0  19.0     4000.0      3000.0
1  645.0   NaN     5000.0      2000.0
2  210.0  18.0        NaN      2500.0
3  345.0  21.0     3500.0     25000.0
4    NaN   NaN        NaN         NaN

DataFrame after removing rows with NaN value in All Columns:
      Id   Age  Income($)  Expense($)
0  621.0  19.0     4000.0      3000.0
1  645.0   NaN     5000.0      2000.0
2  210.0  18.0        NaN      2500.0
3  345.0  21.0     3500.0     25000.0

DataFrame의 모든 필드에 대해NaN 값이있는 행만 제거합니다. dropna()메소드에서how='all'을 설정하여 행의 모든 열 값이NaN 인 경우에만 메소드가 행을 드롭하도록합니다.

Pandas는DataFrame.dropna()메서드를 사용하여 특정 열에 대해NaN 값이있는 행만 삭제합니다

import pandas as pd

roll_no = [501, 502, 503, 504, 505]

data = pd.DataFrame(
    {
        "Id": [621, 645, 210, 345, None],
        "Age": [19, None, 18, 21, None],
        "Income($)": [4000, 5000, None, 3500, None],
        "Expense($)": [3000, 2000, 2500, 25000, None],
    }
)
print("Initial DataFrame:")
print(data)

print("")

data = data.dropna(subset=["Id"])
print("DataFrame after removing rows with NaN value in Id Column:")
print(data)

출력:

Initial DataFrame:
      Id   Age  Income($)  Expense($)
0  621.0  19.0     4000.0      3000.0
1  645.0   NaN     5000.0      2000.0
2  210.0  18.0        NaN      2500.0
3  345.0  21.0     3500.0     25000.0
4    NaN   NaN        NaN         NaN

DataFrame after removing rows with NaN value in Id Column:
      Id   Age  Income($)  Expense($)
0  621.0  19.0     4000.0      3000.0
1  645.0   NaN     5000.0      2000.0
2  210.0  18.0        NaN      2500.0
3  345.0  21.0     3500.0     25000.0

Id열에 만 NaN값이있는 DataFrame의 모든 열을 삭제합니다.

Pandas는DataFrame.dropna()메서드를 사용하여 모든 열에 대해NaN 값이있는 행을 삭제합니다

import pandas as pd

roll_no = [501, 502, 503, 504, 505]

data = pd.DataFrame(
    {
        "Id": [621, 645, 210, 345, None],
        "Age": [19, None, 18, 21, None],
        "Income($)": [4000, 5000, None, 3500, None],
        "Expense($)": [3000, 2000, 2500, 25000, None],
    }
)
print("Initial DataFrame:")
print(data)

print("")

data = data.dropna()
print("DataFrame after removing rows with NaN value in any column:")
print(data)

출력:

Initial DataFrame:
      Id   Age  Income($)  Expense($)
0  621.0  19.0     4000.0      3000.0
1  645.0   NaN     5000.0      2000.0
2  210.0  18.0        NaN      2500.0
3  345.0  21.0     3500.0     25000.0
4    NaN   NaN        NaN         NaN

DataFrame after removing rows with NaN value in any column:
      Id   Age  Income($)  Expense($)
0  621.0  19.0     4000.0      3000.0
3  345.0  21.0     3500.0     25000.0

기본적으로dropna()메소드는 하나 이상의NaN 값이있는 모든 행을 제거합니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas DataFrame Row

관련 문장 - Pandas NaN