Функция Pandas df.rename()
Распространённые функции 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параметр для удобного переименования названий столбцов.
Пример
# Создать 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
Пояснение к коду:
- Исходные названия столбцов данных на английском, и мы используем словарь, чтобы переименовать их на китайский.
- Используя
columnsпараметр влияет только на названия столбцов, а не на индекс строк. - Это распространённая операция нормализации данных.
Пример 2: Переименование индекса строк
Используйтеindexпараметр для переименования индекса строк.
Пример
# Создать 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: Переименование и имён столбцов, и индекса строк
Он может одновременно переименовывать имена столбцов и индекс строк.
Пример
# Создать 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()Он также принимает функцию в качестве параметра, что позволяет пакетно преобразовывать имена столбцов или индекс.
Пример
# Создайте 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, не возвращая новый объект.
Пример
# Создать 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параметр для управления поведением, когда имена столбцов отсутствуют.
Пример
# Создать 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Параметр позволяет более гибко задавать оси для переименования.
Пример
# Создать 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для просмотра.
Примечания
Другие расширения