Фильтрация данных и удаление дубликатов в pandas

Создание DataFrame

Для начала, давайте создадим DataFrame с помощью pandas. В этом примере мы создадим DataFrame, который содержит информацию о командах и их очках:

import pandas as pd

df = pd.DataFrame({
    'team': ['a', 'b', 'b', 'c', 'c', 'd'],
    'points': [3, 7, 7, 8, 8, 9],
    'assists': [8, 6, 7, 9, 9, 3]
})

print(df)

Удаление дубликатов

Функция drop_duplicates() в pandas позволяет удалять дубликаты из DataFrame. Если вызвать эту функцию без параметров, она удалит все строки, которые полностью дублируют друг друга:

df.drop_duplicates()

Можно также указать параметр keep=False для удаления всех дублирующихся строк, включая первую встречающуюся:

df.drop_duplicates(keep=False)

Фильтрация по определенным столбцам

Если вы хотите удалить дубликаты только по определенным столбцам, вы можете передать их имена в функцию drop_duplicates() в качестве списка:

df.drop_duplicates(['team', 'points'])

Использование функции duplicated()

Еще одной полезной функцией в pandas является duplicated(), которая возвращает серию булевых значений, показывающих, является ли каждая строка дубликатом предыдущих строк:

df.duplicated()

Фильтрация данных в DataFrame

Фильтрация данных в DataFrame в pandas может быть выполнена различными способами. Один из наиболее распространенных методов - использование булевых масок. Булева маска - это серия или массив булевых (True/False) значений, которые можно использовать для выбора только определенных строк или столбцов из DataFrame.

Вот пример, как это можно сделать:

# Создаем DataFrame
import pandas as pd

data = {
    'team': ['a', 'b', 'c', 'd', 'e', 'f'],
    'points': [1, 2, 3, 4, 5, 6],
    'assists': [5, 4, 3, 2, 1, 0]
}

df = pd.DataFrame(data)

# Создаем булеву маску для столбца 'points', где значения больше 3
mask = df['points'] > 3

# Применяем маску к DataFrame
filtered_df = df[mask]

print(filtered_df)

В этом примере mask - это булева маска, которая содержит значения True для всех строк в столбце 'points', где значение больше 3. Затем мы применяем эту маску к исходному DataFrame df, чтобы получить новый DataFrame filtered_df, который содержит только те строки, где значение в столбце 'points' больше 3.

Также можно применять более сложные условия, комбинируя их с помощью операторов & (и) и | (или). Например, если вы хотите выбрать все строки, где 'points' больше 3 и 'assists' меньше 5, вы можете сделать следующее:

mask = (df['points'] > 3) & (df['assists'] < 5)
filtered_df = df[mask]

Использование метода .query()

Еще один способ фильтрации данных в DataFrame - использование метода .query(). Этот метод позволяет задать условие фильтрации в виде строки. Например:

filtered_df = df.query('points > 3 and assists < 5')

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

Заключение

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