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