Python

¿Cómo cambiar el nombre de las columnas en Pandas?

En los DataFrame de Pandas los nombres de las columnas permiten identificar rápidamente el contenido de estas. Por eso saber como cambiar el nombre de las columnas en Pandas puede ser importante ya que en muchas ocasiones puede que se incluyan en el archivo de datos. O simplemente sean nombres crípticos que se desea cambiar. Además de las columnas también se puede asignar un nombre a las filas de un DataFrame. A continuación, se va a explicar cómo modificar tanto los nombres de las columnas como las filas en los DataFrame de Pandas.

A modo de ejemplo en esta entrada se utilizará el conjunto de datos de exoplanetas que se puede encontrar en la librería Seaborn. Para importarlo se ha de importar la librería y utilizas la función load_dataset() como se muestra en el siguiente ejemplo

import seaborn as sb

planets = sb.load_dataset('planets')
planets.head()
            method  number  orbital_period   mass  distance  year
0  Radial Velocity       1         269.300   7.10     77.40  2006
1  Radial Velocity       1         874.774   2.21     56.95  2008
2  Radial Velocity       1         763.000   2.60     19.84  2011
3  Radial Velocity       1         326.030  19.40    110.62  2007
4  Radial Velocity       1         516.220  10.50    119.47  2009

Cambiar el nombre de todas las columnas

Los nombres de las columnas de un DataFrame se pueden obtener mediante la propiedad columns. Así, para nuestro conjunto de ejemplo se puede ver que estas son

planets.columns
Index(['method', 'number', 'orbital_period', 'mass', 'distance', 'year'], dtype='object')

Ahora, si se desea traducir los nombres de las columnas, simplemente es necesario asignar un nuevo vector con los nombres.

planets.columns = ['método', 'número', 'periodo_orbital', 'masa', 'distancia', 'año']
planets.columns
Index(['método', 'número', 'periodo_orbital', 'masa', 'distancia', 'año'], dtype='object')

Cambiar solamente ciertas columnas

El método anterior permite cambiar el nombre de todas las columnas, pero esto no es lo que se busca en muchas ocasiones. Para cambiar solamente el nombre de unas columnas los DataFrame existe el método rename(). Este método requiere que se le asigne un diccionario con el nombre original como clave y el nuevo nombre como valor. Ahora se puede cambiar los nombres por otros más largos.

planets2 = planets.rename(columns={'periodo_orbital':'periodo orbital',
                                   'método':'método descubrimiento'})

planets2.columns
Index(['método descubrimiento', 'número', 'periodo orbital', 'masa',
       'distancia', 'año'],
      dtype='object')

Al ejecutar el método se obtienen un nuevo DataFrame con los cambios, mientras que el original no se ve afectado. Para reducir el consumo de memoria se puede indicar que el cambio se realice en el objeto original asignando el valor verdadero a la propiedad inplace.

planets.rename(columns={'periodo_orbital':'periodo orbital',
                        'método':'método descubrimiento'},
               inplace=True)
planets.columns
Index(['método descubrimiento', 'número', 'periodo orbital', 'masa',
       'distancia', 'año'],
      dtype='object')

Cambiar el nombre de las filas

Por defecto el nombre de las filas es el índice de estas, pero esto no tiene porqué ser así. A las filas también se puede asignar un nombre. El método para hacer esto es también rename() solo que en este caso el diccionario con los cambios se ha de asignar a la propiedad index. Así para asignar un nombre a los dos primeros planteas se puede utilizar.

planets.rename(index={0:'Planet 1',1:'Planet 2'}, inplace=True)
planets.head()
                   method  number  orbital_period   mass  distance  year
Planet 1  Radial Velocity       1         269.300   7.10     77.40  2006
Planet 2  Radial Velocity       1         874.774   2.21     56.95  2008
2         Radial Velocity       1         763.000   2.60     19.84  2011
3         Radial Velocity       1         326.030  19.40    110.62  2007
4         Radial Velocity       1         516.220  10.50    119.47  2009

Cambiar al mismo tiempo columnas y filas

El cambio de los nombres de columnas y filas en los DataFrame se puede realizar al mismo tiempo. El método rename() puede leer un diccionario para las columnas y otro para las filas al mismo tiempo. El diccionario con los nombres de columnas se tiene que asignar a la propiedad columns, mientras que los índices a la propiedad index.

planets.rename(columns={'periodo_orbital':'periodo orbital',
                        'método':'método descubrimiento'},
               index={0:'cero',1:'uno'},
               inplace=True)

Conclusiones

En esta entrada se ha visto cómo modificar el nombre de las filas o columnas en DataFrame de Pandas. Saber cómo cambiar el nombre de las columnas en Pandas es clave para disponer de unos conjuntos de datos en los que sea fácil reconocer su contenido. Además de esto saber asignar un nombre a las filas también es de ayuda al trabajar con datos.

Imágenes: Pixabay (rawpixel)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Pandas

Recent Posts

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 día ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

2 días ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

6 días ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

1 semana ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

2 semanas ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

2 semanas ago

This website uses cookies.