Skip to content
Tutoriales
Pandas
Uso de DataFrame.loc para acceder y manipular datos en Pandas

Uso de DataFrame.loc para acceder y manipular datos en Pandas

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!

Ejecutar PyGWalker en Notebook de Kaggle (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Darle una ⭐️ a PyGWalker en GitHub (opens in a new tab)
Ejecutar PyGWalker en Notebook de Kaggle (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)

¿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.