Función Pandas df.rename()

Pandas 常用函数Funciones comunes de Pandas


df.rename()Es la función en Pandas que se utiliza para renombrar los nombres de columnas o índices de un DataFrame.

En el análisis de datos, unos nombres de columnas e índices claros son muy importantes para la legibilidad y el mantenimiento del código.rename()Permite modificar de forma flexible los nombres de columnas e índices, haciendo que los datos sean más estandarizados y fáciles de entender. Esto es especialmente útil en la importación de datos, la limpieza y la generación de informes.


Sintaxis básica y parámetros

rename()Es una función miembro de DataFrame, mediante el operador punto.para invocarla.

Formato de sintaxis

DataFrame.rename(mapper=None, index=None, columns=None, axis=None, inplace=False, errors='ignore')

Descripción de parámetros

Parámetro Tipo Obligatorio Descripción Valor predeterminado
mapper dict o función Opcional Regla de mapeo para renombrar ejes (índices de filas o nombres de columnas). Puede ser un dict o una función. Se utiliza junto conaxisel parámetro. None
index dict o función Opcional Especifica directamente la regla de renombrado para los índices de fila. Tiene prioridad sobremapperyaxis。 None
columns dict o función Opcional Especifica directamente la regla de renombrado para los nombres de columnas. Tiene prioridad sobremapperyaxis。 None
axis int o str Opcional Especifica el eje que se va a renombrar.0o'index'Indica el índice de filas;1o'columns'Indica los nombres de columnas. None
inplace bool Opcional Si esTrue, modifica directamente el DataFrame original, no devuelve un nuevo objeto; si esFalse, devuelve un nuevo DataFrame, los datos originales no cambian. False
errors str Opcional Controla el manejo de errores.'raise'Indica que se lanza una excepción cuando no se encuentra la clave correspondiente;'ignore'Indica que se ignoran las claves inexistentes. 'ignore'

Descripción del valor de retorno

  • Devuelve un nuevo DataFrame (siinplace=False), oNone(siinplace=True)。
  • en el DataFrame devuelto, los nombres de columnas o índices han sido renombrados.

Ejemplos

A través de una serie de ejemplos, dominaremos por completorename()el uso de.

Ejemplo 1: Renombrar nombres de columnas

Usandocolumnsel parámetro se pueden renombrar fácilmente los nombres de columnas.

Ejemplo

import pandas as pd

# Crear un DataFrame
data = {
    'name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'age': [25, 30, 35],
    'salary': [5000, 6000, 7000]
}
df = pd.DataFrame(data)

print("datos originales:")
print(df)
print("=" * 50)

# Renombrar nombres de columnas usando un diccionario
df_renamed = df.rename(columns={
    'name': 'Nombre',
    'age': 'Edad',
    'salary': 'Salario'
})

print("Datos después de renombrar las columnas:")
print(df_renamed)

Resultado esperado:

原始数据:
   name  age  salary
0  张三   25   5000
1  李四   30   6000
2  王五   35   7000
==================================================
重命名列名后的数据:
    姓名  年龄   薪资
0  张三   25  5000
1  李四   30  6000
2  王五   35  7000

Análisis del código:

  1. Los nombres de columnas de los datos originales están en inglés; usamos un diccionario para renombrarlos al chino.
  2. Usandocolumnsel parámetro solo afecta a los nombres de columnas, no a los índices de filas.
  3. Esta es una operación común de normalización de datos.

Ejemplo 2: Renombrar índices de filas

Usandoindexel parámetro se pueden renombrar los índices de filas.

Ejemplo

import pandas as pd

# Crear un DataFrame, usando el índice predeterminado
data = {
    'Fruta': ['Manzana', 'Plátano', 'Naranja'],
    'Cantidad': [10, 20, 15]
}
df = pd.DataFrame(data)

print("Datos originales (índice predeterminado):")
print(df)
print("=" * 50)

# Usar un diccionario para renombrar el índice de filas
df_renamed = df.rename(index={
    0: 'Primera fila',
    1: 'Segunda fila',
    2: 'Tercera fila'
})

print("Datos después de renombrar el índice de filas:")
print(df_renamed)

Resultado esperado:

原始数据(默认索引):
   水果  数量
0  苹果  10
1  香蕉  20
2  橙子  15
==================================================
重命名行索引后的数据:
     水果  数量
第一行   苹果  10
第二行   香蕉  20
第三行   橙子  15

Análisis del código:

  • Los índices de fila de los datos originales son números como 0, 1, 2.
  • Usandoindexel parámetro se pueden renombrar a nombres más significativos.
  • Esto es especialmente útil al generar informes.
  • Ejemplo 3: Renombrar simultáneamente nombres de columnas e índices de filas

    Se pueden renombrar de una sola vez los nombres de columnas y los índices de filas.

    Ejemplo

    import pandas as pd

    # Crear un DataFrame
    data = {
        'A': [1, 2, 3],
        'B': [4, 5, 6]
    }
    df = pd.DataFrame(data, index=['x', 'y', 'z'])

    print("datos originales:")
    print(df)
    print("=" * 50)

    # Renombrar simultáneamente los nombres de columnas e índices de filas
    df_renamed = df.rename(columns={'A': 'Columna A', 'B': 'Columna B'}, index={'x': 'Fila X', 'y': 'Fila Y', 'z': 'Fila Z'})

    print("Datos renombrados:")
    print(df_renamed)

    Resultado esperado:

    原始数据:
       A  B
    x  1  4
    y  2  5
    z  3  6
    ==================================================
    重命名后的数据:
        列A  列B
    行X   1   4
    行Y   2   5
    行Z   3   6
    

    Análisis del código:

    • Se pueden usar simultáneamentecolumnsyindexlos parámetros.
    • Esto es muy conveniente al importar y estandarizar datos.
    • Ejemplo 4: Usar una función para renombrar

      rename()También acepta funciones como parámetro, lo que permite realizar conversiones por lotes en nombres de columnas o índices.

      Ejemplo

      import pandas as pd

      # Crear un DataFrame con nombres de columnas más complejos
      data = {
          'USER_NAME': ['Zhang San', 'Li Si'],
          'USER_AGE': [25, 30],
          'USER_SALARY': [5000, 6000]
      }
      df = pd.DataFrame(data)

      print("datos originales:")
      print(df)
      print("=" * 50)

      # Convertir los nombres de columnas a minúsculas usando una función
      df_lower = df.rename(columns=str.lower)

      print(Nombres de columnas en minúsculas:)
      print(df_lower)
      print("=" * 50)

      # Usar una función para eliminar el prefijo (como USER_)
      df_clean = df.rename(columns=lambda x: x.replace('USER_', ''))

      print(Después de eliminar el prefijo:)
      print(df_clean)
      print("=" * 50)

      # Agregar prefijo usando función
      df_prefix = df.rename(columns=lambda x: 'col_' + x)

      print(Después de añadir el prefijo:)
      print(df_prefix)

      Resultado esperado:

      原始数据:
        USER_NAME  USER_AGE  USER_SALARY
      0       张三       25       5000
      1       李四       30       6000
      列名转小写后:
        user_name  user_age  user_salary
      0       张三       25       数据清洗
      1       李四       30       6000
      ==================================================
      去除前缀后:
        NAME  AGE  SALARY
      0  张三   25  5000
      1  李四   30  6000
      

      Análisis del código:

      • str.lowerEs el método para convertir una cadena a minúsculas.
      • Usandolambdafunciones se pueden manejar de forma flexible reglas de nomenclatura complejas.
      • Este método es adecuado para procesar por lotes una gran cantidad de nombres de columnas.
      • Ejemplo 5: Usar el parámetro inplace para modificar en el lugar

        Usandoinplace=Truese puede modificar directamente el DataFrame original, sin devolver un nuevo objeto.

        Ejemplo

        import pandas as pd

        # Crear un DataFrame
        data = {
            'name': ['Zhang San', 'Li Si'],
            'age': [25, 30]
        }
        df = pd.DataFrame(data)

        print("datos originales:")
        print(df)
        print(f"Datos originales id: {id(df)}")
        print("=" * 50)

        # Usar inplace=True para modificar en el lugar
        df.rename(columns={'name': 'Nombre', 'age': 'Edad'}, inplace=True)

        print("Datos después de modificar con inplace=True:")
        print(df)
        print(fDatos modificados id: {id(df)})

        Resultado esperado:

        原始数据:
           name  age
        0  张三   25
        1  李四   30
        原始数据 id: 140234567890
        ==================================================
        使用 inplace=True 修改后的数据:
            姓名  年龄
        0  张三   25
        1  李四   30
        修改后数据 id: 140234567890  # 同一个对象
        

        Análisis del código:

        • Usandoinplace=Truedespués, la dirección de memoria (id) del DataFrame no cambia, lo que indica que es una modificación en el lugar.
        • Este método puede ahorrar memoria, especialmente al trabajar con conjuntos de datos grandes.
        • Ejemplo 6: Manejar nombres de columnas inexistentes

          Usandoerrorsel parámetro se puede controlar el comportamiento cuando un nombre de columna no existe.

          Ejemplo

          import pandas as pd

          # Crear un DataFrame
          data = {
              'A': [1, 2, 3],
              'B': [4, 5, 6]
          }
          df = pd.DataFrame(data)

          print("datos originales:")
          print(df)
          print("=" * 50)

          # Intenta renombrar una columna inexistente, usando errors='ignore' (por defecto)
          df_renamed = df.rename(columns={'C': 'C_new'})  # La columna C no existe

          print(Renombrar una columna inexistente (C), usando el comportamiento predeterminado:)
          print(df_renamed)  # No habrá ningún cambio
          print("=" * 50)

          # Intenta renombrar una columna inexistente, usando errors='raise'
          try:
              df_renamed2 = df.rename(columns={'C': 'C_new'}, errors='raise')
          except KeyError as e:
              print(f"Excepción lanzada: {e}")

          Resultado esperado:

          原始数据:
             A  B
          0  1  4
          1  2  5
          2  3  6
          ==================================================
          重命名不存在的列(C),使用默认行为:
             A  B
          0  1  4
          1  2  5
          2  3  6  # 无变化
          ==================================================errors
          ==================================================
          抛出异常: 'C'
          

          Análisis del código:

          • Por defecto (errors='ignore'), si la columna no existe, no habrá ningún cambio ni se reportará un error.
          • Si se estableceerrors='raise', se lanzará unaKeyErrorexcepción.
          • Ejemplo 7: Usar el parámetro axis

            UsoaxisEl parámetro permite especificar de forma más flexible el eje a renombrar.

            Ejemplo

            import pandas as pd

            # Crear un DataFrame
            data = {
                'col1': [1, 2, 3],
                'col2': [4, 5, 6]
            }
            df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])

            print("Datos originales:")
            print(df)
            print("=" * 50)

            # Usar axis='columns' para renombrar columnas
            df_renamed_cols = df.rename({'col1': 'Primera columna', 'col2': 'Segunda columna'}, axis='columns')

            print("Después de usar axis='columns' para renombrar columnas:")
            print(df_renamed_cols)
            print("=" * 50)

            # Usar axis='index' para renombrar los índices de fila
            df_renamed_idx = df.rename({'row1': 'Primera fila', 'row2': 'Segunda fila', 'row3': 'Tercera fila'}, axis='index')

            print("Después de renombrar filas con axis='index':")
            print(df_renamed_idx)

            Resultado esperado:

            原始数据:
                  col1  col2
            row1     1     4
            row2     2     5
            row3     3     6
            ==================================================
            使用 axis='columns' 重命名列后:
                  第一列  第二列
            row1     1     4
            row2     2     5
            row3     3     6
            

            Análisis del código:

            • axis='columns'oaxis=1Representa operar sobre las columnas.
            • axis='index'oaxis=0Representa operar sobre los índices de las filas.
            • Esta sintaxis es consistente con el estilo de NumPy.

            • Notas

              • rename()Por defecto, no se modifica el DataFrame original; si desea modificarlo en el lugar, utiliceinplace=Trueel parámetro.
              • Utilice preferentementecolumnsyindexel parámetro, en lugar demapperyaxis, porque el primero es más claro y fácil de entender.
              • Al usar una función para renombrar, asegúrese de que la función devuelva un tipo cadena (string); de lo contrario, pueden producirse errores.
              • Al procesar conjuntos de datos grandes, el uso deinplace=Truepuede ahorrar memoria.
              • Antes de renombrar, se recomienda revisar los nombres de columna actuales; puede usardf.columnspara verlos.

              Pandas 常用函数Funciones comunes de Pandas

              Otras extensiones