Puedes usar la función DataFrame.where() de la Biblioteca Python Pandas para realizar manipulaciones condicionales de datos en DataFrames. Esta función te permite reemplazar o enmascarar valores en un DataFrame de Pandas según una condición específica.

Web Hosting
El hosting como nunca lo habías visto
  • Rápido, seguro, flexible y escalable
  • Seguro con SSL y protección DDoS
  • Dominio y asesor personal incluidos

Sintaxis de Pandas DataFrame.where()

La función where() acepta hasta cinco parámetros y sigue la siguiente sintaxis básica:

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

Esta función se aplica a un DataFrame, y solo los valores que cumplen con la condición especificada (cond) permanecen sin cambios. Todos los demás valores se reemplazan por los definidos en other.

Parámetros relevantes

Pandas DataFrame.where() acepta varios parámetros que permiten una manipulación flexible de los datos:

Parámetro Descripción Valor predeterminado
cond Condición que debe cumplirse para que los valores en el DataFrame se mantengan sin cambios
other Valor por el cual se reemplazarán los valores que no cumplan la condición
inplace Si es True, la operación se realiza directamente sobre el DataFrame existente False
axis Especifica en qué eje se aplica la condición (axis=0/filas o axis=1/columnas) None
level Especifica en qué nivel del multi-índice se debe aplicar la condición None

Cómo utilizar Pandas DataFrame.where()

La función where() se puede utilizar en una variedad de situaciones en las que se requieran manipulaciones condicionales de datos. Esto incluye, por ejemplo, la limpieza de datos o la creación de nuevas columnas basadas en condiciones.

Reemplazo condicional de valores

Supongamos que tienes un DataFrame con los resultados de ventas de una empresa y deseas mostrar solo los resultados positivos. Todos los resultados negativos deben ser reemplazados por 0. Esto se puede lograr con la función Pandas DataFrame.where(). Primero, se crea el 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)
python

El código anterior genera el siguiente DataFrame:

Región  Ventas_Q1  Ventas_Q2
0    Norte        15000        20000
1      Sur        -5000        25000
2     Este         3000        -7000
3    Oeste        -1000         5000

Con una llamada a where() puedes reemplazar todos los valores negativos por 0. Sin embargo, debes asegurarte de considerar solo las columnas que contienen valores numéricos, ya que de lo contrario la comparación no 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)
python

El DataFrame resultante df_positive contiene solo los resultados positivos de ventas y reemplaza los valores negativos por 0, tal como se desea:

Región     Ventas_Q1     Ventas_Q2
0    Norte          15000        20000
1      Sur                0        25000
2     Este            3000             0
3    Oeste                0         5000

Filtrado condicional de valores

Pandas DataFrame.where() también se puede utilizar para enmascarar o filtrar valores, es decir, para mostrar solo ciertas partes de un DataFrame. En el siguiente ejemplo, el DataFrame solo mostrará los valores que están por encima de un umbral específico (en este caso, 10000). Nuevamente, debes asegurarte de que solo se consideren las columnas numéricas:

# 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)
python

En este caso, el DataFrame resultante df_masked solo muestra los valores que son mayores a 10000. Todos los demás valores se presentan 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
¿Le ha resultado útil este artículo?
Ir al menú principal