Selección de Datos en Pandas: Uso de iLoc y loc
Clase 15 de 32 • Curso de Python para Ciencia de Datos
Resumen
Seleccionar datos es una operación fundamental en cualquier análisis de datos. En Pandas, las dos formas más comunes de seleccionar datos son iloc
y loc
.
iloc[]
- Indexación por Enteros
iloc
se utiliza para la indexación basada en enteros, permitiendo seleccionar filas y columnas por su posición.
Ejemplos de uso de iloc
:
-
Seleccionar una fila específica:
import pandas as pd file_path = "online_retail.csv" retail_data = pd.read_csv(file_path) # Seleccionar la primera fila primera_fila = retail_data.iloc[0] print("Primera fila:\n", primera_fila)
-
Seleccionar múltiples filas:
# Seleccionar las primeras cinco filas primeras_cinco_filas = retail_data.iloc[:5] print("Primeras cinco filas:\n", primeras_cinco_filas)
-
Seleccionar una fila y una columna específica:
# Seleccionar el valor en la primera fila y tercera columna valor = retail_data.iloc[0, 2] print("Valor en la primera fila y tercera columna:", valor)
-
Seleccionar múltiples filas y columnas:
# Seleccionar las primeras cinco filas y las primeras tres columnas subset = retail_data.iloc[:5, :3] print("Subset de las primeras cinco filas y tres columnas:\n", subset)
loc[]
- Indexación por Etiquetas
loc
se utiliza para la indexación basada en etiquetas, permitiendo seleccionar filas y columnas por sus nombres.
Ejemplos de uso de loc
:
-
Seleccionar una fila específica por su índice:
# Seleccionar la fila con índice 3 fila_indice_3 = retail_data.loc[3] print("Fila con índice 3:\n", fila_indice_3)
-
Seleccionar múltiples filas por sus índices:
# Seleccionar filas con índices de 0 a 4 filas_indices_0_a_4 = retail_data.loc[0:4] print("Filas con índices de 0 a 4:\n", filas_indices_0_a_4)
Nota: Con
loc
, el índice final es inclusivo.retail_data.loc[0:4]
selecciona 5 filas, incluyendo la fila con índice 4. -
Seleccionar una columna específica por su nombre:
# Seleccionar la columna 'Quantity' columna_quantity = retail_data.loc[:, 'Quantity'] print("Columna 'Quantity':\n", columna_quantity.head())
-
Seleccionar múltiples columnas por sus nombres:
# Seleccionar las columnas 'Quantity' y 'UnitPrice' columnas_quantity_unitprice = retail_data.loc[:, ['Quantity', 'UnitPrice']] print("Columnas 'Quantity' y 'UnitPrice':\n", columnas_quantity_unitprice.head())
-
Seleccionar columnas por rango de nombres:
# Seleccionar columnas por rango de nombres subset_columns = retail_data.loc[:, 'Column1':'Column5'] print("Columnas desde 'Column1' hasta 'Column5':\n", subset_columns.head())
Diferencias Clave entre iloc
y loc
- Basado en Enteros vs. Etiquetas:
iloc
: selecciona datos por posición usando índices enteros.loc
: selecciona datos por etiquetas usando nombres de índices y columnas.
- Inclusión del Último Índice:
iloc
: excluye el último índice en un rango.loc
: incluye el último índice en un rango.
Ejercicio Práctico
- Seleccionar Subconjuntos de Datos:
- Utiliza
iloc
para seleccionar las primeras 10 filas y las primeras 2 columnas del dataset de retail. - Utiliza
loc
para seleccionar todas las filas y las columnas ‘Quantity’ y ‘UnitPrice’.
- Utiliza
- Acceso Específico:
- Utiliza
iloc
para seleccionar el valor en la quinta fila y la segunda columna. - Utiliza
loc
para seleccionar todas las filas donde el país es ‘United Kingdom’ y mostrar las columnas ‘Quantity’ y ‘UnitPrice’.
- Utiliza
Código de Ejemplo
import pandas as pd
# Leer el dataset de retail desde un archivo CSV
file_path = "online_retail.csv"
retail_data = pd.read_csv(file_path)
# Seleccionar las primeras 10 filas y las primeras 2 columnas utilizando iloc
subset_iloc = retail_data.iloc[:10, :2]
print("Primeras 10 filas y 2 columnas utilizando iloc:\n", subset_iloc)
# Seleccionar todas las filas y las columnas 'Quantity' y 'UnitPrice' utilizando loc
subset_loc = retail_data.loc[:, ['Quantity', 'UnitPrice']]
print("Columnas 'Quantity' y 'UnitPrice' utilizando loc:\n", subset_loc.head())
# Seleccionar el valor en la quinta fila y la segunda columna utilizando iloc
valor_iloc = retail_data.iloc[4, 1]
print("Valor en la quinta fila y segunda columna utilizando iloc:", valor_iloc)
# Seleccionar todas las filas donde el país es 'United Kingdom' y mostrar las columnas 'Quantity' y 'UnitPrice' utilizando loc
subset_uk = retail_data.loc[retail_data['Country'] == 'United Kingdom', ['Quantity', 'UnitPrice']]
print("Filas de 'United Kingdom' con columnas 'Quantity' y 'UnitPrice' utilizando loc:\n", subset_uk.head())