Contenido del curso

NumPy

Pandas

Selección de Datos en Pandas: Uso de iLoc y loc

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:

  1. 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)
  2. Seleccionar múltiples filas:

    # Seleccionar las primeras cinco filas primeras_cinco_filas = retail_data.iloc[:5] print("Primeras cinco filas:\n", primeras_cinco_filas)
  3. 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)
  4. 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:

  1. 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)
  2. 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.

  3. 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())
  4. 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())
  5. 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

  1. 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.
  2. Inclusión del Último Índice:
    • iloc: excluye el último índice en un rango.
    • loc: incluye el último índice en un rango.

Ejercicio Práctico

  1. 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’.
  2. 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’.

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())