Найти тему
597 подписчиков

Диагностика различий в наборах данных, которая сэкономит много времени

Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах. Сначала создадим демонстрационные датасеты:

import pandas as pd
import numpy as np

df1 = pd.DataFrame([[None, np.nan, 23], ['AEH', 2, 14], ['TSA', 1, 22]],
columns=['fio', 'factory', 'salary'])
df2 = pd.DataFrame([['TSA', 1, '22-22-22'], ['STB', 3, '88-88-88'],
[None, 1, None]], columns=['fio', 'factory', 'phone'])
display(df1)
display(df2)

Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах.

Объединим датафреймы и рассмотрим распространенный способ проверки факта отсутствия ключа в одном из наборов при внешнем соединении - пропуски по присоединяемым полям:

df = df1.merge(df2, on=['fio', 'factory'], how='outer')

df[df['phone'].isna()]

Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах.-2

Как можно заметить, такой способ нахождения различий работает не на 100%. Один из пропусков уже был во втором датасете (последний), поэтому он тоже выведен на экран. Более простым способом является использование аргумента indicator, который помечает, где присутствует ключ (в обоих либо только в одном из присоединяемых наборов):

df = df1.merge(df2, on=['fio', 'factory'], how='outer', indicator='ind')
df

Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах.-3

df['ind'].unique()

Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах.-4

Из вывода выше видим, если ключ присутствовал только в левом наборе, он помечается индикатором 'left_only', правом - 'right_only', в обоих - 'both'.

Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах.-5