A função DataFrame.where() do Python Pandas foi criada para facilitar a ma­ni­pu­la­ção de dados con­di­ci­o­nais em Da­ta­Fra­mes. Ela permite que pro­gra­ma­do­res subs­ti­tuam ou mascarem os valores em um DataFrame do Pandas com base em uma condição.

Hos­pe­da­gem que se adapta às suas ambições
  • Fique online com 99,99% de tempo de atividade e segurança robusta
  • Aumente o de­sem­pe­nho com um clique à medida que o tráfego cresce
  • Inclui domínio gratuito, SSL, e-mail e suporte 24 horas por dia, 7 dias por semana

Sintaxe da função Pandas DataFrame.where()

A função where() aceita até cinco pa­râ­me­tros e tem a seguinte sintaxe:

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
python

Quando a função é aplicada a um DataFrame, apenas os valores que atendem a uma condição es­pe­cí­fica (cond) per­ma­ne­cem iguais. Qualquer outro valor é subs­ti­tuído de acordo com a es­pe­ci­fi­ca­ção do parâmetro other.

Pa­râ­me­tros da função Pandas DataFrame.where()

A função Pandas DataFrame.where() aceita a inclusão de di­fe­ren­tes pa­râ­me­tros que facilitam a ad­mi­nis­tra­ção e mo­di­fi­ca­ção flexível dos dados:

Parâmetro Descrição Valor padrão
cond A condição que deve ser atendida para que os valores do DataFrame per­ma­ne­çam inal­te­ra­dos
other O valor que substitui aqueles que não atendem à condição
inplace Quando definido como ver­da­deiro (True), a operação modifica o DataFrame di­re­ta­mente False
axis Es­pe­ci­fica a quais eixos a condição se aplica (axis=0 para linhas, axis=1 para colunas) None
level Define o nível de um índice múltiplo ao qual a condição deve ser aplicada None

Como usar a função Pandas DataFrame.where()

A função where() pode ser útil em diversas situações que requerem ma­ni­pu­la­ção de dados con­di­ci­o­nal. Isso inclui a limpeza de in­for­ma­ções ou a criação de novas colunas baseadas em condições.

Subs­ti­tuir valores com base em condições

Imagine que você tenha um DataFrame com os re­sul­ta­dos de vendas da sua empresa e deseje exibir apenas os números positivos, enquanto os negativos deverão ser subs­ti­tuí­dos por 0. Para fazer isso, use a função Pandas DataFrame.where(). Primeiro, é preciso criar um DataFrame:

import pandas as pd
# Criar um DataFrame de exemplo
data = {
    'Região': ['Norte', 'Sul', 'Leste', 'Oeste'],
    'Vendas_1Q': [15000, -5000, 3000, -1000],
    'Vendas_2Q': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
python

O código acima produzirá o seguinte DataFrame:

Região    Vendas_1Q    Vendas_2Q
0    Norte         15000                     20000
1    Sul                    -5000                        25000
2    Leste             3000                         -7000
3    Oeste         -1000                            5000

Com a função Pandas DataFrame.where(), você pode subs­ti­tuir todos os valores negativos por 0. Cer­ti­fi­que-se de que apenas colunas com valores numéricos serão incluídas, do contrário, o pro­ce­di­mento não fun­ci­o­nará.

# Substituir valores usando condições
df_positivo = df.copy()
df_positivo[['Vendas_1Q', 'Vendas_2Q']] = df[['Vendas_1Q', 'Vendas_2Q']].where(df[['Vendas_1Q', 'Vendas_2Q']] > 0, 0)
print(df_positivo)
python

O DataFrame re­sul­tante, df_positivo, exibirá apenas os re­sul­ta­dos de vendas positivos e subs­ti­tuirá os negativos por 0:

Região    Vendas_1Q    Vendas_2Q
0    Norte         15000                        20000
1    Sul                             0                                25000
2    Leste                3000                                 0
3    Oeste                    0                                 5000

Mascarar valores usando condições

A função Pandas DataFrame.where() também pode ser usada para mascarar valores. Isso significa que apenas as partes es­pe­cí­fi­cas de um DataFrame serão exibidas. No exemplo a seguir, queremos mostrar apenas os valores acima de um patamar (neste caso, 10000). Lembre-se de que, nesse caso, é preciso avaliar apenas colunas com dados numéricos:

# Exibir apenas os valores acima de 10000
df_mascarado = df.copy()
df_mascarado[['Vendas_1Q', 'Vendas_2Q']] = df[['Vendas_1Q', 'Vendas_2Q']].where(df[['Vendas_1Q', 'Vendas_2Q']] > 10000)
print(df_mascarado)
python

O DataFrame produzido, df_mascarado, exibirá apenas os valores su­pe­ri­o­res a 10000. Todos os demais valores serão subs­ti­tuí­dos por NaN:

Região    Vendas_1Q    Vendas_2Q
0    Norte         15000                        20000
1    Sul                     NaN                             25000
2    Leste             NaN                                 NaN
3    Oeste                NaN                                    NaN
Ir para o menu principal