Cómo cambiar el nombre de las columnas de pandas [4 Examples]

Cambiar el nombre de las columnas en un marco de datos de pandas es una operación común. Aprenda los cuatro métodos diferentes para cambiar el nombre de las columnas de pandas.

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

Con pandas, puedes:

  • Ingerir datos de varias fuentes
  • Explore el conjunto de datos y maneje los valores faltantes en él
  • Analice el conjunto de datos para obtener información

Para 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 diversos campos o atributos a lo largo de las columnas.

Sin embargo, es posible que deba cambiar el nombre de las columnas para hacerlos más descriptivos y mejorar la legibilidad. Aquí, aprenderá cuatro formas diferentes de cambiar el nombre de las columnas. ¡Vamos a empezar!

Creación de un marco de datos de pandas

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

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

Aquí hay un diccionario book_dict:

books_dict = {
    "one": [
        "Atomic Habits",
        "His Dark Materials",
        "The Midnight Library",
        "The Broken Earth",
        "Anxious People",
    ],
    "two": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
    "four": [4, 5, 3, 5, 4],
}

Primero importaremos pandas y luego crearemos un dataframe df desde books_dict.

import pandas as pd

Nota: Seguiremos volviendo a la siguiente celda de código, para crear una versión inicial del marco de datos, antes de cambiar el nombre de las columnas.

df = pd.DataFrame(books_dict)

Podemos usar df.head() para obtener las primeras filas del marco de datos df. De forma predeterminada, devuelve las primeras cinco filas. Aquí el df tiene solo cinco filas; entonces, cuando usamos df.head(), obtenemos el marco de datos completo.

df.head()

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

Ahora veamos los diversos métodos para cambiar el nombre de las columnas en pandas:

  • Establecer el atributo de columnas del marco de datos en la lista de nuevos nombres de columna
  • Usando el método de cambio de nombre () en el marco de datos
  • Usando str.replace para cambiar el nombre de una o más columnas
  • Usando el método set_axis() en el marco de datos

Configuración del atributo de las columnas

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

df.columns
# Index(['one', 'two', 'three', 'four'], dtype="object")

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

df.columns = ['Title','Author','Genre','Rating']
df.head()

Usando el método renombrar()

Para cambiar el nombre de las columnas en pandas, puede usar el método rename() con la sintaxis:

df.rename(column={mapping})

Este mapeo puede ser un diccionario que tiene la siguiente forma:

{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}

Vamos a crear df a partir del diccionario books_dict:

df = pd.DataFrame(books_dict)

Usando 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={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()

Entonces se modifican los nombres de las columnas de df_1:

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

df.head()

Debido a que este método nos permite proporcionar una asignación entre los nombres de columna antiguos y nuevos, podemos usarlo para cambiar el nombre de columnas únicas y múltiples.

Cambiar el nombre de las columnas en el lugar

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

Para hacer esto, puede establecer en lugar 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 cambiará el nombre de las columnas del marco de datos original df:

Hasta ahora hemos visto cómo:

  • Cambie el nombre de las columnas proporcionando un diccionario que asigne los nombres de las columnas antiguas a los nombres de las columnas nuevas
  • Cambiar el nombre de las columnas en su lugar sin crear un nuevo marco de datos

También puede usar el método de cambio de nombre de otra manera.

Otro enfoque para cambiar el nombre de las columnas

Cambiemos el nombre de las columnas para que estén en mayúsculas:

df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']
df.head()

El marco de datos df ahora se ve así:

Supongamos que queremos cambiar cada uno de estos nombres de columna para que estén en el título. En lugar de proporcionar un diccionario para cada nombre de columna, podemos especificar una llamada de método o función en un objeto como se muestra:

df.rename(str.title,axis="columns",inplace=True)
df.head()

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

Usando str.replace() en las cadenas de nombre de columna

Como siempre, ejecute la siguiente celda de código para crear el marco de datos 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 necesarios. Aquí hay un ejemplo:

>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'

Sabe que el atributo de columnas contiene una lista de cadenas que contienen los nombres de las columnas. Entonces puede llamar a str.replace(‘old_column_name’,’new_column_name’) así:

df.columns = df.columns.str.replace('one','Title')
df.head()

Aquí renombramos solo la columna ‘uno’ a ‘Título’, por lo que los otros nombres de columna permanecen sin cambios.

Ahora cambiemos el nombre de las otras columnas usando el mismo enfoque:

df.columns = df.columns.str.replace('two','Author')
df.columns = df.columns.str.replace('three','Genre')
df.columns = df.columns.str.replace('four','Rating')
df.head()

Este método de cambiar el nombre de las columnas es útil cuando necesita cambiar el nombre de solo una o un pequeño subconjunto de las columnas.

Usando el método set_axis()

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

df = pd.DataFrame(books_dict)

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

df.set_axis([list_of_column_names],axis="columns")

De forma predeterminada, el método set_axis() devuelve la copia del marco de datos. Pero si desea modificar el marco de datos en su lugar, puede configurar la copia en Falso.

df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False)
df.head()

Conclusión

Aquí hay una revisión de los diferentes métodos para cambiar el nombre de las columnas en un marco de datos de pandas:

  • Para un marco de datos de muestra df, el atributo de columnas df.columns es la lista de nombres de columna. Para cambiar el nombre de las columnas, puede establecer este atributo en la lista de nuevos nombres de columna.
  • El método rename() para cambiar el nombre de las columnas funciona con la sintaxis: df.rename(columns={mapping}) donde mapeo se refiere al mapeo de los nombres de las columnas antiguas a los nombres de las columnas nuevas. También puede usar el método renombrar() especificando una función que se aplicará a todos los nombres de columna: df.rename(llamada a función o método, eje=’columnas’).
  • De la misma manera que usa el método replace() en una cadena de Python, puede usar df.columns.str.replace(‘old_column_name’, ‘new_column_name’) para reemplazar los nombres de las columnas.
  • Otro enfoque para cambiar el nombre de las columnas es usar el método set_axis con la sintaxis: df.set_axis(list_of_col_names,axis=’columns’).

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