Фильтрация данных и удаление дубликатов в 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 предоставляет удобные и эффективные инструменты для выполнения этих задач.