Pandas – это мощная библиотека для обработки и анализа данных, которая предоставляет множество инструментов для выполнения арифметических и логических операций над DataFrame и Series. Давайте рассмотрим, как применять эти операции для решения различных задач.
Базовые арифметические операции могут быть применены ко всему DataFrame или к отдельным столбцам.
import pandas as pd
# Создаем простой DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# Прибавляем константу
print(df + 2)
# A B
# 0 3 6
# 1 4 7
# 2 5 8
Операции могут выполняться между столбцами:
df['C'] = df['A'] + df['B']
print(df['C'])
# 0 5
# 1 7
# 2 9
# Name: C, dtype: int64
Иногда необходимы более сложные операции, для которых можно использовать apply
:
df['D'] = df['A'].apply(lambda x: x**2)
print(df['D'])
# 0 1
# 1 4
# 2 9
# Name: D, dtype: int64
Pandas умеет автоматически выравнивать данные по индексам при выполнении операций:
df1 = pd.DataFrame({'A': [1, 2, 3]}, index=['a', 'b', 'c'])
df2 = pd.DataFrame({'A': [4, 5, 6]}, index=['b', 'c', 'd'])
print(df1 + df2)
# A
# a NaN
# b 6.0
# c 8.0
# d NaN
Логические операции часто используются для фильтрации данных.
result = df[df['A'] > 2]
Для комбинации условий используются операторы &
(и), |
(или) и ~
(не):
result = df[(df['A'] > 2) & (df['B'] < 6)]
eval()
позволяет быстро выполнять сложные выражения:
df.eval('C = A + B', inplace=True)
Сравнение двух DataFrame позволяет проверить, равны ли они:
print(df1.equals(df2))
Когда вы выполняете арифметические операции между двумя DataFrame или Series, может возникнуть ситуация, когда в одном из объектов отсутствует значение. Pandas предоставляет способы обработки таких ситуаций:
df1 = pd.DataFrame({'A': [1, 2, 3, 4]})
df2 = pd.DataFrame({'A': [10, 20, 30]})
print(df1 + df2)
# A
# 0 11.0
# 1 22.0
# 2 33.0
# 3 NaN
В результате вы получите NaN
там, где отсутствуют значения. Для замены NaN
на конкретное значение используйте метод fillna()
:
df1 = pd.DataFrame({'A': [1, 2, 3, 4]})
df2 = pd.DataFrame({'A': [10, 20, 30]})
result = (df1 + df2).fillna(0)
print(result)
# A
# 0 11.0
# 1 22.0
# 2 33.0
# 3 0.0
Метод isin()
полезен, когда нужно отфильтровать данные на основе списка значений:
values = [2, 4]
filtered = df[df['A'].isin(values)]
print(filtered)
# A B
# 1 2 5
Используйте where
для комбинирования данных из двух DataFrame на основе условия:
df1 = pd.DataFrame({'A': [1, 2, 3]})
df2 = pd.DataFrame({'A': [10, 20, 30]})
combined = df1.where(df1 > 2, df2)
print(combined)
# A
# 0 10
# 1 20
# 2 3
В этом примере в combined
будет значение из df1
, если значение в df1
больше 2, иначе будет значение из df2
.
В Pandas предоставлен широкий спектр инструментов для арифметических и логических операций, что делает обработку данных гибкой и эффективной. Совет: чем больше вы практикуетесь, тем легче будет найти оптимальный способ решения вашей конкретной задачи.
Содержание: