При работе с анализом и манипулированием данными часто встречаются сценарии, когда вам нужно найти необычные записи между двумя кадрами данных. Эти необычные записи могут представлять уникальные или разные точки данных, которые существуют в одном кадре данных, но отсутствуют в другом. В этой статье мы рассмотрим несколько методов идентификации и извлечения этих необычных записей с помощью Python и мощной библиотеки Pandas.
Метод 1: использование функции merge()
Один простой подход — использовать функцию merge() в Pandas. Он позволяет объединить два кадра данных на основе общего столбца или индекса, а указав параметр «индикатор» можно определить, какие записи уникальны для каждого кадра данных.
import pandas as pd
df1 = pd.DataFrame({'ID': [1, 2, 3],
'Value': ['A', 'B', 'C']})
df2 = pd.DataFrame({'ID': [2, 3, 4],
'Value': ['B', 'C', 'D']})
merged = pd.merge(df1, df2, on='ID', how='outer', indicator=True)
uncommon_records = merged.loc[merged['_merge'] != 'both']
print(uncommon_records)
Метод 2: использование функций concat() и drop_duplications().
Другой подход предполагает объединение двух кадров данных и последующее удаление дубликатов. Сохраняя только те записи, которые появляются один раз в объединенном фрейме данных, вы можете найти необычные записи.
import pandas as pd
df1 = pd.DataFrame({'ID': [1, 2, 3],
'Value': ['A', 'B', 'C']})
df2 = pd.DataFrame({'ID': [2, 3, 4],
'Value': ['B', 'C', 'D']})
concatenated = pd.concat([df1, df2])
uncommon_records = concatenated.drop_duplicates(keep=False)
print(uncommon_records)
Метод 3: использование функции isin()
Функция isin() в Pandas позволяет вам проверить, присутствуют ли значения в одном кадре данных в другом. Отрицая результат и фильтруя кадр данных, вы можете получить необычные записи.
import pandas as pd
df1 = pd.DataFrame({'ID': [1, 2, 3],
'Value': ['A', 'B', 'C']})
df2 = pd.DataFrame({'ID': [2, 3, 4],
'Value': ['B', 'C', 'D']})
uncommon_records = df1[~df1.isin(df2)].dropna()
print(uncommon_records)
В этой статье мы рассмотрели три различных метода поиска необычных записей между двумя фреймами данных в Python с использованием библиотеки Pandas. Используя функции merge(), concat(), drop_duulates() и isin(), вы можете легко идентифицировать и извлекать уникальные или отличающиеся точки данных. В зависимости от вашего конкретного варианта использования и структуры данных вы можете выбрать наиболее подходящий метод для эффективного анализа и сравнения кадров данных.