Aplicar condições em DataFrames com Pandas DataFrame.where()
Pode usar a função DataFrame.where() da Biblioteca Python Pandas para realizar manipulações condicionais de dados em DataFrames. Esta função permite substituir ou mascarar valores num DataFrame do Pandas de acordo com uma condição específica.
Sintaxe do Pandas DataFrame.where()
A função where() aceita até cinco parâmetros e segue a seguinte sintaxe básica:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonEsta função é aplicada a um DataFrame, e apenas os valores que cumprem a condição especificada (cond) permanecem inalterados. Todos os outros valores são substituídos pelos definidos em other.
Parâmetros relevantes
O Pandas DataFrame.where() aceita vários parâmetros que permitem uma manipulação flexível dos dados:
| Parâmetro | Descrição | Valor predefinido |
|---|---|---|
cond
|
Condição que deve ser cumprida para que os valores no DataFrame permaneçam inalterados | |
other
|
Valor pelo qual serão substituídos os valores que não cumprirem a condição | |
inplace
|
Se for True, a operação é realizada diretamente no DataFrame existente
|
False
|
axis
|
Especifica em que eixo a condição é aplicada (axis=0 ou axis=1)
|
None
|
level
|
Especifica em que nível do multi-índice a condição deve ser aplicada | None
|
Como utilizar o Pandas DataFrame.where()
A função where() pode ser utilizada numa variedade de situações em que são necessárias manipulações condicionais de dados. Isso inclui, por exemplo, a limpeza de dados ou a criação de novas colunas com base em condições.
Substituição condicional de valores
Suponhamos que tem um DataFrame com os resultados de vendas de uma empresa e deseja mostrar apenas os resultados positivos. Todos os resultados negativos devem ser substituídos por 0. Isso pode ser feito com a função Pandas DataFrame.where(). Primeiro, crie o DataFrame:
import pandas as pd
# Crear un DataFrame de ejemplo
data = {
'Región': ['Norte', 'Sur', 'Este', 'Oeste'],
'Ventas_Q1': [15000, -5000, 3000, -1000],
'Ventas_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)pythonO código anterior gera o seguinte DataFrame:
Región Ventas_Q1 Ventas_Q2
0 Norte 15000 20000
1 Sur -5000 25000
2 Este 3000 -7000
3 Oeste -1000 5000Com uma chamada a where(), pode substituir todos os valores negativos por 0. No entanto, deve certificar-se de considerar apenas as colunas que contêm valores numéricos, caso contrário a comparação não funcionará.
# Reemplazo condicional de valores
df_positive = df.copy()
df_positive[['Ventas_Q1', 'Ventas_Q2']] = df[['Ventas_Q1', 'Ventas_Q2']].where(df[['Ventas_Q1', 'Ventas_Q2']] > 0, 0)
print(df_positive)pythonO DataFrame resultante df_positive contém apenas os resultados positivos das vendas e substitui os valores negativos por 0, conforme desejado:
Región Ventas_Q1 Ventas_Q2
0 Norte 15000 20000
1 Sur 0 25000
2 Este 3000 0
3 Oeste 0 5000Filtragem condicional de valores
O Pandas DataFrame.where() também pode ser usado para mascarar ou filtrar valores, ou seja, para mostrar apenas certas partes de um DataFrame. No exemplo a seguir, o DataFrame mostrará apenas os valores que estão acima de um limite específico (neste caso, 10000). Novamente, certifique-se de que apenas as colunas numéricas sejam consideradas:
# Mostrar solo los valores mayores a 10000
df_masked = df.copy()
df_masked[['Ventas_Q1', 'Ventas_Q2']] = df[['Ventas_Q1', 'Ventas_Q2']].where(df[['Ventas_Q1', 'Ventas_Q2']] > 10000)
print(df_masked)pythonNeste caso, o DataFrame resultante df_masked mostra apenas os valores superiores a 10000. Todos os outros valores são apresentados como NaN:
Región Ventas_Q1 Ventas_Q2
0 Norte 15000.0 20000.0
1 Sur NaN 25000.0
2 Este NaN NaN
3 Oeste NaN NaN