Як перейменувати стовпці Pandas [4 Examples]

Зміна назв стовпців у фреймах даних pandas є частою процедурою. Розглянемо чотири відмінні підходи до перейменування стовпців в pandas.

Pandas є відомою бібліотекою Python, розробленою для аналізу даних. Часто дані, що підлягають аналізу, представлені в різних форматах, таких як файли CSV, TSV, реляційні бази даних тощо. Перед аналізом необхідно здійснити перевірку даних, обробити пропущені значення та підготувати їх.

За допомогою pandas ви можете:

  • Збирати дані з різноманітних джерел
  • Аналізувати набір даних та працювати з його пропущеними значеннями
  • Проводити аналіз даних для отримання корисної інформації

У більшості проектів з аналізу даних часто створюють фрейми даних на основі структур даних Python, наприклад, словників. Або ж дані зчитуються з інших джерел, таких як файли CSV, і конвертуються у фрейми даних.

Фрейм даних – це базова структура даних в pandas. Він містить записи в рядках і різні поля або атрибути у стовпцях.

Інколи виникає необхідність перейменувати назви стовпців для більшої зрозумілості та зручності читання. У цій статті ми розглянемо чотири різних способи, як це можна зробити. Розпочнемо!

Створення фрейму даних Pandas

Ви можете відтворити приклад у середовищі Jupyter Notebook із встановленою бібліотекою pandas. Або ж ви можете використовувати Google Colab.

Для початку створимо фрейм даних pandas, з яким будемо працювати далі в цій інструкції.

Ось словник `book_dict`:

books_dict = {
    "one": [
        "Atomic Habits",
        "His Dark Materials",
        "The Midnight Library",
        "The Broken Earth",
        "Anxious People",
    ],
    "two": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
    "four": [4, 5, 3, 5, 4],
}

Спершу імпортуємо pandas, а потім створимо фрейм даних `df` зі словника `books_dict`.

import pandas as pd

Примітка: ми будемо повертатися до наступного кодового блоку для створення початкової версії фрейму даних перед перейменуванням стовпців.

df = pd.DataFrame(books_dict)

Метод `df.head()` показує перші кілька рядків фрейму даних `df`. За замовчуванням він виводить перші п’ять рядків. Оскільки наш `df` має лише п’ять рядків, `df.head()` відобразить весь фрейм даних.

df.head()

Як бачимо, назви стовпців наразі збігаються з ключами словника. Це не дуже інформативно. Тому перейменуємо їх! 👩‍🏫

Методи перейменування стовпців у Pandas

Тепер розглянемо різні способи перейменування стовпців у pandas:

  • Присвоєння атрибуту `columns` фрейму даних списку нових імен стовпців
  • Використання методу `rename()` у фреймі даних
  • Застосування `str.replace` для перейменування одного або кількох стовпців
  • Використання методу `set_axis()` у фреймі даних

Коригування атрибутів стовпців

Атрибут `columns` будь-якого фрейму даних містить список назв стовпців:

df.columns
# Index(['one', 'two', 'three', 'four'], dtype="object")

Перейменуємо стовпці, щоб вони відображали зміст кожного поля, та переглянемо результат за допомогою `df.head()`:

df.columns = ['Title','Author','Genre','Rating']
df.head()

Застосування методу `rename()`

Для перейменування стовпців у pandas можна використати метод `rename()` із таким синтаксисом:

df.rename(column={mapping})

Відображення може мати форму словника:

{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}

Створимо `df` зі словника `books_dict`:

df = pd.DataFrame(books_dict)

Використовуючи метод `rename()` із зазначеним синтаксисом, отримаємо `df_1`. Це копія фрейму даних з перейменованими стовпцями.

df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()

Отже, назви стовпців у `df_1` змінено:

Але назви стовпців вихідного фрейму даних `df` залишилися незмінними:

df.head()

Оскільки цей метод дозволяє нам встановлювати відповідність між старими та новими назвами стовпців, його можна використовувати для перейменування як одного, так і кількох стовпців.

Перейменування стовпців на місці

Як змінити існуючий фрейм даних без створення нової копії?

Для цього можна встановити параметр `inplace` у значення `True` при виклику методу.

df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()

Це перейменує стовпці вихідного фрейму даних `df`:

Наразі ми навчились:

  • Перейменовувати стовпці за допомогою словника, що зіставляє старі назви стовпців із новими
  • Перейменовувати стовпці на місці, не створюючи новий фрейм даних

Метод `rename` можна використовувати і в інший спосіб.

Інший підхід до перейменування стовпців

Перейменуємо стовпці, щоб вони були у верхньому регістрі:

df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']
df.head()

Тепер фрейм даних `df` виглядає так:

Припустимо, ми хочемо змінити кожну з цих назв стовпців, щоб вони починалися з великої літери. Замість того, щоб вводити словник для кожної назви стовпця, ми можемо вказати виклик функції або методу, як показано далі:

df.rename(str.title,axis="columns",inplace=True)
df.head()

Тут ми встановлюємо вісь “columns” і застосовуємо `str.title`, щоб перетворити всі назви стовпців у формат заголовка.

Застосування `str.replace()` для рядків назв стовпців

Як завжди, виконайте наступний блок коду, щоб створити фрейм даних зі словника:

df = pd.DataFrame(books_dict)

У Python для отримання копії рядка з необхідними змінами можна використати метод `replace()` із синтаксисом `str.replace(this, with_this)`. Ось приклад:

>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'

Атрибут `columns` містить список рядків з назвами стовпців. Отже, можна викликати `str.replace(‘old_column_name’, ‘new_column_name’)` так:

df.columns = df.columns.str.replace('one','Title')
df.head()

Тут ми змінили назву лише стовпця “one” на “Title”, а назви інших стовпців залишилися незмінними.

Перейменуємо інші стовпці, використовуючи той самий підхід:

df.columns = df.columns.str.replace('two','Author')
df.columns = df.columns.str.replace('three','Genre')
df.columns = df.columns.str.replace('four','Rating')
df.head()

Цей метод перейменування стовпців корисний, коли потрібно перейменувати лише один або невелику кількість стовпців.

Використання методу `set_axis()`

Повернімося до вихідної версії фрейму даних:

df = pd.DataFrame(books_dict)

Для перейменування стовпців можна також використати метод `set_axis()`. Синтаксис виглядає так:

df.set_axis([list_of_column_names],axis="columns")

За замовчуванням метод `set_axis()` повертає копію фрейму даних. Але якщо ви хочете змінити фрейм даних на місці, потрібно встановити для `copy` значення `False`.

df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False)
df.head()

Висновок

Ось огляд різних методів перейменування стовпців у фреймі даних pandas:

  • Для зразка фрейму даних `df`, атрибут стовпців `df.columns` є списком назв стовпців. Щоб перейменувати стовпці, потрібно присвоїти цьому атрибуту список нових назв стовпців.
  • Метод `rename()` для перейменування стовпців використовує такий синтаксис: `df.rename(columns={mapping})`, де `mapping` задає відповідність між старими та новими назвами стовпців. Можна також використовувати метод `rename()`, задаючи функцію, що буде застосована до всіх назв стовпців: `df.rename(function_or_method_call, axis=’columns’)`.
  • Подібно до використання методу `replace()` для рядка Python, можна використовувати `df.columns.str.replace(‘old_column_name’, ‘new_column_name’)` для заміни назв стовпців.
  • Інший підхід до перейменування стовпців полягає у використанні методу `set_axis` із синтаксисом: `df.set_axis(list_of_col_names, axis=’columns’)`.

На цьому все! Перегляньте наші матеріали для аналізу даних.