domingo, 18 de abril de 2021

Python - Pandas isnull() e notnull()

Python é uma ótima linguagem para fazer análise de dados, principalmente por causa do fantástico ecossistema de pacotes Python centrados em dados. O Pandas é um desses pacotes e torna a importação e análise de dados muito mais fácil.

Ao criar um dataframe a partir de um arquivo csv, muitas colunas em branco são importadas como valor nulo para o dataframe, o que mais tarde cria problemas durante a operação desse dataframe. Os métodos Pandas isnull() e notnull() são usados para verificar e gerenciar valores NULL em um dataframe.

Dataframe.isnull()

Sintaxe: Pandas.isnull(“DataFrame Name”) ou DataFrame.isnull()
Parâmetros: objeto para verificar valores nulos
Tipo de retorno: Dataframe de valores booleanos que são verdadeiros para valores NaN

Para baixar o arquivo CSV utilizado, clique aqui.

Exemplo #1: Usando isnull()

No exemplo a seguir, a coluna Team é verificada para valores NULL e uma série booleana é retornada pelo método isnull() que armazena True para cada valor NaN e False para um valor não nulo.

# importando o pacote pandas
import pandas as pd
 
# making data frame from csv file
# Criando um dataframe de um arquivo csv
data = pd.read_csv("employees.csv")

# Criando um serie de valores booleanos
# com valor True para valores não nulos
bool_series = pd.isnull(data["Team"])

# filtrando dados
# mostrando apenas os dados com valores nulos
# na coluna Team
print(data[bool_series])

Conforme mostrado na saída abaixo, apenas as linhas com Team = NULL são exibidas.

Saída:

      First Name  Gender  Start Date Last Login Time  Salary  Bonus % Senior Management Team
1         Thomas    Male   3/31/1996         6:53 AM   61933    4.170              True  NaN
10        Louise  Female   8/12/1980         9:01 AM   63241   15.132              True  NaN
23           NaN    Male   6/14/2012         4:19 PM  125792    5.042               NaN  NaN
32           NaN    Male   8/21/1998         2:27 PM  122340    6.417               NaN  NaN
91         James     NaN   1/26/2005        11:00 PM  128771    8.309             False  NaN
109  Christopher    Male   4/22/2000        10:15 AM   37919   11.449             False  NaN
139          NaN  Female   10/3/1990         1:08 AM  132373   10.527               NaN  NaN
199     Jonathan    Male   7/17/2009         8:15 AM  130581   16.736              True  NaN
258      Michael    Male   1/24/2002         3:04 AM   43586   12.659             False  NaN
290       Jeremy    Male   6/14/1988         6:20 PM  129460   13.657              True  NaN
314        Bobby    Male   3/31/1996         5:40 PM  112117    6.338             False  NaN
367       Edward    Male    8/4/1989         6:06 AM   66067   10.957              True  NaN
382          NaN  Female   4/18/1996         3:57 PM  107024   12.182               NaN  NaN
434        Joyce  Female    2/7/1995         7:38 AM   50701   14.227              True  NaN
438        Jason    Male  11/20/1998         2:54 PM   69244    6.220              True  NaN
445        Chris    Male  12/12/2006         1:57 AM   71642    1.496             False  NaN
479      Richard    Male    7/4/1997        11:47 AM   47647   18.787              True  NaN
512        Wanda  Female    4/6/1993         3:11 AM   78883   19.695             False  NaN
513        Jimmy    Male  11/19/2013         7:29 PM   63549   19.624             False  NaN
520        Peter    Male   2/22/2003         9:09 AM   56580    8.411              True  NaN
567          NaN  Female    4/1/1980         8:04 PM   48141   12.605               NaN  NaN
573     Kimberly  Female  12/30/1981         4:51 AM   81800    5.435              True  NaN
580        Harry    Male   1/27/1985         8:18 PM   65482   18.089             False  NaN
626          NaN  Female   4/13/1997         8:03 AM  131755    2.930               NaN  NaN
634         Carl    Male   3/30/1987         5:59 PM   75598   19.289             False  NaN
635        Randy    Male   9/27/2000         3:04 AM   89831   13.047              True  NaN
647       Donald    Male    4/6/1988        10:00 AM  122920    5.320             False  NaN
669       Joseph     NaN   3/28/1982         1:05 PM   86564   11.879              True  NaN
684        Alice  Female   1/21/2016         5:07 PM  117787   10.485             False  NaN
706         Todd    Male    7/4/1993         6:53 PM  128175   18.473              True  NaN
726       Daniel    Male   2/29/2016         4:04 AM   77287   13.000              True  NaN
753      Antonio    Male    6/6/1999        10:54 PM   41928    5.478              True  NaN
774          NaN  Female   6/18/2000         7:36 AM  106428   10.867               NaN  NaN
781     Lawrence    Male    7/3/1995        10:55 PM   46378    9.127             False  NaN
794       Nicole  Female    3/1/2004         5:17 PM   44021   10.286             False  NaN
826          NaN     NaN    8/1/1988         1:35 AM   87103    5.665               NaN  NaN
850      Charles    Male    9/3/1997        10:04 AM  148291    6.002             False  NaN
851        Bobby    Male   8/19/1996         1:16 AM  147842   16.158              True  NaN
853      Mildred  Female    4/6/2007        10:06 PM  139284   11.390              True  NaN
855      Phillip     NaN  10/20/2003        11:09 AM   89700    2.277              True  NaN
864         Ryan    Male  11/16/2012         1:47 PM   57292    6.010             False  NaN
912          Joe    Male   12/8/1998        10:28 AM  126120    1.020             False  NaN
951          NaN  Female   9/14/2010         5:19 AM  143638    9.662               NaN  NaN

Dataframe.notnull()

Sintaxe: Pandas.notnull("Nome_dataframe") ou DataFrame.notnull()
Parametros: Objeto para verificar valores nulos
Tipo de retorno: Um dataframe de valores booleanos com False para valores NaN

Exemplo #1: Usando notnull()

No exemplo a seguir, a coluna Gênero é verificada para valores NULL e uma série booleana é retornada pelo método notnull() que armazena True sempre que o valor é não nulo e False para um valor nulo.

# importando o pacote pandas
import pandas as pd
 
# making data frame from csv file
# Criando um dataframe de um arquivo csv
data = pd.read_csv("employees.csv")

# Criando uma serie de valores booleanos
# com o valor False para valores NaN
bool_series = pd.notnull(data["Gender"])

# Mostrando apenas as linhas com Gender != NaN
print(data[bool_series])

Conforme mostrado na saída, apenas as linhas com algum valor em Gender são exibidas.

Saída:

    First Name  Gender Start Date Last Login Time  Salary  Bonus % Senior Management                  Team
0      Douglas    Male   8/6/1993        12:42 PM   97308    6.945              True             Marketing
1       Thomas    Male  3/31/1996         6:53 AM   61933    4.170              True                   NaN
2        Maria  Female  4/23/1993        11:17 AM  130590   11.858             False               Finance
3        Jerry    Male   3/4/2005         1:00 PM  138705    9.340              True               Finance
4        Larry    Male  1/24/1998         4:47 PM  101004    1.389              True       Client Services
..         ...     ...        ...             ...     ...      ...               ...                   ...
994     George    Male  6/21/2013         5:47 PM   98874    4.479              True             Marketing
996    Phillip    Male  1/31/1984         6:30 AM   42392   19.675             False               Finance
997    Russell    Male  5/20/2013        12:39 PM   96914    1.421             False               Product
998      Larry    Male  4/20/2013         4:45 PM   60500   11.985             False  Business Development
999     Albert    Male  5/15/2012         6:24 PM  129949   10.169              True                 Sales

[855 rows x 8 columns]

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas isnull() and notnull().

Licença

0 comentários:

Postar um comentário