Original article: Dataframe Drop Column in Pandas – How to Remove Columns from Dataframes
En Pandas, a veces necesitarás eliminar columnas de un Marco de Datos por varias razones, como limpiar datos, reducir el uso de memoria o simplificar el análisis. Es por ello que en este artículo, te mostraré cómo hacerlo.
Comenzaré presentando el método .drop()
que es el método principal para eliminar columnas en Pandas.
Repasaremos la sintaxis y los parámetros del método .drop()
, incluyendo cómo especificar las columnas a eliminar y cómo controlar si el Marco de Datos original se modifica en su lugar o se devuelve un nuevo Marco de Datos.
A continuación, proporcionaré un ejemplo de cómo usar el método .drop()
para eliminar columnas de un Marco de Datos.
Cómo usar el método .drop()
en Pandas
El método .drop()
es una función incorporada en Pandas que te permite eliminar una o más filas o columnas de un Marco de Datos.
Devuelve un nuevo Marco de Datos con las filas o columnas especificadas eliminadas y no modifica el Marco de Datos original en su lugar, a menos que establezcas el parámetro inplace
en True
.
La sintaxis para usar el método .drop()
es la siguiente:
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
Aquí, DataFrame se refiere al Marco de Datos de Pandas del cual deseas eliminar filas o columnas. Los parámetros que puedes usar con el método .drop()
incluyen:
labels
: Este parámetro especifica las etiquetas o índices de las filas o columnas que se van a eliminar. Puedes pasar una sola etiqueta o índice, o una lista de etiquetas o índices.axis
: Este parámetro especifica si se van a eliminar filas o columnas. Por defecto, está configurado en0
, lo que significa que se eliminan filas. Si deseas eliminar columnas, configúralo en1
.index
ycolumns
: Estos parámetros son alternativas al parámetro de etiquetas y especifican las etiquetas o índices de las filas o columnas que se van a eliminar, respectivamente.level
: Este parámetro se utiliza para eliminar un nivel específico de un índice jerárquico.inplace
: Este parámetro es un valor booleano que determina si modificar el DataFrame original en su lugar. Por defecto, está configurado enFalse
.errors
: Este parámetro especifica cómo manejar errores si la(s) etiqueta(s) o índice(s) especificado(s) no se encuentran en el DataFrame. Por defecto, está configurado enraise
, lo que significa que se genera unKeyError
. Otras opciones sonignore
ywarn
, que respectivamente ignorarán o mostrarán una advertencia cuando la etiqueta o índice no se encuentre.
Cómo eliminar una sola columna de un Marco de Datos en Pandas
Vamos a empezar suavemente aprendiendo primero cómo eliminar una sola columna de un Marco de Datos antes de eliminar múltiples columnas.
Muestra del código:
#Traducción al español del código
import pandas as pd
#Creamos un marco de datos de muestra
datos = {"nombre": ['Alicia', 'Bob', 'Charlie'],
"edad": [25, 30, 35],
"género": ['F', 'M', 'M']
}
df = pd.DataFrame(datos)
# Mostramos el Marco de Datos original
print("DataFrame Original:\n", df)
# Damos drop a la columna "género"
df = df.drop(columns=['género'])
# Mostramos el Marco de Datos modificado
print("DataFrame Modificado:\n", df)
Resultado:
DataFrame Original:
nombre edad género
0 Alicia 25 F
1 Bob 30 M
2 Charlie 35 M
DataFrame Modificado:
nombre edad
0 Alicia 25
1 Bob 30
2 Charlie 35
En el ejemplo anterior, primero creamos un Marco de Datos de muestra con tres columnas: nombre
, edad
y género
. Luego utilizamos el método .drop()
con el parámetro columns
para eliminar la columna género
. El Marco de Datos resultante solo contiene las columnas nombre
y edad
.
Es importante tener en cuenta que el método .drop()
no modifica el Marco de Datos original en su lugar. En su lugar, devuelve un nuevo Marco de Datos con la(s) columna(s) especificada(s) eliminada(s). Si deseas modificar el Marco de Datos original, necesitas asignar el resultado del método .drop()
de nuevo a la variable original, como hicimos en el ejemplo anterior.
Además del parámetro columns
, el método .drop()
también tiene varios otros parámetros opcionales que puedes usar para controlar cómo se eliminan las columnas.
Por ejemplo, puedes usar el parámetro inplace
para modificar el Marco de Datos original en su lugar en lugar de devolver un nuevo Marco de Datos. También puedes usar el parámetro axis
para eliminar columnas por índice en lugar de por nombre.
Cómo eliminar varias columnas de un Marco de Datos en Pandas
En esta sección, eliminaremos varias columnas de nuestro Marco de Datos. Este enfoque es similar a eliminar una sola columna del Marco de Datos.
Para eliminar dos o más columnas de un Marco de Datos usando el método .drop()
en Pandas, podemos pasar una lista de nombres de columnas al parámetro columns
del método.
import pandas as pd
# creando -otra vez- un Marco de Datos
datos = {'nombre': ['John', 'Maria', 'Pedro'],
'edad': [30, 25, 35],
'género': ['M', 'F', 'M'],
'ciudad': ['Ciudad de México', 'San José', 'Buenos Aires']}
df = pd.DataFrame(datos)
# Removiendo las columnas género y ciudad
df.drop(columns=['género', 'ciudad'], inplace=True)
# Damos print en el Marco de Datos modificado
print(df)
Resultado:
nombre edad
0 John 30
1 Maria 25
2 Pedro 35
Explicación del código:
En este ejemplo, primero creamos un Marco de Datos de muestra con cuatro columnas: nombre
, edad
, género
y ciudad
. Luego, usamos el método .drop() para eliminar las columnas ciudad
y género
pasando una lista con sus nombres al parámetro columns
.
Finalmente, establecemos el parámetro inplace
en True
para modificar el Marco de Datos original e imprimir el Marco de Datos modificado.
Ten en cuenta que también puedes eliminar columnas por sus índices pasando una lista de índices al parámetro columns
. Por ejemplo, para eliminar la segunda y tercera columnas, puedes usar:
df.drop(columns=df.columns[1:3], inplace=True)
Esto eliminará las columnas con índices 1 y 2 (que son las columnas de edad
y género
en este ejemplo).
Conclusión
Espero que este artículo sea un recurso útil para cualquier persona que trabaje con Marco de Datos de Pandas y necesite eliminar columnas de manera eficiente y efectiva.
¡Conéctate conmigo en Twitter y LinkedIn! También puedes suscribirte a mi canal de YouTube.
¡Feliz Codificación!