Функция Pandas df.rename()

Pandas 常用函数Распространённые функции Pandas


df.rename()— это функция в Pandas, используемая для переименования имён столбцов или индекса DataFrame.

В анализе данных понятные имена столбцов и индексов очень важны для читаемости и поддерживаемости кода.rename()Он позволяет гибко изменять имена столбцов и индексов, делая данные более стандартизированными и понятными. Это особенно полезно при импорте данных, очистке и создании отчётов.


Базовый синтаксис и параметры

rename()является функцией-членом DataFrame, вызываемой через оператор точка.для вызова.

Формат синтаксиса

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

Описание параметра

Параметр Type Обязательный Описание Значение по умолчанию
mapper dict или функция Optional Правила сопоставления для переименования оси (индекса строк или имён столбцов). Может быть словарём или функцией. Используется сaxisпараметра. Отсутствует
index dict или функция Optional Непосредственно задаёт правила переименования для индекса строк. Имеет приоритет надmapperиaxis。 Отсутствует
columns dict или функция Optional Непосредственно задаёт правила переименования для имён столбцов. Имеет приоритет надmapperиaxis。 Отсутствует
axis int или str Optional Задаёт ось для переименования.0или'index'представляет индекс строк;1или'columns'представляет имена столбцов. Отсутствует
inplace bool Optional Если установлено значениеTrue, он изменяет исходный DataFrame напрямую и не возвращает новый объект; если установленоFalse, возвращается новый DataFrame, а исходные данные остаются неизменными. False
errors str Optional Управляет обработкой ошибок.'raise'означает, что возникает исключение, когда соответствующий ключ не найден;'ignore'означает игнорирование несуществующих ключей. 'ignore'

Описание возвращаемого значения

  • Возвращает новый DataFrame (еслиinplace=False), илиNone(еслиinplace=True)。
  • В возвращённом DataFrame имена столбцов или индекс были переименованы.

Примеры

Давайте тщательно освоим на серии примеровrename()использование.

Пример 1: Переименование имён столбцов

Используйтеcolumnsпараметр для удобного переименования названий столбцов.

Пример

import pandas as pd

# Создать DataFrame
data = {
    'name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'age': [25, 30, 35],
    'salary': [5000, 6000, 7000]
}
df = pd.DataFrame(data)

print("Исходные данные:")
print(df)
print("=" * 50)

# Используйте словарь для переименования названий столбцов
df_renamed = df.rename(columns={
    'name': 'Name',
    'age': 'age',
    'salary': 'Salary'
})

print("Данные после переименования названий столбцов:")
print(df_renamed)

Ожидаемый вывод:

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

Пояснение к коду:

  1. Исходные названия столбцов данных на английском, и мы используем словарь, чтобы переименовать их на китайский.
  2. Используяcolumnsпараметр влияет только на названия столбцов, а не на индекс строк.
  3. Это распространённая операция нормализации данных.

Пример 2: Переименование индекса строк

Используйтеindexпараметр для переименования индекса строк.

Пример

import pandas as pd

# Создать DataFrame с индексом по умолчанию
data = {
    Фрукт: [Яблоко, Банан, Апельсин],
    'Количество': [10, 20, 15]
}
df = pd.DataFrame(data)

print("Исходные данные (индекс по умолчанию):")
print(df)
print("=" * 50)

# Использовать словарь для переименования индекса строк
df_renamed = df.rename(index={
    0: 'Первая строка',
    1: 'Вторая строка',
    2: 'Третья строка'
})

print("Данные после переименования индекса строк:")
print(df_renamed)

Ожидаемый вывод:

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

Пояснение к коду:

  • Исходный индекс строк данных — это числа, такие как 0, 1, 2.
  • Используяindexпараметр может переименовать их в более осмысленные имена.
  • Это особенно полезно при создании отчётов.
  • Пример 3: Переименование и имён столбцов, и индекса строк

    Он может одновременно переименовывать имена столбцов и индекс строк.

    Пример

    import pandas as pd

    # Создать DataFrame
    data = {
        'A': [1, 2, 3],
        'B': [4, 5, 6]
    }
    df = pd.DataFrame(data, index=['x', 'y', 'z'])

    print("Исходные данные:")
    print(df)
    print("=" * 50)

    # Переименование и имён столбцов, и индекса строк
    df_renamed = df.rename(columns={'A': Column A, 'B': Column B}, index={'x': Row X, 'y': Row Y, 'z': Row Z})

    print("Данные после переименования:")
    print(df_renamed)

    Ожидаемый вывод:

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

    Пояснение к коду:

    • Вы можете использовать и то, и другоеcolumnsиindexпараметры.
    • Это очень удобно при импорте и стандартизации данных.
    • Пример 4: Использование функции для переименования

      rename()Он также принимает функцию в качестве параметра, что позволяет пакетно преобразовывать имена столбцов или индекс.

      Пример

      import pandas as pd

      # Создайте DataFrame с относительно сложными именами столбцов
      data = {
          'USER_NAME': ['Чжан Сань', 'Ли Сы'],
          'USER_AGE': [25, 30],
          'USER_SALARY': [5000, 6000]
      }
      df = pd.DataFrame(data)

      print("Исходные данные:")
      print(df)
      print("=" * 50)

      # Используйте функцию для преобразования имён столбцов в нижний регистр
      df_lower = df.rename(columns=str.lower)

      print("После преобразования имён столбцов в нижний регистр:")
      print(df_lower)
      print("=" * 50)

      # Используйте функцию для удаления префикса (например, USER_)
      df_clean = df.rename(columns=lambda x: x.replace('USER_', ''))

      print("После удаления префикса:")
      print(df_clean)
      print("=" * 50)

      # Используйте функцию для добавления префикса
      df_prefix = df.rename(columns=lambda x: 'col_' + x)

      print("После добавления префикса:")
      print(df_prefix)

      Ожидаемый вывод:

      原始数据:
        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
      

      Пояснение к коду:

      • str.lower— это метод приведения строк к нижнему регистру.
      • Использованиеlambdaфункции могут гибко обрабатывать сложные правила именования.
      • Этот метод подходит для пакетной обработки большого количества имён столбцов.
      • Пример 5: Использование параметра inplace для изменения на месте

        Используйтеinplace=Trueчтобы напрямую изменить исходный DataFrame, не возвращая новый объект.

        Пример

        import pandas as pd

        # Создать DataFrame
        data = {
            'name': ['Zhang San', 'Li Si'],
            'age': [25, 30]
        }
        df = pd.DataFrame(data)

        print("Исходные данные:")
        print(df)
        print(f"Исходный id данных: {id(df)}")
        print("=" * 50)

        # Используйте inplace=True для изменения на месте
        df.rename(columns={'name': 'Name', 'age': 'age'}, inplace=True)

        print("Данные после изменения с inplace=True:")
        print(df)
        print(f"id изменённых данных: {id(df)}")

        Ожидаемый вывод:

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

        Пояснение к коду:

        • Использованиеinplace=Trueпосле этого адрес памяти (id) DataFrame не изменяется, что указывает на изменение на месте.
        • Этот метод позволяет экономить память, особенно при работе с большими наборами данных.
        • Пример 6: Обработка несуществующих имён столбцов

          Используйтеerrorsпараметр для управления поведением, когда имена столбцов отсутствуют.

          Пример

          import pandas as pd

          # Создать DataFrame
          data = {
              'A': [1, 2, 3],
              'B': [4, 5, 6]
          }
          df = pd.DataFrame(data)

          print("Исходные данные:")
          print(df)
          print("=" * 50)

          # Попытка переименовать несуществующий столбец, используя errors='ignore' (по умолчанию)
          df_renamed = df.rename(columns={'C': 'C_new'})  # Столбец C не существует

          print("Переименование несуществующего столбца (C) с поведением по умолчанию:")
          print(df_renamed)  # Изменения не произойдут
          print("=" * 50)

          # Попытка переименовать несуществующий столбец, используя errors='raise'
          try:
              df_renamed2 = df.rename(columns={'C': 'C_new'}, errors='raise')
          except KeyError as e:
              print(f"Возникло исключение: {e}")

          Ожидаемый вывод:

          原始数据:
             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'
          

          Пояснение к коду:

          • По умолчанию (errors='ignore'), если столбец не существует, изменения не произойдут и ошибка не будет вызвана.
          • Если установлено значениеerrors='raise', будет возбуждено исключение.KeyErrorисключение.
          • Пример 7: Использование параметра axis

            ИспользуйтеaxisПараметр позволяет более гибко задавать оси для переименования.

            Пример

            import pandas as pd

            # Создать DataFrame
            data = {
                'col1': [1, 2, 3],
                'col2': [4, 5, 6]
            }
            df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])

            print("Исходные данные:")
            print(df)
            print("=" * 50)

            # Используйте axis='columns' для переименования столбцов
            df_renamed_cols = df.rename({'col1': 'Первый столбец', 'col2': 'Второй столбец'}, axis='columns')

            print("После переименования столбцов с axis='columns':")
            print(df_renamed_cols)
            print("=" * 50)

            # Используйте axis='index' для переименования индекса строк
            df_renamed_idx = df.rename({'row1': 'Первая строка', 'row2': 'Вторая строка', 'row3': 'Третья строка'}, axis='index')

            print("После переименования строк с axis='index':")
            print(df_renamed_idx)

            Ожидаемый вывод:

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

            Пояснение к коду:

            • axis='columns'илиaxis=1Означает работу со столбцами.
            • axis='index'илиaxis=0Означает работу с индексами строк.
            • Этот синтаксис согласуется со стилем NumPy.

            • Примечания

              • rename()По умолчанию исходный DataFrame не изменяется. Чтобы изменить его на месте, используйтеinplace=Trueпараметра.
              • Предпочитайте использоватьcolumnsиindexпараметр вместоmapperиaxis, потому что первый понятнее и легче для понимания.
              • При использовании функции для переименования убедитесь, что функция возвращает строковый тип, иначе это может вызвать ошибки.
              • При работе с большими наборами данных, используяinplace=Trueможет сэкономить память.
              • Перед переименованием рекомендуется проверить текущие имена столбцов. Вы можете использоватьdf.columnsдля просмотра.

              Pandas 常用函数Часто используемые функции Pandas

              Другие расширения