Найти в Дзене

Pandas. Операции вычисления.

Pandas поддерживает различные типы вычислений по обеим осям датафрейма, как по столбцам, так и по строкам. Поскольку Pandas это библиотека для работы с большими данными, содержащими сотни тысяч строк и столбцов, и в ней предусмотрены инструменты для проведения вычислений с такими большими датафреймами. Эти инструменты оптимизированы для быстрого выполнения операций и позволяют быстро и легко в одну две строчки кода совершать вычисления в огромном датафрейме. В данной статье будут рассмотрены только элементарные операции вычислений как в целом по датафрейму, так по столбцам и строкам. Указанные выше инструменты будут рассматриваться и изучаться в отдельных статьях. Начнем как обычно с создания тестового датафрейма для примера. import pandas as pd dict_data = {'column_1': ['a_side', 'b_side', ‘c_side’], 'column_2': [1, 0, 2], 'column_3': [3.0, 4.5, 2.5]} df = pd.DataFrame(data=dict_data) Мы создали для работы датафрейм. Для того чтобы вычислить какое-либо значение в существующем или но
Оглавление

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

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

Создание датафрейма

Начнем как обычно с создания тестового датафрейма для примера.

import pandas as pd

dict_data = {'column_1': ['a_side', 'b_side', ‘c_side’], 'column_2': [1, 0, 2], 'column_3': [3.0, 4.5, 2.5]}

df = pd.DataFrame(data=dict_data)

Мы создали для работы датафрейм.

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

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

Для того чтобы вычислить какое-либо значение в существующем или новом столбце, достаточно просто указать его.

df['column_4'] = df['column_2'] + df['column_3']

В данном примере создается новый столбец с именем 'column_4'. Значения в этом столбце, это сумма значений столбцов 'column_2' и 'column_3'

Содание столбца
Содание столбца

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

Еще один пример

df['column_5'] = df['column_2'] * df['column_4']

Умножение столбцов
Умножение столбцов

Вместо создания каждый раз нового столбца вы можете вычислить новые значения в уже имеющемся в датафрейме столбце.

Значения в столбце 'column_2' умножаются на 2.

df['column_2'] = df['column_2'] * 2

Умножение столбца на значение
Умножение столбца на значение

Pandas видит, что данный столбец есть в индексе и не создает новый, а построчно совершает операции указанные в команде со всем столбцом сразу.

Операции со строками

В первом примере создадим новую строку вычитанием из первой строки числа 2.

Поскольку python не может применять вычисления к строковым данным, столбец 'column_1' будет нам мешать это сделать со всей строкой. Создадим копию датафрейма без столбца ‘column_1', просто удалим его.

df_1 = df.drop(['column_1'], axis=1)

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

Для того чтобы проводить операции со строками необходимо явно указать что это нужна строка, за это отвечает метод “loc”. В методе “loc” указывается номер индекса необходимой строки. Если для проведения вычислений необходима первая строка, то номер ее индекса - это 0.

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

df_1.loc[3] = df_1.loc[0] + 2

Прибавленние значения к строке
Прибавленние значения к строке

Умножения значений из строки одного датафрейма на значения строки другого датафрейма

Сделаем копию датафрейма

df_2 = df_1.copy()

Копирование датафрейма
Копирование датафрейма

Произведем умножение строки с индексом 0 датафрейма “df_1” на строку с индексом 0 датафрейма “df_2”. Результат должен быть записан в строку с индексом 1 датафрейма “df_1”.

df_1.loc[1] = df_2.loc[0] * df_1.loc[0]

Теперь строка с индексом 1 датафрейма “df_1” выглядит так.

Перемножение строк разных датафреймов
Перемножение строк разных датафреймов

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

Операции с датафреймом

Различные вычислительные операции можно применить и ко всему датафрейму целиком. Такие операции называются векторными.

Прибавим 100 ко всему датафрейму “df_1”

df_1 = df_1 + 100

все значения датафрейма увеличились на 100.

Умножение значений датафрейма
Умножение значений датафрейма

Произведем умножение датафрейма “df_2” на одно значение из датафрейма “df_1”. Значение из столбца “column_3” и первой строки с нулевым индексом равно 103. Соответственно весь датафрейм “df_2” умножен на 103.

df_2 = df_2 * df_1.loc [0, 'column_3']

Умножение датафрейма на значение другого датафрейма
Умножение датафрейма на значение другого датафрейма

Разделим датафрейм “df_1” на датафрейм “df_2”

df_3 = df_1 / df_2

Результат сохранен в новом датафрейме “df_3”.

Деление двух датафреймов
Деление двух датафреймов

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

Для того чтобы правильно делить один датафрейм на другой, в Pandas есть специальный метод “div”, но об этом в другой статье.

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

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

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

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

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

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

Переименование столбцов.