Eliminar Columnas en Pandas: Una Guía Completa para drop columns pandas
Pandas es una biblioteca de Python esencial para el análisis de datos, y la manipulación de DataFrames es una de sus funciones más comunes. La eliminación de columnas es una tarea frecuente en el preprocesamiento de datos, y Pandas proporciona diferentes maneras de hacerlo. Esta guía te ofrece un desglose completo de las técnicas para drop columns pandas, cubriendo desde los métodos básicos hasta casos más específicos.
drop columns pandas con la función .drop()
La función .drop() es la herramienta principal para drop columns pandas. Acepta dos argumentos principales: el nombre o los nombres de las columnas a eliminar y el eje a lo largo del cual se realiza la eliminación (por defecto, axis=1 para eliminar columnas). La función .drop() devuelve una copia modificada del DataFrame original, manteniendo el DataFrame original intacto.
Eliminar una sola columna
Para eliminar una sola columna, simplemente especifica su nombre dentro de la función .drop():
«`python
import pandas as pd
data = {‘nombre’: [‘Alice’, ‘Bob’, ‘Charlie’],
‘edad’: [25, 30, 28],
‘ciudad’: [‘New York’, ‘Los Ángeles’, ‘Chicago’]}
df = pd.DataFrame(data)
Eliminar la columna ‘edad’
dfsinedad = df.drop(‘edad’, axis=1)
print(dfsinedad)
«`
En este ejemplo, df.drop('edad', axis=1) elimina la columna ‘edad’ del DataFrame, creando un nuevo DataFrame llamado df_sin_edad. El DataFrame original, df, permanece sin cambios.
Eliminar múltiples columnas
Puedes eliminar varias columnas especificando una lista de nombres de columnas:
«`python
Eliminar las columnas ‘edad’ y ‘ciudad’
dfsinedadciudad = df.drop([‘edad’, ‘ciudad’], axis=1)
print(dfsinedadciudad)
«`
En este caso, la función .drop() recibe una lista con los nombres de las columnas a eliminar, creando un nuevo DataFrame que contiene solo la columna ‘nombre’.
Eliminar columnas «en su lugar»
Si deseas modificar el DataFrame original directamente, puedes usar el parámetro inplace=True:
«`python
Eliminar la columna ‘edad’ en el DataFrame original
df.drop(‘edad’, axis=1, inplace=True)
print(df)
«`
Al establecer inplace=True, la función .drop() realiza la eliminación en el DataFrame original, modificando su contenido. Ya no se necesita crear un nuevo DataFrame.
Suprimir errores con el parámetro errors
Por defecto, si intentas eliminar una columna que no existe, la función .drop() lanza un error. Para evitar esto, puedes utilizar el parámetro errors='ignore':
«`python
Intentar eliminar la columna ‘no_existe’, ignorando el error
df.drop(‘no_existe’, axis=1, errors=’ignore’)
print(df)
«`
Con errors='ignore', la función .drop() simplemente ignora la solicitud de eliminar la columna inexistente.
Eliminar columnas por posición de índice
Si necesitas eliminar columnas por su posición de índice, puedes usar el parámetro columns con una lista de índices:
«`python
Eliminar la columna en el índice 1
df.drop(columns=[1], axis=1)
print(df)
«`
Este código elimina la columna en el índice 1, en este caso, la columna ‘edad’, sin importar su nombre.
Eliminar columnas en DataFrames multi-índice
En DataFrames multi-índice, puedes eliminar columnas especificando la posición del nivel en el que se encuentra la columna, utilizando el parámetro level:
«`python
Crear un DataFrame multi-índice
data = {‘nombre’: [‘Alice’, ‘Bob’, ‘Charlie’],
‘edad’: [25, 30, 28],
‘ciudad’: [‘New York’, ‘Los Ángeles’, ‘Chicago’]}
df = pd.DataFrame(data)
df = df.set_index([‘nombre’, ‘edad’])
Eliminar la columna en el nivel 0 del índice
df.drop(columns=[‘ciudad’], level=0)
print(df)
«`
Este ejemplo elimina la columna ‘ciudad’, ubicada en el nivel 0 del índice multi-nivel del DataFrame.
Alternativas a .drop()
Además de .drop(), existen otras formas de eliminar columnas en Pandas:
La función .pop()
La función .pop() elimina una columna específica y la devuelve como una nueva Series. Esta función modifica el DataFrame original:
«`python
Eliminar la columna ‘ciudad’ y obtenerla como Series
columnaciudad = df.pop(‘ciudad’)
print(columnaciudad)
print(df)
«`
La función .loc
Puedes usar .loc para seleccionar y eliminar las columnas deseadas:
«`python
Eliminar las columnas ‘edad’ y ‘ciudad’
df.drop(df.loc[:, [‘edad’, ‘ciudad’]], axis=1, inplace=True)
print(df)
«`
La función del de Python
La función del de Python también puede usarse para eliminar columnas:
«`python
Eliminar la columna ‘edad’
del df[‘edad’]
print(df)
«`
Consideraciones adicionales
Al eliminar columnas en Pandas, considera lo siguiente:
- Copia vs. modificación «en su lugar»: Decide si deseas modificar el DataFrame original o crear una copia modificada.
- Manejo de errores: Puedes usar
errors='ignore'para evitar errores al intentar eliminar columnas inexistentes. - Multi-índices: Adapta el método de eliminación según la estructura del DataFrame multi-índice.
- Optimización: Si necesitas eliminar muchas columnas, considera métodos más eficientes, como la creación de una nueva lista de columnas y usar
.locpara seleccionar las que se deben mantener.
Conclusión
Eliminar columnas de DataFrames en Pandas es una operación común, y la función .drop() ofrece una forma versátil y flexible para hacerlo. Al comprender los distintos parámetros y opciones de uso de .drop(), así como las alternativas como .pop(), .loc, y la función del, puedes manejar la eliminación de columnas con precisión y eficiencia en tu flujo de trabajo de análisis de datos con Pandas.