Yanıtlar:
GÜNCELLEME: Pandalar 0.22.0 kullanarak
Daha yeni Panda sürümleri yeni yöntemler kullanır 'DataFrame.isna ()' ve 'DataFrame.notna ()'
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
sütun listesi olarak:
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
bu sütunları seçmek için (en az bir NaN
değer içeren ):
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
ESKİ cevap:
İsnull () kullanmaya çalışın :
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
veya @ root önerilen daha net sürüm olarak:
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
bir alt küme seçmek için - en az bir NaN
değer içeren tüm sütunlar :
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
, notna
?
Ekranda görsel olarak incelemek için birçok sütuna sahip olduğum bir sorun yaşadım, böylece rahatsız edici sütunları filtreleyen ve döndüren kısa bir liste
nan_cols = [i for i in df.columns if df[i].isnull().any()]
eğer bu herkes için yararlıysa
Çok sayıda sütuna sahip veri kümelerinde, kaç sütun boş değer içerdiğini ve kaç sütunun bulunmadığını görmek daha da iyidir.
print("No. of columns containing null values")
print(len(df.columns[df.isna().any()]))
print("No. of columns not containing null values")
print(len(df.columns[df.notna().all()]))
print("Total no. of columns in the dataframe")
print(len(df.columns))
Örneğin, veri çerçevemde, 19'u en az bir boş değer içeren 82 sütun içeriyordu.
Ayrıca , daha fazla boş değere sahip olanlara bağlı olarak sütunları ve satırları otomatik olarak kaldırabilirsiniz.
Bunu akıllıca yapan kod şöyledir:
df = df.drop(df.columns[df.isna().sum()>len(df.columns)],axis = 1)
df = df.dropna(axis = 0).reset_index(drop=True)
Not: Yukarıdaki kod, tüm null değerlerinizi kaldırır. Boş değerler istiyorsanız, bunları daha önce işleyin.
Bu benim için çalıştı,
1. En az 1 boş değerli Sütun elde etmek için. (sütun adları)
data.columns[data.isnull().any()]
2. En az 1 null değere sahip, sütunları saymak için.
data[data.columns[data.isnull().any()]].isnull().sum()
[İsteğe bağlı] 3. Boş sayının yüzdesini almak için.
data[data.columns[data.isnull().any()]].isnull().sum() * 100 / data.shape[0]
df.isna().any()[lambda x: x]
benim için çalışıyor