Найти в Дзене

Pandas. Операции со столбцами.

Оглавление
таблицы, таблицы, таблицы
таблицы, таблицы, таблицы

Одни из самых часто используемых операций — это операции со столбцами датафрейма. Данные операции позволяют создать новые столбцы с расчетными данными, удалить столбцы, поменять их порядок или переименовать их. В данной статье рассмотрим только операции удаления, отбора и перестановки столбцов.

Создание датафрейма (таблицы)

Создадим тестовый датафрейм с именем 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)

Получилась таблица с тремя столбцами.

Датафрейм df
Датафрейм df

Удаление столбцов

При загрузке данных из какого-либо источника часто бывает необходимо избавиться от ненужных столбцов датафрейма для облегчения восприятия данных в таблице и более комфортной работы.

Основной метод, используемый для удаления столбцов это метод “drop”.

Данный метод позволяет удалять столбцы и строки датафрейма: по индексу, метке или названию столбца.

Мы рассмотрим только способы удаления столбцов по их названиям.

Первый способ.

В этом способе мы указываем ось датафрейма по которой мы удаляем данные.

df.drop(['column_2', 'column_3'], axis=1)

В этом примере мы указали, что нам нужно удалить элементы индекса по оси столбцов - axis=1. Если нужно было бы удалить строки, то необходимо было бы передать axis=0. Также мы указали названия столбцов, которые необходимо удалить ['column_2', 'column_3'], эти названия мы передали в виде списка заключив их в квадратные скобки [ ]. Если нам нужно удалить один столбец, то список не нужен, можно просто указать название столбца ('column_2') в кавычках.

В результате, таблица после удаления столбцов стала выглядеть вот так:

Таблица после применения 1-го способа метода drop
Таблица после применения 1-го способа метода drop

В таблице остался только один столбец “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'])

В результате удаления мы получили такую же таблицу, как и в первом способе:

Таблица после применения 2-го способа метода  drop
Таблица после применения 2-го способа метода drop

Оба этих способа дают одинаковый результат. Какой выбрать зависит от конкретного контекста задачи и удобства применения того или иного способа.

Важно!!!

Используя метод “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_1
Датафрейм df_1

а исходный датафрейм df остался без изменений

Датафрейм df
Датафрейм df

Еще один метод удаления столбцов - использование оператора "del". Это стандартный оператор Python не входящий в модуль Pandas.

del df['column_1']

Исходный датафрейм после применения данной команды будет выглядеть так:

Датафрейм df после применения команды del
Датафрейм df после применения команды del

Ключевой особенностью данного способа от способа с использованием "drop" является то что "del", удаляет только один столбец, его нельзя использовать для нескольких столбцов. Столбец при использовании "del" удаляется сразу в исходном датафрейме, а не в копии.

Отбор и перестановка столбцов

В методе “drop” удалялись ненужные столбцы. В этом способе указываются только те столбцы, которые нужны.

df_2 = df[['column_2', 'column_1']]

Данный способ использует стандартную в Pandas фильтрацию по индексу, только здесь индексом выступают столбцы. Необходимо просто передать в списке перечень столбцов, которые необходимо оставить. Дополнительным бонусом этого способа является то, что этим способом можно поменять и порядок представления столбцов.

В результате производится не только отбор столбцов, но их расстановка в нужном порядке. На скриншоте видно, что столбец “column_2”, занял место слева от столбца “column_1”.

Датафрейм df_2
Датафрейм df_2

Важно !!!

Обратите внимание что при работе в Jupyter разный синтаксис приведет к разным результатам.

  1. Если вы напишите в ячейке просто df[['column_2', 'column_1']] то результатом вычисления ячейки будет копия датафрейма доступная лишь для отображения совершенного отбора.
Копия датафрейма df
Копия датафрейма df

Исходный датафрейм df останется неизменным.

Исходный датафрейм df
Исходный датафрейм df

2. Для того чтобы работать дальше с измененным отбором датафреймом, необходимо присвоить ему новое имя.

df_2 = df[['column_2', 'column_1']]

Датафрейм df_2
Датафрейм df_2

Таким образом, второй способ фильтрации столбцов позволяет не только оставить в новом датафрейме - таблице нужные столбцы, но и задать им тот порядок, который нужен для более удобного отображения таблицы.

Теперь вы знаете основные операции со столбцами датафрейма, можно даже утверждать, что эти способы закроют 80% ваших потребностей работы со столбцами.

Чтобы узнать еще больше об обработке данных подписывайся на канал.

Если вы что-то не поняли, читайте начальные статьи по работе с Pandas:

Установка Anaconda Navigator и Jupyter lab

Загрузка данных из Excel

Получение информации о данных в датафрейме.

Представление данных в Pandas