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