Pandas 데이터 프레임에서 각 행의 결 측값 수를 계산하는 방법은 무엇입니까?


17

Pandas 데이터 프레임의 각 행에서 누락 된 값 수를 얻는 방법은 무엇입니까? 데이터 프레임을 각 행에 동일한 수의 누락 값이있는 다른 데이터 프레임으로 분할하고 싶습니다.

어떠한 제안?

답변:


19

다음과 같이 행에 카운트를 적용 할 수 있습니다.

test_df.apply(lambda x: x.count(), axis=1)

test_df :

    A   B   C
0:  1   1   3
1:  2   nan nan
2:  nan nan nan

산출:

0:  3
1:  1
2:  0

결과를 다음과 같은 열로 추가 할 수 있습니다.

test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)

결과:

    A   B   C   full_count
0:  1   1   3   3
1:  2   nan nan 1
2:  nan nan nan 0

완벽하게 일했습니다! 고마워.
Kaggle

40

팬더를 사용하는 경우 포함하는 루프에서 수행하는 작업을 피하려고 apply, map, applymap느린 등!

각 열에서 결 측값을 계산하려면 다음을 시도하십시오.

df.isnull().sum() 또는 df.isnull().sum(axis=0)

반면에, 다음과 같이 각 행 (질문)을 계산할 수 있습니다.

df.isnull().sum(axis=1)

Jan van der Vegt의 솔루션보다 약 10 배 빠릅니다 (BTW는 누락 된 값이 아닌 유효한 값을 계산합니다).

In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop

In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop


4

또는 단순히 데이터 프레임 객체에 info 메소드를 사용할 수 있습니다.

df.info()

각 열에 대해 널이 아닌 값의 수를 제공합니다.


2

열을 따라 null 값

df.isnull().sum(axis=0)

열을 따라 빈 값,

c = (df == '').sum(axis=0)

행을 따라 null 값

df.isnull().sum(axis=1)

행을 따라 빈 값,

c = (df == '').sum(axis=1)

0

이 코드 조각은 결 측값이있는 총 열 수의 정수 값을 반환합니다.

(df.isnull().sum() > 0).astype(np.int64).sum()

-1
>>> df = pd.DataFrame([[1, 2, np.nan],
...                    [np.nan, 3, 4],
...                    [1, 2,      3]])

>>> df
    0  1   2
0   1  2 NaN
1 NaN  3   4
2   1  2   3

>>> df.count(axis=1)
0    2
1    2
2    3
dtype: int64

-1

결 측값 수를 원하는 경우 :

np.logical_not(df.isnull()).sum()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.