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

Python으로 데이터프레임에서 결측치가 가장 적은 열 찾기

데이터프레임이 주어져 있고, 그중에서 결측치(NaN)의 개수가 가장 적은 열을 찾아야 하는 상황을 가정해 보겠습니다. 원하는 결과는 다음과 같습니다.

DataFrame is:
    Id     Salary     Age
0 1.0    20000.0   22.0
1 2.0    NaN       23.0
2 3.0    50000.0   NaN
3 NaN    40000.0   25.0
4 5.0    80000.0   NaN
5 6.0    NaN       25.0
6 7.0    350000.0  26.0
7 8.0    55000.0   27.0
8 9.0    60000.0   NaN
9 10.0   70000.0   24.0
lowest missing value column is: Id

이 문제를 해결하기 위해 아래 단계를 순서대로 따라가 보겠습니다.

풀이 방법

  • Id, Salary, Age 세 개의 열을 가진 데이터프레임을 정의합니다.

  • lambda 함수와 함께 df.apply()를 사용하여 각 열별로 null 값의 개수를 집계합니다.

df = df.apply(lambda x: x.isnull().sum(),axis=0)
  • 마지막으로 df.idxmin()을 사용하여 결측치 개수가 가장 적은 열의 이름을 출력합니다.

df.idxmin()

예제 코드

아래 코드를 살펴보면 동작 방식을 더 쉽게 이해할 수 있습니다.

import pandas as pd
import numpy as np
df = pd.DataFrame({'Id':[1,2,3,np.nan,5,6,7,8,9,10],
'Salary':[20000,np.nan,50000,40000,80000,np.nan,350000,55000,60000,70000],
        'Age': [22,23,np.nan,25,np.nan,25,26,27,np.nan,24]
        })
print("DataFrame is:\n",df)
df = df.apply(lambda x: x.isnull().sum(),axis=0)
print("lowest missing value column is:",df.idxmin())

실행 결과

DataFrame is:
    Id     Salary     Age
0 1.0    20000.0   22.0
1 2.0    NaN       23.0
2 3.0    50000.0   NaN
3 NaN    40000.0   25.0
4 5.0    80000.0   NaN
5 6.0    NaN       25.0
6 7.0    350000.0  26.0
7 8.0    55000.0   27.0
8 9.0    60000.0   NaN
9 10.0   70000.0   24.0
lowest missing value column is: Id

위 코드에서 df.apply(lambda x: x.isnull().sum(), axis=0)는 각 열을 기준으로 null 값을 하나씩 검사하여 그 합계를 계산합니다. axis=0은 열 방향으로 연산을 수행하도록 지정하는 옵션입니다. 이후 idxmin()은 값이 가장 작은(즉, 결측치가 가장 적은) 열의 인덱스, 즉 열 이름을 반환합니다. 이 예제에서는 Id 열에 결측치가 1개로 가장 적기 때문에 Id가 결과로 출력됩니다.