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['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)
Для того чтобы проводить операции со строками необходимо явно указать что это нужна строка, за это отвечает метод “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
Получение информации о данных в датафрейме.
Операции со столбцами.
Переименование столбцов.