Множественное условное фильтрование и применение пользовательских функций

Множественное условное фильтрование в pandas позволяет выбирать данные на основе нескольких условий, а применение пользовательских функций (или apply-методов) дает гибкость в обработке данных. Вот подробное объяснение и примеры.

Множественное условное фильтрование

В pandas вы можете фильтровать DataFrame, используя несколько условий с помощью логических операторов & (и), | (или) и ~ (не).

Пример:

import pandas as pd

# Создаем DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40],
    'Salary': [50000, 60000, 70000, 80000]
}
df = pd.DataFrame(data)

# Фильтрация: Возраст больше 30 и зарплата больше 60000
filtered_df = df[(df['Age'] > 30) & (df['Salary'] > 60000)]
print(filtered_df)

Вывод:

      Name  Age  Salary
2  Charlie   35   70000
3    David   40   80000

Применение пользовательских функций

Вы можете использовать функцию apply() для применения пользовательских функций к DataFrame или Series.

Пример 1: Применение функции к столбцу

import pandas as pd

# Создаем DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40]
}
df = pd.DataFrame(data)

# Пользовательская функция для проверки, является ли возраст взрослым
def is_adult(age):
    return age >= 18

# Применение функции к столбцу 'Age'
df['Is_Adult'] = df['Age'].apply(is_adult)
print(df)

Вывод:

      Name  Age  Is_Adult
0    Alice   25      True
1      Bob   30      True
2  Charlie   35      True
3    David   40      True

Пример 2: Применение функции к строкам DataFrame

import pandas as pd

# Создаем DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40],
    'Salary': [50000, 60000, 70000, 80000]
}
df = pd.DataFrame(data)

# Пользовательская функция для расчета налогов
def calculate_tax(row):
    if row['Salary'] > 60000:
        return row['Salary'] * 0.2
    else:
        return row['Salary'] * 0.1

# Применение функции к строкам DataFrame
df['Tax'] = df.apply(calculate_tax, axis=1)
print(df)

Вывод:

      Name  Age  Salary    Tax
0    Alice   25   50000  5000.0
1      Bob   30   60000  6000.0
2  Charlie   35   70000 14000.0
3    David   40   80000 16000.0

Заключение

Множественное условное фильтрование позволяет выбирать данные по нескольким критериям, а применение пользовательских функций через apply() позволяет гибко обрабатывать и изменять данные в DataFrame. Эти инструменты особенно полезны при работе с большими наборами данных и сложными условиями обработки.

Last updated