Renombrar columnas en un marco de datos pandas es una operación común. Aprenda los cuatro métodos diferentes para renombrar columnas de pandas.

Pandas es una popular biblioteca de Python para el análisis de datos. Los datos que necesitamos analizar a menudo están disponibles en diferentes formatos, incluyendo archivos csv y tsv, bases de datos relacionales y más. Y usted necesita hacer algunas comprobaciones preliminares en los datos, manejar los valores que faltan, y preparar los datos para su posterior análisis.

Con pandas, usted puede

  • Ingerir datos de diversas fuentes
  • Explorar el conjunto de datos y manejar los valores que faltan en él
  • Analizar el conjunto de datos para obtener información

En todos los proyectos de análisis de datos, a menudo creará marcos de datos a partir de estructuras de datos de Python, como un diccionario. O leerá datos de otras fuentes, como un archivo csv en un marco de datos.

El marco de datos es la estructura de datos básica en pandas. Contiene los registros a lo largo de las filas y los distintos campos o atributos a lo largo de las columnas.

Sin embargo, puede que tenga que renombrar los nombres de las columnas para hacerlos más descriptivos y mejorar la legibilidad. Aquí aprenderá cuatro formas diferentes de renombrar columnas. Comencemos

Creación de un DataFrame Pandas

Puede seguir el tutorial en un entorno de cuaderno Jupyter con pandas instalado. O puede seguirlo en Google Colab.

En primer lugar, crearemos un marco de datos de pandas y trabajaremos con él durante el resto del tutorial.

Aquí tenemos un diccionario book_dict:

diccionario_libros = {
    "uno": [
        "Hábitos atómicos",
        "Sus materiales oscuros",
        "La biblioteca de medianoche",
        "La tierra rota",
        "Gente ansiosa",
    ],
    "dos": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "tres": ["No ficción", "Fantasía", "Realismo mágico", "Fantasía", "Ficción"],
    "cuatro": [4, 5, 3, 5, 4],
}

Primero importaremos pandas y luego crearemos un marco de datos df a partir de books_dict.

importar pandas como pd

Nota: Volveremos a la siguiente celda de código -para crear una versión inicial del marco de datos- antes de renombrar las columnas.

df = pd.DataFrame(books_dict)

Podemos utilizar df.head() para obtener las primeras filas del marco de datos df. Por defecto, devuelve las cinco primeras filas. Aquí el df sólo tiene cinco filas, por lo que al utilizar df.head() obtenemos el marco de datos completo.

df.head()
image-230

Vemos que los nombres de las columnas son actualmente las claves del diccionario. Pero esto no es muy descriptivo. Así que ¡vamos a cambiarles el nombre! 👩‍🏫

Métodos para renombrar columnas en Pandas

Veamos ahora los distintos métodos para renombrar columnas en pandas:

  • Estableciendo el atributo columns del marco de datos a la lista de nuevos nombres de columnas
  • Utilizando el método rename() en el marco de datos
  • Utilizando str.replace para renombrar una o más columnas
  • Utilizando el método set_axis( ) en el marco de datos

Establecer el atributo columns

Para cualquier marco de datos, el atributo columns contiene la lista de nombres de columnas:

df.columnas
# Index(['uno', 'dos', 'tres', 'cuatro'], dtype='objeto')

Cambiemos el nombre de las columnas para denotar lo que representa cada campo y luego llamemos a df.head() para ver los resultados:

df.columns = ['Título','Autor','Género','Valoración']
df.head()
image-231

Uso del método rename()

Para renombrar columnas en pandas, puede utilizar el método rename () con la sintaxis

df.rename(columna={mapeo})

Este mapeo puede ser un diccionario de la siguiente forma

{'antiguo_nombre_col_1':'nuevo_nombre_col_1', 'antiguo_nombre_col_2':'nuevo_nombre_col_2',...,
'antiguo_nombre_col_n':'nuevo_nombre_col_n'}

Creemos df a partir del diccionario books_dict:

df = pd.DataFrame(books_dict)

Utilizando el método rename() con la sintaxis anterior, obtenemos df_1. Que es una copia del marco de datos con las columnas renombradas.

df_1 = df.rename(columns={'uno':'Título','dos':'Autor','tres':'Género','cuatro':'Valoración'})
df_1.head()

Así se modifican los nombres de las columnas de df_1:

image-232

Pero los nombres de las columnas del marco de datos original df no cambian:

df.head()
image-233

Dado que este método nos permite proporcionar un mapeo entre los nombres de columna antiguos y los nuevos, podemos utilizarlo para renombrar tanto columnas individuales como múltiples.

Renombrar columnas in situ

¿Qué ocurre si desea modificar el marco de datos existente sin crear una nueva copia?

Para ello puede establecer inplace igual a True en la llamada al método.

df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()

Esto renombrará las columnas del marco de datos original df:

rename-pandas-columns

Hasta ahora hemos visto cómo

  • Renombrar columnas proporcionando un diccionario que mapea los nombres de las columnas antiguas a los nombres de las columnas nuevas
  • Renombrar columnas in situ sin crear un nuevo marco de datos

También puede utilizar el método de renombrado de otra forma.

Otro enfoque para renombrar columnas

Vamos a renombrar las columnas para que estén en mayúsculas:

df = pd.DataFrame(libros_dict)
df.columns = ['TITULO','AUTOR','GENERO','VALORACION']
df.head()

El marco de datos df tiene ahora este aspecto:

image-234

Supongamos que queremos cambiar cada uno de los nombres de estas columnas para que estén en mayúsculas y minúsculas. En lugar de proporcionar un diccionario para cada nombre de columna, podemos especificar una llamada a una función o método sobre un objeto como se muestra:

df.rename(str.title,axis='columnas',inplace=True)
df.head()
rename-pandas-columns

Aquí, establecemos el eje en ‘columnas ' y utilizamos str. title para convertir todos los nombres de las columnas al caso del título.

Uso de str.replace() en las cadenas de nombres de columnas

Como siempre, ejecute la siguiente celda de código para crear el marco de datos a partir del diccionario:

df = pd.DataFrame(books_dict)

En Python, habría utilizado el método replace () con la sintaxis str.replace(this, with_this) para obtener una copia de una cadena con los cambios requeridos. He aquí un ejemplo:

>>> str1 = 'Maratón'
>>> str1.replace('Mara','Py')
'Python'

Ya sabe que el atributo columns contiene una lista de cadenas con los nombres de las columnas. Así que puede llamar a str.replace('nombre_columna_antigua','nombre_columna_nueva') de esta forma

df.columnas = df.columnas.str.replace('uno','Título')
df.head()
rename-pandas-columns

Aquí sólo hemos renombrado la columna ‘uno’ a ‘Título’, por lo que los demás nombres de columna permanecen inalterados.

Ahora vamos a renombrar las demás columnas utilizando el mismo método:

df.columnas = df.columnas.str.replace('dos','Autor')
df.columns = df.columns.str.replace('tres','Género')
df.columns = df.columns.str.replace('cuatro','Clasificación')
df.head()
image-232

Este método de renombrar columnas es útil cuando sólo necesita renombrar una o un pequeño subconjunto de las columnas.

Utilización del método set_axis()

Volvamos a la versión inicial de un marco de datos:

df = pd.DataFrame(libros_dict)

También puede utilizar el método set_axis () para cambiar el nombre de las columnas. La sintaxis es la siguiente

df.set_axis([lista_de_nombres_columna],eje='columnas')

Por defecto, el método set_axis () devuelve la copia del marco de datos. Pero si desea modificar el marco de datos in situ, puede establecer copy en False.

df = df.set_axis(['Título','Autor','Género','Valoración'],axis='columns',copy=False)
df.head()
rename-pandas-columns

Conclusión

Este es un repaso de los diferentes métodos para renombrar columnas en un marco de datos pandas:

  • Para un marco de datos de ejemplo df, el atributo columns df.columns es la lista de nombres de las columnas. Para renombrar las columnas, puede establecer este atributo a la lista de nuevos nombres de columnas.
  • El método rename () para renombrar columnas funciona con la sintaxis: df.rename(columns={mapping}) donde mapping se refiere al mapeo de los nombres de las columnas antiguas a los nombres de las columnas nuevas. También puede utilizar el método rename () especificando una función que se aplicará a todos los nombres de columna: df .rename(llamada a función o método, eje='columnas').
  • Del mismo modo que utiliza el método replace( ) en una cadena de Python, puede utilizar df .columns.str.replace('nombre_columna_antigua', 'nombre_columna_nueva') para sustituir los nombres de las columnas.
  • Otro enfoque para renombrar en columnas es utilizar el método set_axis con la sintaxis: df.set_axis(lista_de_nombres_columna,eje='columnas').

¡Eso es todo por este tutorial! Consulte la lista de cuadernos colaborativos para el análisis de datos.