Одни из самых часто используемых операций — это операции со столбцами датафрейма. Данные операции позволяют создать новые столбцы с расчетными данными, удалить столбцы, поменять их порядок или переименовать их. В данной статье рассмотрим только операции удаления, отбора и перестановки столбцов.
Создание датафрейма (таблицы)
Создадим тестовый датафрейм с именем df и различными типами значений.
Создаем словарь с данными.
dict_data = {'column_1': ['a_side', 'b_side'], 'column_2': [1, 2], 'column_3': [3.0, 4.5]}
Передаем словарь с данными в качестве аргумента data в метод pd.DataFrame.
df = pd.DataFrame(data=dict_data)
Получилась таблица с тремя столбцами.
Удаление столбцов
При загрузке данных из какого-либо источника часто бывает необходимо избавиться от ненужных столбцов датафрейма для облегчения восприятия данных в таблице и более комфортной работы.
Основной метод, используемый для удаления столбцов это метод “drop”.
Данный метод позволяет удалять столбцы и строки датафрейма: по индексу, метке или названию столбца.
Мы рассмотрим только способы удаления столбцов по их названиям.
Первый способ.
В этом способе мы указываем ось датафрейма по которой мы удаляем данные.
df.drop(['column_2', 'column_3'], axis=1)
В этом примере мы указали, что нам нужно удалить элементы индекса по оси столбцов - axis=1. Если нужно было бы удалить строки, то необходимо было бы передать axis=0. Также мы указали названия столбцов, которые необходимо удалить ['column_2', 'column_3'], эти названия мы передали в виде списка заключив их в квадратные скобки [ ]. Если нам нужно удалить один столбец, то список не нужен, можно просто указать название столбца ('column_2') в кавычках.
В результате, таблица после удаления столбцов стала выглядеть вот так:
В таблице остался только один столбец “column_1”.
Pandas как и Python во главу угла ставят удобство пользователя, поэтому если вы забыли, где какая ось 0 или 1, то вот такой синтаксис тоже будет работать.
df.drop(['column_2', 'column_3'], axis='columns')
Второй способ
Основное отличие от первого способа в том, что мы не указываем ось датафрейма, а явно указываем, что нам нужно удалить столбцы. В этом способе мы передаем перечень столбцов в списке оператору columns.
columns=['column_2', 'column_3']
В результате команда удаления нужных столбцов выглядит так:
df.drop(columns=['column_2', 'column_3'])
В результате удаления мы получили такую же таблицу, как и в первом способе:
Оба этих способа дают одинаковый результат. Какой выбрать зависит от конкретного контекста задачи и удобства применения того или иного способа.
Важно!!!
Используя метод “drop” необходимо обратить особое внимание на указание в этом методе оператора “inplace”. Оператор “inplace” бинарный и может принимать только два значения True или False. По умолчанию этот оператор имеет значение False. Это значит, что применяя метод “drop” без указания этого оператора столбцы удаляются в копии датафрейма, в исходном датафрейме все столбцы остаются на месте.
Для того чтобы удалить столбцы в исходном датафрейме, к которому применяется метод “drop” необходимо явно указать в команде inplace=True.
В этом случае команда удаления столбцов в исходном датафрейме выглядит так:
df.drop(['column_2', 'column_3'], axis=1, inplace=True)
Оператор inplace будет работать как в первом, так и во втором способе.
Есть другой вариант, он подходит если вам не нужно вносить изменения в исходный датафрейм, а удалить столбцы в копии датафрейма и затем уже работать с этой копией. Нужно просто присвоить создаваемой копии датафрейма другое имя.
df_1 = df.drop(['column_2', 'column_3'], axis=1)
В данном примере столбцы удалены в новом датафрейме (копии) df_1
а исходный датафрейм df остался без изменений
Еще один метод удаления столбцов - использование оператора "del". Это стандартный оператор Python не входящий в модуль Pandas.
del df['column_1']
Исходный датафрейм после применения данной команды будет выглядеть так:
Ключевой особенностью данного способа от способа с использованием "drop" является то что "del", удаляет только один столбец, его нельзя использовать для нескольких столбцов. Столбец при использовании "del" удаляется сразу в исходном датафрейме, а не в копии.
Отбор и перестановка столбцов
В методе “drop” удалялись ненужные столбцы. В этом способе указываются только те столбцы, которые нужны.
df_2 = df[['column_2', 'column_1']]
Данный способ использует стандартную в Pandas фильтрацию по индексу, только здесь индексом выступают столбцы. Необходимо просто передать в списке перечень столбцов, которые необходимо оставить. Дополнительным бонусом этого способа является то, что этим способом можно поменять и порядок представления столбцов.
В результате производится не только отбор столбцов, но их расстановка в нужном порядке. На скриншоте видно, что столбец “column_2”, занял место слева от столбца “column_1”.
Важно !!!
Обратите внимание что при работе в Jupyter разный синтаксис приведет к разным результатам.
- Если вы напишите в ячейке просто df[['column_2', 'column_1']] то результатом вычисления ячейки будет копия датафрейма доступная лишь для отображения совершенного отбора.
Исходный датафрейм df останется неизменным.
2. Для того чтобы работать дальше с измененным отбором датафреймом, необходимо присвоить ему новое имя.
df_2 = df[['column_2', 'column_1']]
Таким образом, второй способ фильтрации столбцов позволяет не только оставить в новом датафрейме - таблице нужные столбцы, но и задать им тот порядок, который нужен для более удобного отображения таблицы.
Теперь вы знаете основные операции со столбцами датафрейма, можно даже утверждать, что эти способы закроют 80% ваших потребностей работы со столбцами.
Чтобы узнать еще больше об обработке данных подписывайся на канал.
Если вы что-то не поняли, читайте начальные статьи по работе с Pandas:
Установка Anaconda Navigator и Jupyter lab
Загрузка данных из Excel
Получение информации о данных в датафрейме.
Представление данных в Pandas