In[71]: df
Out[71]:
a b c
0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[72]: df.isna().any()Out[72]:
a True
b True
c False
dtype: bool
In[97]: df
Out[97]:
a b c
0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[98]: pd.isnull(df).sum()>0Out[98]:
a True
b True
c False
dtype: bool
ou como a @root propôs uma versão mais clara:
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']
para selecionar um subconjunto - todas as colunas contendo pelo menos um NaNvalor:
In[31]: df.loc[:, df.isnull().any()]Out[31]:
a b
0NaN7.010.0NaN22.0NaN31.07.041.03.057.04.062.06.079.06.083.00.099.00.0
Eu tive um problema em que precisei de muitas colunas para inspecionar visualmente na tela, de modo que uma pequena lista de componentes que filtra e retorna as colunas incorretas é
nan_cols =[i for i in df.columns if df[i].isnull().any()]
Em conjuntos de dados com grande número de colunas, é ainda melhor ver quantas colunas contêm valores nulos e quantas não.
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))
Por exemplo, no meu dataframe, ele continha 82 colunas, das quais 19 continham pelo menos um valor nulo.
Além disso, você também pode remover automaticamente colunas e linhas, dependendo de quais possuem mais valores nulos.
Aqui está o código que faz isso de forma inteligente:
df.isna().any()[lambda x: x]
trabalha para mimRespostas:
ATUALIZAÇÃO: usando o Pandas 0.22.0
As versões mais recentes do Pandas têm novos métodos 'DataFrame.isna ()' e 'DataFrame.notna ()'
como lista de colunas:
para selecionar essas colunas (contendo pelo menos um
NaN
valor):Resposta ANTIGA:
Tente usar isnull () :
ou como a @root propôs uma versão mais clara:
para selecionar um subconjunto - todas as colunas contendo pelo menos um
NaN
valor:fonte
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
,notna
?Você pode usar
df.isnull().sum()
. Ele mostra todas as colunas e o total de NaNs de cada recurso.fonte
Eu tive um problema em que precisei de muitas colunas para inspecionar visualmente na tela, de modo que uma pequena lista de componentes que filtra e retorna as colunas incorretas é
se isso é útil para alguém
fonte
Em conjuntos de dados com grande número de colunas, é ainda melhor ver quantas colunas contêm valores nulos e quantas não.
Por exemplo, no meu dataframe, ele continha 82 colunas, das quais 19 continham pelo menos um valor nulo.
Além disso, você também pode remover automaticamente colunas e linhas, dependendo de quais possuem mais valores nulos.
Aqui está o código que faz isso de forma inteligente:
Nota: O código acima remove todos os seus valores nulos. Se você deseja valores nulos, processe-os antes.
fonte
Eu uso essas três linhas de código para imprimir os nomes das colunas que contêm pelo menos um valor nulo:
fonte
Ambos devem funcionar:
Métodos DataFrame
isna()
ouisnull()
são completamente idênticos.Nota : Seqüências de caracteres vazias
''
são consideradas falsas (não consideradas NA)fonte
Isso funcionou para mim,
1. Para obter colunas com pelo menos 1 valor nulo. (nomes de colunas)
2. Para obter colunas com contagem, com pelo menos 1 valor nulo.
[Opcional] 3. Para obter a porcentagem da contagem nula.
fonte