Introdução ao Pandas.Dropna ()

A biblioteca de código-fonte aberto do Python, Pandas, é sem dúvida a biblioteca mais usada para ciência e análise de dados. Também é um pacote preferível para operações de manipulação de dados ad-hoc. O crédito vai para sua representação de dados extremamente flexível usando DataFrames e o arsenal de funções expostas à manipulação de dados presentes nesses quadros de dados. Qualquer problema de dados da vida real causará o problema de falta de dados e é imperativo que esses pontos de dados sejam tratados da maneira correta. O tratamento de dados ausentes de qualquer maneira adequada é suportado por essa função, Pandas.Dropna () .

O que exatamente são Pandas.Dropna ()?

A página Pydata pode ser consultada para a definição da função oficial.

O cabeçalho da função mostrado é o seguinte (junto com os valores padrão dos parâmetros):

DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)

Os parâmetros (excluindo self (o próprio objeto do quadro de dados)) mostrados na definição da função são os seguintes:

  • eixo: refere-se à orientação (linha ou coluna) na qual os dados são descartados. Os valores possíveis são 0 ou 1 (também 'índice' ou 'colunas' respectivamente). 0 / 'índice' representa linhas descartadas e 1 / 'colunas' representa colunas descartadas.
  • Como: Especifica o cenário em que a coluna / linha que contém valor nulo deve ser eliminada. Os valores são 'any' ou 'all'. 'all' descarta a linha / coluna somente se todos os valores na linha / coluna forem nulos. 'any' descarta a linha / coluna quando pelo menos um valor na linha / coluna é nulo.
  • thresh: Especifica o número mínimo de valores não-NA na linha / coluna para que seja considerado no resultado final. Qualquer linha / coluna com o número de valores não NA <valor de thresh é removida, independentemente de outros parâmetros passados. Quando thresh = none, esse filtro é ignorado.
  • subconjunto: eixo especifica se as linhas / colunas devem ser descartadas. O subconjunto pega uma lista de colunas / linhas respectivamente (oposta ao eixo) que devem ser pesquisadas por valores nulos / NA, em vez de uma lista inteira de colunas / linhas, respectivamente.
  • inplace: como uma boa prática, o DataFrame original (ou representação de dados) não é modificado, mas uma cópia separada com as alterações (por exemplo, linhas / colunas descartadas) é retornada. O atributo inplace oferece flexibilidade para modificar a estrutura de dados original.

Agora que temos uma idéia geral dos parâmetros expostos por dropna (), vamos ver alguns cenários possíveis de dados ausentes e como os enfrentamos.

Exemplos de casos de uso de Pandas.Dropna ()

Abaixo estão os exemplos de pandas.dropna ():

Importar pandas: para usar o Dropna (), é preciso haver um DataFrame. Para criar um DataFrame, a biblioteca do panda precisa ser importada (sem surpresa aqui). Vamos importá-lo com um pseudônimo para referenciar objetos no módulo convenientemente. Para definir valores nulos, usaremos numpy.nan. Assim, importaremos a biblioteca numpy com um alias np:

Código:

In (1): import pandas as pd
In (2): import numpy as np

1. Crie um objeto DataFrame para manipulação

Ao importar pandas, todos os métodos, funções e construtores estão disponíveis no seu espaço de trabalho. Então, vamos criar um DataFrame que possa nos ajudar a demonstrar o uso de dropna ().

Código:

In (3): df = pd.DataFrame(
('Company':('Google', 'Amazon', 'Infosys', 'Directi'),
'Age':('21', '23', '38', '22'),
'NetWorth ($ bn)':(300, np.nan, np.nan, 1.3),
'Founder':(np.nan, np.nan, np.nan, np.nan),
'Headquarter-Country':('United States', np.nan, 'India', 'India') ))
In (4): print(df)
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
1 Amazon 23 NaN NaN NaN
2 Infosys 38 NaN NaN India
3 Directi 22 1.3 NaN India

O DataFrame impresso será manipulado em nossa demonstração abaixo.

2. Soltando Linhas vs Colunas

O parâmetro axis é usado para descartar linhas ou colunas, como mostrado abaixo:

Código:

In (5): df.dropna(axis=1)

Resultado:

Out(5):
Company Age
0 Google 21
1 Amazon 23
2 Infosys 38
3 Directi 22

Qualquer coluna que contenha pelo menos 1 NaN como valor da célula é descartada. Vamos ver como as linhas (eixo = 0) funcionarão.
Nota : Esse é o comportamento padrão quando o eixo não é especificado explicitamente.

Código:

In (6): df.dropna(axis=0)

Resultado:

Out(6):
Empty DataFrame
Columns: (Company, Age, NetWorth ($ bn), Founder, Headquarter-Country) Index: ()

Hmm, então não há mais dados no DataFrame retornado! Obviamente, esse não é o comportamento pretendido. Vamos ver como consertar isso.

3. Usando o atributo Subconjunto

As operações anteriores estavam caindo com base em todas as colunas quando o eixo = 0. Como existe uma coluna Founder que possui apenas valores nulos, todas as linhas são descartadas. Vamos especificar uma coluna a ser usada para filtragem:

Código:

In (7): df.dropna(axis=0, subset=('NetWorth ($ bn)'))

Resultado:

Out(7):
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
3 Directi 22 1.3 NaN India

Agora, como vemos, apenas os registros com Nanvalue na coluna Networth são descartados. O DataFrame retornado pode ser modificado novamente aplicando dropna () mais uma vez para filtrar colunas passando o eixo = 1.

4. Usando o parâmetro How

Por padrão, dropna () descarta a linha / coluna completa, mesmo que apenas 1 valor esteja ausente. Um flip-side rápido exposto é descartado apenas quando todos os valores em uma linha / coluna são nulos. Isso é conseguido definindo como = 'tudo' em vez de como = 'qualquer' (o comportamento padrão).

Código:

In (8): df.dropna(axis=1, how='all')

Resultado:

Out(8):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Agora, o DataFrame resultante pode ser usado para descartar linhas / colunas com uma lógica mais complexa, se necessário.

5. Obtendo o controle através do Thresh

O parâmetro thresh é provavelmente a ferramenta mais poderosa quando combinada com o restante adequadamente.

Código:

In (17): df.dropna(axis=1, thresh=2)

Resultado:

Out(17):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Ao definir o eixo = 1 e thresh = 2, apenas as colunas com pelo menos 2 valores não-NaN são mantidas.

Conclusão

Os exemplos mostrados acima são de natureza simplista, mas são poderosos o suficiente para lidar com a maioria dos problemas que você pode encontrar em situações da vida real. Não obstante, deve-se praticar a combinação de parâmetros diferentes para ter uma compreensão clara de seu uso e aumentar a velocidade em sua aplicação.

Artigos recomendados

Este é um guia para Pandas.Dropna (). Aqui discutimos o que é Pandas.Dropna (), os parâmetros e exemplos. Você também pode consultar nossos outros artigos relacionados para saber mais.

  1. O que é pandas
  2. PNL em Python
  3. Classe abstrata em Python
  4. Fatorial em Python
  5. Programa fatorial em JavaScript