Переименование колонок в Pandas: pandas.rename и другие методы

Рассмотрим основные способы переименования колонок в pandas на примере данных из Logs API Яндекс Метрики

При работе с данными, которые импортированы из внешних источников, таких как API или базы данных, часто возникает необходимость сделать заголовки таблицы более читаемыми или удобными для анализа. Рассмотрим основные способы переименования колонок в pandas на примере данных из Logs API Яндекс Метрики.

Предположим что мы сохранили ответ в csv с разделителем в виде табуляции. Для начала считаем наши данные и сохраним в датафрейм.

df = pd.read_csv( 'cache/logs_api_metrika_visits_example.csv',
	sep = '\t',
	dtype={
		'ym:s:clientID': object,
		'ym:s:visitID': object
})

В данном случае я принудительно обозначаю тип данных для колонок ym:s:clientID и ym:s:visitID чтобы избежать неконтролируемого преобразования типов.

Посмотрим как выглядит наш датафрейм.

df
Предположим что мы сохранили ответ в csv с разделителем в виде табуляции. Для начала считаем наши данные и сохраним в датафрейм.

Зачем переименовывать колонки?

Оригинальные заголовки колонок могут содержать:

  • Сложные или длинные названия (ym:s:clientID, ym:s:lastTrafficSource)
  • Специальные символы, которые затрудняют доступ к колонкам (: или пробелы)
  • Префиксы, которые избыточны для анализа (например, ym:s:)

Переименование колонок делает код более читаемым, а процесс анализа — удобным. Например, колонку ym:s:clientID можно превратить в client_id, что позволит в дальнейшем обращаться к ней как df.client_id.

Способы переименования колонок

1. Выборочное переименование: метод rename

Метод rename позволяет переименовать конкретные колонки, задав словарь с текущими и новыми названиями.

df.rename(columns={'ym:s:date': 'date', 'ym:s:clientID': 'client_id'}, inplace=True)
Метод rename позволяет переименовать конкретные колонки, задав словарь с текущими и новыми названиями.

Когда использовать:

  • Если нужно переименовать только несколько колонок.
  • Если вы хотите сохранить существующие заголовки, кроме указанных.

2. Полное переименование: замена df.columns

Если требуется изменить все названия сразу, можно заменить их через атрибут columns.

df.columns = ['date', 'client_id', 'visit_id', 'traffic_source', 
              'search_engine_root', 'search_engine', 'bounce', 
              'visit_duration', 'page_views']
Если требуется изменить все названия сразу, можно заменить их через атрибут columns.

Когда использовать:

  • Когда список новых названий уже подготовлен.
  • Когда нужно избавиться от всех сложных названий разом.

3. Массовое переименование с использованием функций

Метод подходит для ситуаций, когда названия колонок подчиняются определённой структуре. Например, удаление префикса ym:s:.

df.columns = df.columns.str.replace('ym:s:', '', regex=False)
Метод подходит для ситуаций, когда названия колонок подчиняются определённой структуре. Например, удаление префикса ym:s:.

Когда использовать:

  • Когда все названия требуют одинакового изменения (удалить префиксы, заменить символы).
  • Если колонок много, и их невозможно переименовать вручную.

4. Изменение регистра и форматирование

Иногда необходимо привести названия колонок к единому стилю, например, в snake_case или lowercase.

df.columns = df.columns.str.replace(':', '_').str.lower()
Иногда необходимо привести названия колонок к единому стилю, например, в snake_case или lowercase.

Когда использовать:

  • Когда колонкам требуется единый стиль.
  • Чтобы обеспечить совместимость с аналитическими библиотеками (например, SQL, где snake_case — стандарт).

Примеры на практике

Предположим, мы получили данные с такими колонками:

['ym:s:date', 'ym:s:clientID', 'ym:s:visitID', 'ym:s:lastTrafficSource', 'ym:s:lastSearchEngineRoot', 'ym:s:lastSearchEngine', 'ym:s:bounce', 'ym:s:visitDuration', 'ym:s:pageViews']

Вот как мы можем их переименовать:

МетодРезультат
renameВыборочно: ['date', 'client_id', 'ym:s:visitID', ...]
Полное переименованиеПолный список: ['date', 'client_id', ...]
Удаление префикса ym:s:['date', 'clientID', 'visitID', ...]
Изменение формата['ym_s_date', 'ym_s_clientid', ...]

Советы и лучшие практики

  1. Сохраняйте единообразие: Используйте один стиль именования колонок, например, snake_case.
  2. Не теряйте контекст: При переименовании колонок избегайте слишком кратких названий, чтобы не потерять их смысл.
  3. Автоматизация: Используйте программные методы, если названия колонок генерируются автоматически или их много.

Переименование колонок — это простая, но важная часть обработки данных, которая делает вашу работу с таблицами понятной и удобной. Восприятие данных становятся проще, а анализ — эффективнее!

Содержание
Picture of Евгений Кузнецов
Евгений Кузнецов

Digital-стратег в компании JetStyle. Нахожу инсайты в данных и придумываю, что с этим делать.