Data Science

Dominando Pandas: Selección Eficiente de Múltiples Columnas en DataFrames

Spread the love

Pandas es una poderosa biblioteca de Python para la manipulación y el análisis de datos. Una tarea común implica seleccionar columnas específicas de un DataFrame. Este artículo explora métodos eficientes y claros para seleccionar múltiples columnas, destacando las mejores prácticas.

Tabla de contenido:

Usando la sintaxis Getitem

El enfoque más simple utiliza la sintaxis getitem ([]). Proporcione una lista de nombres de columna para seleccionar esas columnas.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Seleccionar 'col1', 'col3', y 'col4'
selected_columns = ['col1', 'col3', 'col4']
selected_df = df[selected_columns]
print(selected_df)

Esto es conciso y legible, pero asegúrese de que todas las columnas enumeradas existan en el DataFrame; de lo contrario, se producirá un KeyError.

Usando iloc()

iloc() utiliza indexación basada en enteros. Seleccione las columnas proporcionando una lista de sus posiciones de enteros (recordando que Python utiliza la indexación basada en cero).


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Seleccionar columnas en los índices 0, 2 y 3
selected_df = df.iloc[:, [0, 2, 3]]  # : selecciona todas las filas, [0, 2, 3] selecciona las columnas 0, 2 y 3
print(selected_df)

El : selecciona todas las filas. iloc() es útil cuando se desconocen los nombres de las columnas, pero los índices están disponibles.

Usando loc()

loc() utiliza etiquetas (nombres de columna). Si bien es similar a getitem para múltiples columnas, loc proporciona mayor flexibilidad para selecciones combinadas de filas y columnas.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Seleccionar 'col1', 'col3', y 'col4'
selected_df = df.loc[:, ['col1', 'col3', 'col4']]  # : selecciona todas las filas, ['col1', 'col3', 'col4'] selecciona las columnas especificadas
print(selected_df)

loc indica explícitamente la selección basada en etiquetas, lo cual es beneficioso cuando se combina con la selección de filas usando etiquetas o indexación booleana.

Indexación booleana para la selección de columnas

Para escenarios más complejos, la indexación booleana con loc permite seleccionar columnas basadas en condiciones aplicadas a sus nombres.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12], 'other_col': [13,14,15]}
df = pd.DataFrame(data)

# Seleccionar columnas que comienzan con 'col'
selected_df = df.loc[:, [col.startswith('col') for col in df.columns]]
print(selected_df)

Consideraciones de rendimiento

En general, getitem es el más rápido, seguido de loc y luego iloc. Sin embargo, las diferencias suelen ser insignificantes a menos que se trate de DataFrames masivos. Priorice la legibilidad y el mantenimiento sobre las pequeñas ganancias de rendimiento.

Conclusión

Seleccionar múltiples columnas es fundamental en Pandas. Getitem es el más simple para nombres de columnas conocidos. iloc() se adapta a la indexación basada en enteros, mientras que loc() proporciona flexibilidad y se prefiere para la selección basada en etiquetas. El mejor método depende de sus necesidades específicas y la estructura de sus datos.

Preguntas frecuentes

  • P: ¿Qué sucede si selecciono una columna que no existe?
    R: Getitem y loc generan un KeyError. iloc genera un IndexError si el índice está fuera de los límites.
  • P: ¿Puedo seleccionar columnas basadas en una condición?
    R: Sí, use la indexación booleana con loc (como se muestra arriba).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *