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()
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()
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
:
Pero los nombres de las columnas del marco de datos original df
no cambian:
df.head()
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
:
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:
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()
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()
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()
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()
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 columnsdf.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})
dondemapping
se refiere al mapeo de los nombres de las columnas antiguas a los nombres de las columnas nuevas. También puede utilizar el métodorename
() 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.