Filtrado de Datos con Pandas

PandasBeginner
Practicar Ahora

Introducción

¡Bienvenido al laboratorio de filtrado de datos con Pandas! El filtrado de datos es una de las tareas más comunes y esenciales en el análisis de datos. Te permite seleccionar un subconjunto de tus datos que cumple criterios específicos, lo que te permite centrarte en la información más relevante para tu análisis.

Pandas es una potente biblioteca de Python para la manipulación y el análisis de datos. Su estructura de datos principal, el DataFrame, es una tabla bidimensional de datos con filas y columnas. En este laboratorio, aprenderás varias técnicas fundamentales para filtrar filas de un DataFrame de Pandas. Cubriremos:

  • Filtrado con una única condición booleana.
  • Combinación de múltiples condiciones utilizando operadores lógicos.
  • Uso del método isin() para hacer coincidir múltiples valores.
  • Eliminación de filas con datos faltantes (NaN).
  • Conteo de los resultados de tus datos filtrados.

Al final de este laboratorio, tendrás una base sólida para seleccionar y aislar datos en tus proyectos de Pandas.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de reseñas positivas del 98% por parte de los estudiantes.

Filtrar filas con condición booleana

En este paso, aprenderás la técnica de filtrado más básica: la indexación booleana. Este método implica la creación de una condición booleana que devuelve una Serie de Pandas con valores True y False. Cuando pasas esta Serie a un DataFrame, devuelve solo las filas donde el valor es True.

Comencemos filtrando nuestro DataFrame para encontrar a todos los empleados mayores de 30 años.

Primero, abre el archivo main.py en el editor de la izquierda. El archivo ya ha sido pre-poblado con un DataFrame de ejemplo.

Ahora, reemplaza las sentencias print existentes en la parte inferior de main.py con el siguiente código. Este código crea una condición booleana df['Age'] > 30 y la utiliza para filtrar el DataFrame.

## Filter for employees older than 30
older_than_30 = df[df['Age'] > 30]

print("Employees older than 30:")
print(older_than_30)

Tu archivo main.py completo debería verse ahora así:

import pandas as pd
import numpy as np

## Create a sample DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
    'Department': ['HR', 'HR', 'Sales', 'IT', 'IT', 'Finance'],
    'Age': [25, 45, 38, 52, 29, 33],
    'Salary': [50000, 80000, 75000, 95000, 62000, np.nan]
}

df = pd.DataFrame(data)

## Filter for employees older than 30
older_than_30 = df[df['Age'] > 30]

print("Employees older than 30:")
print(older_than_30)

Ahora, ejecutemos el script. Abre la terminal y ejecuta el siguiente comando:

python3 main.py

Deberías ver la siguiente salida, que lista solo a los empleados cuya edad es mayor de 30 años.

Employees older than 30:
      Name Department  Age   Salary
1      Bob         HR   45  80000.0
2  Charlie      Sales   38  75000.0
3    David         IT   52  95000.0
5    Frank    Finance   33      NaN

Combinar filtros usando el operador &

En este paso, combinaremos múltiples condiciones para realizar un filtrado más complejo. Puedes combinar condiciones booleanas utilizando operadores lógicos. Los más comunes son & para AND y | para OR.

Una regla de sintaxis crucial es que cada condición debe estar encerrada entre paréntesis () debido a la precedencia de operadores de Python.

Vamos a filtrar el DataFrame para encontrar empleados que estén en el departamento de 'IT' y sean mayores de 30 años.

Modifica tu archivo main.py. Reemplaza el código de filtrado del paso anterior con el nuevo código a continuación.

## Filter for employees in IT and older than 30
it_and_older = df[(df['Department'] == 'IT') & (df['Age'] > 30)]

print("IT employees older than 30:")
print(it_and_older)

Observa cómo cada condición, df['Department'] == 'IT' y df['Age'] > 30, está envuelta en su propio conjunto de paréntesis.

Guarda el archivo main.py y ejecútalo desde la terminal:

python3 main.py

La salida mostrará solo los empleados que cumplen ambas condiciones. En nuestro conjunto de datos, solo David cumple este criterio.

IT employees older than 30:
    Name Department  Age   Salary
3  David         IT   52  95000.0

Usar el método isin para coincidencia de valores

En este paso, aprenderás cómo filtrar filas donde el valor de una columna sea uno de varios valores posibles. Si bien podrías usar múltiples condiciones | (OR), una forma más eficiente y legible es usar el método isin(). Este método toma una lista de valores y devuelve True para cada fila donde el valor de la columna se encuentra en esa lista.

Busquemos a todos los empleados que trabajan en los departamentos de 'HR' o 'Finance'.

Actualiza la lógica de filtrado en tu archivo main.py con el siguiente código:

## Filter for employees in HR or Finance departments
hr_or_finance = df[df['Department'].isin(['HR', 'Finance'])]

print("Employees in HR or Finance:")
print(hr_or_finance)

Aquí, isin(['HR', 'Finance']) verifica qué filas en la columna Department tienen un valor de 'HR' o 'Finance'.

Guarda el archivo y ejecuta el script en la terminal:

python3 main.py

La salida mostrará a todos los empleados de los departamentos especificados.

Employees in HR or Finance:
    Name Department  Age   Salary
0  Alice         HR   25  50000.0
1    Bob         HR   45  80000.0
5  Frank    Finance   33      NaN

Filtrar con notnull para eliminar NaN

En este paso, abordaremos cómo manejar datos faltantes. En Pandas, los valores faltantes se representan típicamente como NaN (Not a Number). A menudo es necesario filtrar las filas que contienen estos valores faltantes antes de realizar cálculos.

El método notnull() devuelve una Serie booleana que es True para los valores no faltantes y False para los valores faltantes (NaN). Puedes usar esto para eliminar fácilmente filas con NaN en una columna específica.

Vamos a filtrar nuestro DataFrame para ver solo a los empleados para los que tenemos información salarial.

Modifica el archivo main.py para usar el método notnull() en la columna Salary.

## Filter out rows with missing Salary
valid_salary = df[df['Salary'].notnull()]

print("Employees with valid salary information:")
print(valid_salary)

Este código seleccionará todas las filas donde la columna Salary no contenga NaN.

Guarda el archivo y ejecuta el script desde la terminal:

python3 main.py

Como puedes ver en la salida, Frank, que tenía un salario NaN, ha sido excluido del resultado.

Employees with valid salary information:
      Name Department  Age   Salary
0    Alice         HR   25  50000.0
1      Bob         HR   45  80000.0
2  Charlie      Sales   38  75000.0
3    David         IT   52  95000.0
4      Eve         IT   29  62000.0

Contar filas filtradas usando la función len

En este paso final, aprenderás cómo contar el número de filas en un DataFrame filtrado. Después de aplicar un filtro, a menudo necesitas saber cuántas filas cumplieron tus criterios. Una forma sencilla de hacerlo es usando la función incorporada de Python len(), que devuelve el número de filas en un DataFrame.

Vamos a filtrar a todos los empleados del departamento de 'IT' y luego contarlos.

Actualiza tu archivo main.py con el siguiente código. Primero filtraremos el DataFrame y luego pasaremos el DataFrame filtrado resultante a la función len().

## Filter for employees in the IT department
it_employees = df[df['Department'] == 'IT']

## Count the number of IT employees
num_it_employees = len(it_employees)

print(f"Number of employees in IT: {num_it_employees}")

Este código primero crea un nuevo DataFrame it_employees que contiene solo las filas del departamento de IT. Luego, calcula la longitud de este nuevo DataFrame e imprime una cadena formateada con el resultado.

Guarda el archivo y ejecuta el script:

python3 main.py

La salida será una sola línea indicando el recuento.

Number of employees in IT: 2

Resumen

¡Felicitaciones por completar el laboratorio de Filtrado de Datos con Pandas!

En este laboratorio, has aprendido y practicado las técnicas esenciales para seleccionar subconjuntos de datos de un DataFrame de Pandas. Has cubierto:

  • Indexación Booleana: Filtrar datos basándose en una única condición (por ejemplo, df[df['Age'] > 30]).
  • Combinación de Filtros: Usar el operador & (AND) para aplicar múltiples condiciones simultáneamente, recordando encerrar cada condición entre paréntesis.
  • Coincidencia de Valores con isin(): Filtrar eficientemente las filas donde el valor de una columna coincide con cualquier valor de una lista dada.
  • Manejo de Datos Faltantes: Usar el método notnull() para eliminar filas con valores NaN.
  • Conteo de Filas Filtradas: Usar la función len() para obtener el número de filas en un DataFrame filtrado.

Estas habilidades de filtrado son fundamentales para casi todas las tareas de análisis de datos. Dominarlas te permitirá explorar y preparar eficazmente tus conjuntos de datos para análisis y visualización posteriores. Sigue practicando estas técnicas para volverte más competente con Pandas.