слияние данных, соединение

искусственный интеллект

Когда объем данных невелик (миллионы или десятки миллионов), используйте Python для чтения файлов и обработки баз данных. Когда объем данных достигает сотен миллионов, вышеуказанные методы обработки затрудняют обработку данных, в это время для обработки можно использовать MapReduce, spark, hbase и т. д.

1. обработка панд

1.1 merge

Подобно методу подключения реляционных баз данных, различные DatFrames могут быть связаны в соответствии с одним или несколькими ключами.

Типичный сценарий применения этой функции таков: есть две таблицы с разными полями для одного и того же первичного ключа, и они объединены в одну таблицу по первичному ключу.

      left_index=False, right_index=False, sort=True,  
      suffixes=('_x', '_y'), copy=True, indicator=False)

Введение параметра:

 left和right:两个不同的DataFrame;

 how:连接方式,有inner、left、right、outer,默认为inner;

 on:指的是用于连接的列索引名称,必须存在于左右两个DataFrame中,如果没有指定且其他参数也没有指定,则以两个DataFrame列名交集作为连接键;

 left_on:左侧DataFrame中用于连接键的列名,这个参数左右列名不同但代表的含义相同时非常的有用;

 right_on:右侧DataFrame中用于连接键的列名;

 left_index:使用左侧DataFrame中的行索引作为连接键;

 right_index:使用右侧DataFrame中的行索引作为连接键;

 sort:默认为True,将合并的数据进行排序,设置为False可以提高性能;

 suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x', '_y');

 copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能;

 indicator:显示合并数据中数据的来源情况

1.2 concat

pd.concat() – это функция, специально используемая для слияния подключений к данным. Она может работать со строками или столбцами и может указывать метод слияния несливаемых осей (комбинация, пересечение и т. д.).

          ignore_index=False, keys=None,
          levels=None, names=None, sort = False,
          verify_integrity=False, copy=True)

объекты: df, [df1, df2] и т. д.

направление оси Способ соединения осей, по умолчанию 0, соединено по столбцу, добавлено к концу строки и 1 к концу столбца.

Соединение методом слияния Объединены ли данные на других осях путем пересечения (внутреннего) или объединения (внешнего).

сохранить индекс ignore_index Сохранять ли исходный индекс таблицы, по умолчанию зарезервирован, если True, автоматически добавляется естественный индекс.

ключи отношения соединения При построении иерархического индекса с использованием переданного ключа в качестве самого внешнего уровня каждой таблице назначается индекс первого уровня.

уровни уровня индекса

индекс имена имена Имя индекса, включая многоуровневые индексы.

проверка индекса verify_integrity Если параметр имеет значение True, если объединенные данные содержат строки с тем же индексом, что и исходные данные, будет сообщено об ошибке.

сортировать сортировать Сортировка несвязанных осей.

глубокая копия Если False, не выполнять глубокое копирование.

1.3 join

Метод соединения обеспечивает простой способ объединения разных индексов столбцов из двух фреймов данных в один фрейм данных.

Значение параметров в основном такое же, как и у метода слияния, за исключением того, что метод соединения по умолчанию использует левое внешнее соединение как=left.

Соединение — это операция слияния, основанная на индексе строки. Если ваше требование состоит в том, чтобы объединить два DataFrames и объединить их в соответствии с индексами двух DF, то, очевидно, Join - лучший выбор.

        self, other, on=None, how="left", lsuffix="", rsuffix="", sort=False
    ) -> "DataFrame":
        """
        Join columns of another DataFrame.

        Join columns with `other` DataFrame either on index or on a key
        column. Efficiently join multiple DataFrame objects by index at once by
        passing a list.

        Parameters
        ----------
        other : DataFrame, Series, or list of DataFrame
            Index should be similar to one of the columns in this one. If a
            Series is passed, its name attribute must be set, and that will be
            used as the column name in the resulting joined DataFrame.
        on : str, list of str, or array-like, optional
            Column or index level name(s) in the caller to join on the index
            in `other`, otherwise joins index-on-index. If multiple
            values given, the `other` DataFrame must have a MultiIndex. Can
            pass an array as the join key if it is not already contained in
            the calling DataFrame. Like an Excel VLOOKUP operation.
        how : {'left', 'right', 'outer', 'inner'}, default 'left'
            How to handle the operation of the two objects.

            * left: use calling frame's index (or column if on is specified)
            * right: use `other`'s index.
            * outer: form union of calling frame's index (or column if on is
              specified) with `other`'s index, and sort it.
              lexicographically.
            * inner: form intersection of calling frame's index (or column if
              on is specified) with `other`'s index, preserving the order
              of the calling's one.
        lsuffix : str, default ''
            Suffix to use from left frame's overlapping columns.
        rsuffix : str, default ''
            Suffix to use from right frame's overlapping columns.
        sort : bool, default False
            Order result DataFrame lexicographically by the join key. If False,
            the order of the join key depends on the join type (how keyword).

        Returns
        -------
        DataFrame
            A dataframe containing columns from both the caller and `other`.


в другое: DataFrame, Series или список DataFrame, другой фрейм данных, ряд или список фреймов данных.

on: столбец, участвующий в соединении, аналогичный параметру on в sql.

как: {'левый', 'правый', 'внешний', 'внутренний'}, по умолчанию 'левый', аналогично соединению в sql.

lsuffix: суффикс для повторяющихся столбцов в левом кадре данных

rsuffix: суффикс для повторяющихся столбцов в правильном DataFrame

sort: лексикографически сортировать результаты по ключу соединения

1.4 append

Среди четырех методов слияния самым простым и легким в использовании методом слияния является добавление, но из-за его простоты и простоты использования он поддерживает гораздо меньше операций, чем предыдущие три.Что касается обычных операций, давайте взглянем на подробное объяснение. сначала из параметров. :

другие могут быть переданы в DataFrame, Series или списке DataFrames (Series) (в случае слияния нескольких DF (Series) в df).

ignore_index Boolean, по умолчанию False, игнорирует объединенное значение индекса.

verify_integrity boolean, по умолчанию False (дубликаты разрешены) Проверяет объединенный объект результата на наличие столбцов индекса на наличие дубликатов.

sort не сортирует по умолчанию. Отсортируйте несвязанную ось, если она еще не выровнена, когда соединение является внешним.

2. слияние данных sql

Существует четыре типа SQL JOIN:

ВНУТРЕННЕЕ СОЕДИНЕНИЕ: если в таблице есть хотя бы одно совпадение, вернуть строку (эквивалентно операции пересечения в наборе)

LEFT JOIN: возвращает все строки из левой таблицы (включая все содержимое левой таблицы), даже если в правой таблице нет совпадений.

RIGHT JOIN: вернуть все строки из правой таблицы, даже если в левой таблице нет совпадений (включая все содержимое правой таблицы).

ПОЛНОЕ СОЕДИНЕНИЕ: возвращать строки, если есть совпадение в одной из таблиц (эквивалентно объединению в наборе)

3. Консолидация больших данных

3.1 MapReduce

Операция слияния завершена на фазе сокращения, давление обработки на стороне сокращения слишком велико, операционная нагрузка узла карты очень низкая, коэффициент использования ресурсов невысок, и на фазе сокращения легко генерируется перекос данных.

3.2 hive

Реализация функций Concat_ws и collect_set() (удаление дубликатов столбца)

Используйте оператор hive sql для обработки:

Оператор соединения в hql аналогичен оператору в sql, но в Hive поддерживается только эквивалентное соединение, а не равное соединение не поддерживается.

внутреннее соединение внутреннее соединение: пересечение

внешнее соединение внешнее соединение

Левое соединение и правое соединение: левое соединение, правое соединение

В большинстве случаев Hive запускает задание MapReduce для каждого объекта подключения JOIN. В приведенном выше примере сначала запускается задание MapReduce, чтобы связать преподавателя таблиц и курс таблиц, а затем запускается задание MapReduce, чтобы соединить выходные данные первого задания MapReduce с оценкой таблицы. Поэтому при подключении нескольких таблиц будет запущено несколько задач MapReduce.

3.2 hbase

Hbase реализует вторичный индекс, совместный запрос, объединение и другие операции, а также конкретную сводку позже.

3.3 Другие базы данных и методы

flink объединяет потоки, storm, mongdb, Redis и многое другое.