Анализ данных Pandas - подробное объяснение мозаики слияния данных

анализ данных
Анализ данных Pandas - подробное объяснение мозаики слияния данных

Публичный аккаунт WeChat: «Python Reading Finance»
Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте сообщение в публичном аккаунте

Для облегчения обслуживания данные общих компаний хранятся в отдельных таблицах в базе данных.Например, одна таблица используется для хранения основной информации обо всех пользователях, а одна таблица используется для хранения статуса потребления пользователей. Поэтому при ежедневной обработке данных часто необходимо совмещать две таблицы.сращены вместеИспользуйте, такая операция соответствует SQL.join, в пандах используетсяmergeреализовать. В этой статье речь пойдет оmergeглавный принцип.

В разделе введения выше говоритсяmergeИспользуется для склейки двух таблиц, поэтому при склейке естественно нужно объединить информацию о пользователекорреспонденция один на одинсращивание, поэтому две склеиваемые таблицы должны иметь общую идентификацию пользователяключ. Подводя итог, весьmergeпроцесс заключается в преобразовании информациисовпадение один к одномупроцесс, описанный нижеmergeчетыре типа'inner','left','right'и'outer'.

1. внутренний

mergeиз'inner'типвнутреннее соединение, это займетПересечение ключей двух таблицДелайте сшивание. Что это обозначает? Ниже приведена пошаговая разборка в графическом виде.

Во-первых, у нас есть следующие данные, данные слева и справа представляют собой данные пользователя.основная информацияиинформация для потребителей, ключ, соединяющий две таблицы,userid.

数据.png

теперь используйте'inner'способ сделатьmerge

In [6]: df_1.merge(df_2,how='inner',on='userid')
Out[6]:
  userid  age  payment
0      a   23     2000
1      c   32     3500

Схема процесса:

① Возьмите ключи от двух столов.перекресток,здесьdf_1иdf_2изuseridПересечение ул.{a,c}

inner_1.png

②Соответствующее сопоставление

inner_2.png

③ Результаты

inner_3.png

Краткое описание процесса:

inner_4.png

Я считаю, что весь процесс понять не сложно.Приведенная выше демонстрация состоит в том, что под одним и тем же ключом две таблицы соответствуют только одним данным (один пользователь соответствует одной записи потребления), то, еслиОдин пользователь соответствует нескольким записям потребленияЕсли да, то как это сочетается?

Предположим, что текущие данные становятся следующими, вdf_2, есть два иaСоответствующие данные:

数据2.png

также использоватьinnerспособ сделатьmerge:

In [12]: df_1.merge(df_2,how='inner',on='userid')
Out[12]:
  userid  age  payment
0      a   23     2000
1      a   23      500
2      b   46     1000
3      c   32     3500

Кроме всего процессаСоответствующий этап сопоставления, остальные в основном такие же, как указано выше.

Схема процесса:

① Возьмите ключи от двух столов.перекресток,здесьdf_1иdf_2изuseridПересечение ул.{a,b,c}

inner_2_1.png

② Когда соответствующий матч сделан, из-заaИмеются две соответствующие записи потребления, поэтому при склейке будет отображаться таблица с базовой информацией о пользователе.aсоответствующие данныеСкопируйте еще одну строку, чтобы она соответствовала справа.

inner_2_2.png

③ Результаты

inner_2_3.png

2. левый и правый

'left'и'right'изmergeСпособ на самом деле аналогичный, соответственно называетсялевое соединениеиправильное соединение. Эти два метода могут быть преобразованы друг в друга, поэтому здесь они представлены вместе.

'left':mergeкогда, сКлюч таблицы слева — эталонСделайте сопряжение, если ключа в таблице слева нет, справа используйте отсутствующее значениеNaNзаполнение.

'right':mergeкогда, сКлюч таблицы справа является эталономСделайте сопряжение, если ключа в таблице справа нет, слева используйте отсутствующее значениеNaNзаполнение.

Что это обозначает? Чтобы объяснить это конкретно на примере, это демонстрационные данные

数据3_left.png

теперь используйте'left'способ сделатьmerge

In [21]: df_1.merge(df_2,how='left',on='userid')
Out[21]:
  userid  age  payment
0      a   23   2000.0
1      b   46      NaN
2      c   32   3500.0
3      d   19      NaN

Схема процесса:

①Сопряжение выполняется на основе всех ключей в таблице слева. На рисунке, посколькуeНет в таблице слева, поэтому сопряжение выполняться не будет.

left_1.png

②Если в таблице справаpaymentСтолбцы объединяются в левую таблицу с отсутствующими значениями для тех, у которых нет соответствующих значений.NaNзаполнение

left_2.png

Краткое описание процесса:

left_3.png

за'right'Типmergeи'left'На самом деле это почти то же самое.Пока позиции двух таблиц меняются местами, результаты, возвращаемые двумя методами, одинаковы (), а именно:

In [22]: df_2.merge(df_1,how='right',on='userid')
Out[22]:
  userid  payment  age
0      a   2000.0   23
1      c   3500.0   32
2      b      NaN   46
3      d      NaN   19

Что касается'left'и'right'(и даже описанные ниже'outer') связанные ключи - это случаи один ко многим, принцип и выше'inner'аналогичны и здесь повторяться не будут.

3. внешний

'outer'давнешнее соединение, в процессе сварки потребуетсяОбъединение ключей двух таблицДелайте сшивание. Видеть текст недостаточно интуитивно, давайте возьмем пример!

Или используйте демонстрационные данные, использованные выше

数据3_left.png

на этот раз использовать'outer'провестиmerge

In [24]: df_1.merge(df_2,how='outer',on='userid')
Out[24]:
  userid   age  payment
0      a  23.0   2000.0
1      b  46.0      NaN
2      c  32.0   3500.0
3      d  19.0      NaN
4      e   NaN    600.0

Схема выглядит следующим образом:

① Возьмите объединение двух ключей таблицы, вот{a,b,c,d,e}

outer_1.png

② Объедините столбцы данных двух таблиц и используйте пропущенные значения для мест, которые не совпадают.NaNзаполнять

outer_2.png

Друзья, которые могут прочитать это, также должны в основном пониматьmergeВесь процесс, в заключение,mergeРазница между разными типами заключается в том, что при сращиванииНабор ключей для двух выбранных столов разный. О пандахmergeПредставляйте здесь!

Нелегко быть оригинальным. Если вы считаете, что это полезно, надеюсь, вы поставите лайк. Спасибо, старые утюги.

Отсканируйте код, чтобы подписаться на официальный аккаунт"Питон Чтение Финансов", получите галантерейные товары в первый раз, и вы также можете присоединиться к группе обмена обучением Python! !

底部二维码.png