HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В работе с данными приходится собирать их из разных источников и объединять в единую структуру. В библиотеке Pandas реализован функционал для таких операций над табличными данными в виде методов:</p>
1 <p>В работе с данными приходится собирать их из разных источников и объединять в единую структуру. В библиотеке Pandas реализован функционал для таких операций над табличными данными в виде методов:</p>
2 <ul><li>concat()</li>
2 <ul><li>concat()</li>
3 <li>join()</li>
3 <li>join()</li>
4 <li>merge()</li>
4 <li>merge()</li>
5 </ul><p>На данном уроке рассмотрим практические случаи, в которых они применяются.</p>
5 </ul><p>На данном уроке рассмотрим практические случаи, в которых они применяются.</p>
6 <h2>Метод concat()</h2>
6 <h2>Метод concat()</h2>
7 <p>За основу возьмем данные о кликах на сайтах 4 магазинов за 28 дней.</p>
7 <p>За основу возьмем данные о кликах на сайтах 4 магазинов за 28 дней.</p>
8 <p>Разобьем исходные данные на два датафрейма за первую и вторую недели месяца. Это операция делается с использованием срезов.</p>
8 <p>Разобьем исходные данные на два датафрейма за первую и вторую недели месяца. Это операция делается с использованием срезов.</p>
9 <p>Операция, обратная разбиению - конкатенация, применяется, чтобы собрать куски данных в единый фрагмент. Если предположить, что отчетные материалы за разные недели лежат в разных таблицах, а для аналитика необходимо поработать над всеми значениями сразу, то можно использовать метод concat(). В качестве параметров ему передается список тех датасетов, которые необходимо объединить:</p>
9 <p>Операция, обратная разбиению - конкатенация, применяется, чтобы собрать куски данных в единый фрагмент. Если предположить, что отчетные материалы за разные недели лежат в разных таблицах, а для аналитика необходимо поработать над всеми значениями сразу, то можно использовать метод concat(). В качестве параметров ему передается список тех датасетов, которые необходимо объединить:</p>
10 <p>Рассмотрим ситуацию, в которой данные разбиты по парам магазинов. Возможно, это данные из разных городов, и лежат они в разных таблицах баз данных:</p>
10 <p>Рассмотрим ситуацию, в которой данные разбиты по парам магазинов. Возможно, это данные из разных городов, и лежат они в разных таблицах баз данных:</p>
11 <p>Чтобы собрать их в единое целое, применяется метод concat(), но указывается направление объединения с помощью параметра axis:</p>
11 <p>Чтобы собрать их в единое целое, применяется метод concat(), но указывается направление объединения с помощью параметра axis:</p>
12 <ul><li>0 - объединение происходит по строкам</li>
12 <ul><li>0 - объединение происходит по строкам</li>
13 <li>1 - по столбцам</li>
13 <li>1 - по столбцам</li>
14 </ul><p>Стоит быть внимательными с направлением объединения. Если его не указать в данном примере, то результат будет не тот, который ожидается:</p>
14 </ul><p>Стоит быть внимательными с направлением объединения. Если его не указать в данном примере, то результат будет не тот, который ожидается:</p>
15 <p>Фрагменты данных наподобие срезов по неделям и парам магазинов довольно типичная ситуация. Однако бывают случаи, когда срезы делаются по разным пересекающимся промежуткам времени. Рассмотрим данные кликов для пар магазинов за пять рабочих дней:</p>
15 <p>Фрагменты данных наподобие срезов по неделям и парам магазинов довольно типичная ситуация. Однако бывают случаи, когда срезы делаются по разным пересекающимся промежуткам времени. Рассмотрим данные кликов для пар магазинов за пять рабочих дней:</p>
16 <p>Здесь дни месяца не совпадают, но пересекаются. Для объединения также используется метод concat(), который объединит по соответствующим индексам и оставит пропуски в тех днях, для которых значений нет.</p>
16 <p>Здесь дни месяца не совпадают, но пересекаются. Для объединения также используется метод concat(), который объединит по соответствующим индексам и оставит пропуски в тех днях, для которых значений нет.</p>
17 <h2>Метод join()</h2>
17 <h2>Метод join()</h2>
18 <p>Метод concat() позволяет производить операции конкатенации по направлениям. Однако при работе с данными часто требуется более сложное объединение по индексам. Одним из методов для таких операций является метод join():</p>
18 <p>Метод concat() позволяет производить операции конкатенации по направлениям. Однако при работе с данными часто требуется более сложное объединение по индексам. Одним из методов для таких операций является метод join():</p>
19 <p>Важно отметить, что join() - это метод объекта DataFrame, который позволяет объединять два датафрейма по индексам. При этом результат зависит от того, к какому датафрейму применяется метод. Если поменять местами датафреймы в примере выше, результат будет отличаться:</p>
19 <p>Важно отметить, что join() - это метод объекта DataFrame, который позволяет объединять два датафрейма по индексам. При этом результат зависит от того, к какому датафрейму применяется метод. Если поменять местами датафреймы в примере выше, результат будет отличаться:</p>
20 <p>В примерах выше результирующий датафрейм содержит все индексы того датафрейма, к которому применялся метод. Такой способ объединения соответствует left join и применяется по умолчанию. Метод join() поддерживает различные сценарии объединения, включая:</p>
20 <p>В примерах выше результирующий датафрейм содержит все индексы того датафрейма, к которому применялся метод. Такой способ объединения соответствует left join и применяется по умолчанию. Метод join() поддерживает различные сценарии объединения, включая:</p>
21 <ul><li>inner join - объединение по пересечению индексов</li>
21 <ul><li>inner join - объединение по пересечению индексов</li>
22 <li>left join - включает все индексы левого датафрейма</li>
22 <li>left join - включает все индексы левого датафрейма</li>
23 <li>right join - включает все индексы правого датафрейма</li>
23 <li>right join - включает все индексы правого датафрейма</li>
24 <li>outer join - объединение по всем индексам обоих датафреймов</li>
24 <li>outer join - объединение по всем индексам обоих датафреймов</li>
25 </ul><p>Для их использования задаётся параметр how:</p>
25 </ul><p>Для их использования задаётся параметр how:</p>
26 <p>left join:</p>
26 <p>left join:</p>
27 <p>right join:</p>
27 <p>right join:</p>
28 <p>inner join:</p>
28 <p>inner join:</p>
29 <p>outer join:</p>
29 <p>outer join:</p>
30 <p>Метод join() работает<strong>по индексам по умолчанию</strong>, но можно указывать конкретные колонки через параметр on. Если нужно объединять по колонкам с разными названиями, лучше использовать merge().</p>
30 <p>Метод join() работает<strong>по индексам по умолчанию</strong>, но можно указывать конкретные колонки через параметр on. Если нужно объединять по колонкам с разными названиями, лучше использовать merge().</p>
31 <h2>Метод merge()</h2>
31 <h2>Метод merge()</h2>
32 <p>Объединение данных можно производить не только по индексам, но и по столбцам значений двух датафреймов. Для этого не достаточно функционала метода join(), который может производить объединения по индексам датафреймов. Для таких случаев в Pandas используется метод merge().</p>
32 <p>Объединение данных можно производить не только по индексам, но и по столбцам значений двух датафреймов. Для этого не достаточно функционала метода join(), который может производить объединения по индексам датафреймов. Для таких случаев в Pandas используется метод merge().</p>
33 <p>Рассмотрим датасет с кликами, в котором дни месяца указаны в столбце day, а не в индексе строк:</p>
33 <p>Рассмотрим датасет с кликами, в котором дни месяца указаны в столбце day, а не в индексе строк:</p>
34 <p>Будем решать задачу по объединению двух датасетов, содержащих пятидневные срезы по парам магазинов:</p>
34 <p>Будем решать задачу по объединению двух датасетов, содержащих пятидневные срезы по парам магазинов:</p>
35 <p>Для их объединения необходимо указать сперва левый, а затем правый датафреймы. Также нужно определить по каким столбцам в каждом из датафреймов будет происходить объединение.</p>
35 <p>Для их объединения необходимо указать сперва левый, а затем правый датафреймы. Также нужно определить по каким столбцам в каждом из датафреймов будет происходить объединение.</p>
36 <p>Также как и в методе join() в методе merge() поддерживаются различные сценарии объединения данных:</p>
36 <p>Также как и в методе join() в методе merge() поддерживаются различные сценарии объединения данных:</p>
37 <p>inner merge:</p>
37 <p>inner merge:</p>
38 <p>left merge:</p>
38 <p>left merge:</p>
39 <p>right merge:</p>
39 <p>right merge:</p>
40 <p>outer merge:</p>
40 <p>outer merge:</p>
41 <p>Метод merge() чаще используется для объединения по колонкам, а join() - по индексам. Можно объединять по нескольким колонкам одновременно, передав список: on=['key1','key2']. Метод merge() полностью аналогичен SQL JOIN по типу объединения (inner, left, right, outer).</p>
41 <p>Метод merge() чаще используется для объединения по колонкам, а join() - по индексам. Можно объединять по нескольким колонкам одновременно, передав список: on=['key1','key2']. Метод merge() полностью аналогичен SQL JOIN по типу объединения (inner, left, right, outer).</p>
42 <h2>Выводы</h2>
42 <h2>Выводы</h2>
43 <p>На данном уроке мы познакомились с различными методами Pandas для объединения табличных данных. Рассмотренные методы применяются по мере усложнения производимой операции:</p>
43 <p>На данном уроке мы познакомились с различными методами Pandas для объединения табличных данных. Рассмотренные методы применяются по мере усложнения производимой операции:</p>
44 <ul><li>concat() - данные объединяются по строкам или по столбцам с сохранением всех значений</li>
44 <ul><li>concat() - данные объединяются по строкам или по столбцам с сохранением всех значений</li>
45 <li>join() - объединяюся датафреймы по индексам</li>
45 <li>join() - объединяюся датафреймы по индексам</li>
46 <li>merge() - объединяются датафреймы по наборам столбцов</li>
46 <li>merge() - объединяются датафреймы по наборам столбцов</li>
47 </ul><p>Как мы увидели, методы join() и merge() поддерживают при этом различные сценарии объединений. Используя набор данных методов, аналитик может собирать довольно сложные таблицы по набору фрагментов данных.</p>
47 </ul><p>Как мы увидели, методы join() и merge() поддерживают при этом различные сценарии объединений. Используя набор данных методов, аналитик может собирать довольно сложные таблицы по набору фрагментов данных.</p>