Pandalar veri çerçevesindeki her bir satırdaki eksik değerlerin sayısı nasıl hesaplanır?


17

Panda veri çerçevesindeki her satırdaki eksik değer sayısını nasıl alabilirim? Dataframe, her satırda aynı sayıda eksik değere sahip farklı dataframlara bölmek istiyorum.

Herhangi bir öneri?

Yanıtlar:


19

Aşağıdaki gibi satırlara bir sayı uygulayabilirsiniz:

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

çıktı:

0:  3
1:  1
2:  0

Sonucu şöyle bir sütun olarak ekleyebilirsiniz:

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

Sonuç:

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

Mükemmel çalıştı! Teşekkür.
Kaggle

41

Pandalar kullanırken, dahil bir döngüde, performans işlemlerini önlemek için deneyin apply, map, applymapyavaş vb!

Her sütundaki eksik değerleri saymak istiyorsanız şunu deneyin:

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

Öte yandan, her bir satırda (sorunuz olanı) şu şekilde sayabilirsiniz:

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

Jan van der Vegt'ın çözümünden yaklaşık 10 kat daha hızlıdır (BTW, eksik değerleri değil, geçerli değerleri sayar):

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

Veya, veri çerçevesi nesneleri için bilgi yöntemini kullanabilirsiniz:

df.info()

her sütun için null olmayan değerlerin sayısını verir.


2

sütun boyunca null değerler,

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

sütun boyunca boş değerler,

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

satır boyunca null değerler,

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

satır boyunca boş değerler,

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

0

Bu snippet, eksik değere sahip toplam sütun sayısının tamsayı değerini döndürür:

(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

Eksik değerlerin sayısını istiyorsanız:

np.logical_not(df.isnull()).sum()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.