При работе с данными, которые импортированы из внешних источников, таких как 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

Зачем переименовывать колонки?
Оригинальные заголовки колонок могут содержать:
- Сложные или длинные названия (
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)

Когда использовать:
- Если нужно переименовать только несколько колонок.
- Если вы хотите сохранить существующие заголовки, кроме указанных.
2. Полное переименование: замена df.columns
Если требуется изменить все названия сразу, можно заменить их через атрибут columns.
df.columns = ['date', 'client_id', 'visit_id', 'traffic_source',
'search_engine_root', 'search_engine', 'bounce',
'visit_duration', 'page_views']

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

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

Когда использовать:
- Когда колонкам требуется единый стиль.
- Чтобы обеспечить совместимость с аналитическими библиотеками (например, 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', ...] |
Советы и лучшие практики
- Сохраняйте единообразие: Используйте один стиль именования колонок, например,
snake_case. - Не теряйте контекст: При переименовании колонок избегайте слишком кратких названий, чтобы не потерять их смысл.
- Автоматизация: Используйте программные методы, если названия колонок генерируются автоматически или их много.
Переименование колонок — это простая, но важная часть обработки данных, которая делает вашу работу с таблицами понятной и удобной. Восприятие данных становятся проще, а анализ — эффективнее!