Зміна назв стовпців у фреймах даних 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’)`.
На цьому все! Перегляньте наші матеріали для аналізу даних.