Uso de DataFrame.loc para acceder y manipular datos en Pandas
Published on
La manipulación de datos es fundamental para cualquier proyecto de ciencia de datos, y la biblioteca Pandas es una de las herramientas más populares utilizadas para estas tareas. Dentro de Pandas, el método loc[] se utiliza a menudo para acceder y filtrar datos en un DataFrame por etiqueta o matriz booleana. En este artículo, profundizaremos en la sintaxis y ejemplos de uso de Pandas DataFrame loc[] y exploraremos sus ventajas sobre otros métodos.
¿Quieres crear rápidamente visualizaciones de datos en Python?
PyGWalker es un proyecto de Python de código abierto que puede ayudarte a acelerar el flujo de trabajo de análisis y visualización de datos directamente en entornos basados en Jupyter Notebook.
PyGWalker (opens in a new tab) convierte tu DataFrame de Pandas (o DataFrame de Polars) en una interfaz de usuario visual en la que puedes arrastrar y soltar variables para crear gráficos con facilidad. Simplemente usa el siguiente código:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Puedes ejecutar PyGWalker en este momento con estas notebooks en línea:
¡Y no olvides darnos una ⭐️ en GitHub!
¿Qué es Pandas DataFrame loc[]?
Pandas DataFrame loc[] es un método para seleccionar y filtrar datos en un DataFrame de Pandas. El método loc[] toma uno o dos argumentos, que pueden ser una etiqueta de fila o una matriz booleana. Cuando se proporciona una etiqueta de fila, loc[] devuelve un DataFrame que contiene la(s) fila(s) que coinciden con la etiqueta. Cuando se proporciona una matriz booleana, loc[] devuelve un DataFrame que contiene la(s) fila(s) donde la matriz booleana es True.
¿Cómo se usa Pandas DataFrame loc[]?
Acceder a filas y columnas por etiqueta(s) usando Pandas DataFrame loc[] es bastante sencillo. Aquí tienes un ejemplo:
import pandas as pd
# Crear un DataFrame de muestra
df = pd.DataFrame({'Edad': [23, 24, 25, 26],
'Nombre': ['John', 'Mike', 'Sarah', 'Rachel'],
'Marcas': [85, 90, 80, 95],
'ID': ['A101', 'A102', 'A103', 'A104']})
# Acceder a una fila usando la etiqueta de fila
fila = df.loc[1]
# Acceder a varias filas usando una lista de etiquetas de fila
filas = df.loc[[0, 2]]
# Acceder a una columna usando la etiqueta de columna
edades = df.loc[:, 'Edad']
# Acceder a varias columnas usando una lista de etiquetas de columna
subconjunto = df.loc[:, ['Nombre', 'Marcas']]
En el ejemplo anterior, hemos creado un DataFrame de muestra con cuatro filas y cuatro columnas. Usamos loc[] para acceder a filas y columnas por etiqueta(s). Cuando proporcionamos una única etiqueta a loc[], devuelve una Serie de pandas, y cuando se proporcionan varias etiquetas, devuelve un DataFrame.
También podemos filtrar filas basándonos en una condición dada usando loc[]. Aquí tienes un ejemplo:
# Filtrar filas basadas en una condición
df_filtrado = df.loc[df['Edad'] > 24]
En el ejemplo anterior, estamos usando loc[] para filtrar filas donde la columna Edad es mayor que 24.
¿Cuáles son las ventajas de usar Pandas DataFrame loc[]?
Una de las principales ventajas de usar Pandas DataFrame loc[] es su capacidad para manejar la indexación basada en etiquetas. Dado que la indexación basada en etiquetas es más intuitiva y legible que la indexación basada en enteros, el uso de loc[] puede hacer que tu código sea más expresivo y menos propenso a errores.
Otra ventaja de loc[] es que también puedes usarlo para asignar nuevos valores a un subconjunto del DataFrame.
# Cambiar valores para filas específicas
df.loc[0:1, 'Edad'] = 24
En el ejemplo anterior, estamos utilizando loc[] para cambiar el valor de Edad para las dos primeras filas del DataFrame.
¿En qué se diferencia Pandas DataFrame loc[] de Pandas iloc[]?
Pandas iloc[] es similar a loc[], pero en lugar de utilizar una indexación basada en etiquetas, iloc[] utiliza una indexación basada en enteros. Aquí tienes un ejemplo:
# Acceder a la primera fila usando iloc[]
df.iloc[0]
# Acceder a filas y columnas usando la posición entera
df.iloc[0:2, 1:3]
En el primer ejemplo, estamos accediendo a la primera fila del DataFrame utilizando iloc[]. En el segundo ejemplo, usamos iloc[] para acceder a un subconjunto del DataFrame utilizando posiciones enteras.
Si bien iloc[] es más rápido que loc[], es menos expresivo y puede dar lugar a errores si se modifica el DataFrame. Además, como iloc[] utiliza posiciones enteras, puede resultar confuso si el DataFrame está ordenado o modificado, mientras que loc[] es más robusto ante tales cambios.
¿Se pueden seleccionar/filtrar filas y columnas por nombres/etiquetas usando Pandas DataFrame loc[]?
Sí, puedes seleccionar/filtrar filas y columnas por etiquetas usando Pandas DataFrame loc[]. Aquí tienes un ejemplo:
# Filtrar filas usando la etiqueta de columna y una condición
filtered_df = df.loc[df['Name'] == 'Mike']
# Acceder a un subconjunto de filas y columnas usando etiquetas
subset_df = df.loc[0:1, ['Name', 'Age']]
En el primer ejemplo, estamos utilizando loc[] para filtrar filas basadas en una columna de condición utilizando una etiqueta de columna. En el segundo ejemplo, estamos accediendo a un subconjunto de filas y columnas utilizando loc[] y etiquetas de columna.
Conclusión
En este artículo, hemos explorado el método Pandas DataFrame loc[], su sintaxis y ejemplos, y sus ventajas sobre otros métodos. Hemos mostrado cómo loc[] se puede utilizar para acceder y filtrar datos basados en etiquetas o matrices booleanas, y cómo es diferente del indexado basado en enteros utilizando iloc[]. Al utilizar Pandas DataFrame loc[], puedes escribir un código más expresivo y robusto para el análisis y manipulación de datos en Python.