Рубрики
Без рубрики

Как Pandas Concat работает?

https://youtu.be/m1fvgvoy-nw Функция PandaS.concat () сочетает в себе данные из нескольких серий и / или данных Dataframes и интуитивно понятным образом. Это один из самых основных операций Warngling данных, используемых в пандах. В общем, мы рисуем некоторые выводы из данных, анализируя его. Уверенность в наших выводах увеличивается, поскольку мы включаем больше переменных … Как Pandas Concat работает? Прочитайте больше “

Автор оригинала: Priyatham.

Pandas.concat () Функция сочетает в себе данные из нескольких серий и/или DataFrames быстро и интуитивно понятно. Это один из самых основных операций Warngling данных, используемых в пандах. В общем, мы рисуем некоторые выводы из данных, анализируя его. Уверенность в наших выводах увеличивается, поскольку мы включаем больше переменных или метаданных о наших данных. Это достигается путем объединения данных из различных источников данных. Основные объекты, серии PANDAS, серии и Dataframes создаются, сохраняя в виду эти реляционные операции. Например, pd.concat ([df1, df2]) объединяет два данных данных df1. , DF2 вместе горизонтально и приводит к новому датафараме.

Наиболее важным и широко используемым использованием Pandas Concat – pd.concat () состоит в том, чтобы объединить данные данных.

Например, когда вы покупаете новый смартфон, часто вы можете сравнить спецификации и цену телефонов. Это заставляет вас принять обоснованное решение. Такое сравнение можно рассматривать ниже в качестве примера от веб-сайта Amazon для последних телефонов OnePlus.

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

Давайте построим двух данных данных и комбинируйте их, чтобы увидеть, как это работает.

>>> import pandas as pd
>>> df1 = pd.DataFrame(
...             {"Key": ["A", "B", "A", "C"], "C1":[1, 2, 3, 4], "C2": [10, 20, 30, 40]})
>>> df1.index = ["L1", "L2", "L3", "L4"]
>>> print(df1)
   Key  C1  C2
L1   A   1  10
L2   B   2  20
L3   A   3  30
L4   C   4  40
>>> df2 = pd.DataFrame(
...             {"Key": ["A", "B", "C", "D"], "C3": [100, 200, 300, 400]})
>>> df2.index = ["R1", "R2", "R3", "R4"]
>>> print(df2)
   Key   C3
R1   A  100
R2   B  200
R3   C  300
R4   D  400

От официальных пандов документации панд Concat;

Два основных аргумента, используемые в Pandas.concat () с вышеуказанного изображения есть,

  • objs – последовательность серии и/или данных DataFrame объекты
  • Ось – Ось вдоль которой objs объединены

Из двух аргументов, objs остается постоянным. Но, основываясь на значении оси, операция конкатенации отличается. Возможные значения оси являются,

  • Ось – объединить или стекьте данные DataFrames вниз по ряду
  • Ось – объединить или стек данных данных по столбцам

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

1. Row-Wise Concatenation/’index’) Row-Wise Concateenation/«Индекс»)

>>> df3 = pd.concat([df1, df2], axis=0)
>>> print(df3)
   Key   C1    C2     C3
L1   A  1.0  10.0    NaN
L2   B  2.0  20.0    NaN
L3   A  3.0  30.0    NaN
L4   C  4.0  40.0    NaN
R1   A  NaN   NaN  100.0
R2   B  NaN   NaN  200.0
R3   C  NaN   NaN  300.0
R4   D  NaN   NaN  400.0
>>> df3_dash = pd.concat([df1, df2])
>>> print(df3_dash)
   Key   C1    C2     C3
L1   A  1.0  10.0    NaN
L2   B  2.0  20.0    NaN
L3   A  3.0  30.0    NaN
L4   C  4.0  40.0    NaN
R1   A  NaN   NaN  100.0
R2   B  NaN   NaN  200.0
R3   C  NaN   NaN  300.0
R4   D  NaN   NaN  400.0
>>> print(len(df3) == len(df1) + len(df2))
True

Любое количество данных данных может быть дано в первом аргументе, который имеет список таких данных, как [DF1, DF2, DF3, ..., DFN] Отказ

Некоторые наблюдения из приведенных выше результатов:

  • Обратите внимание на выходы DF3 и df3_dash одинаковы. Итак, нам не нужно явно упоминать ось, когда мы хотим объединить в ряды.
  • Количество строк в выходном количестве строк во всех входных данных данных.
  • Столбцы выхода отчетных колонн всех входных данных данных.
  • Есть уникальные столбцы, присутствующие в входных данных. Соответствующие значения на этикетках строки различных входных данных заполнены Нан S ( не число – отсутствующие значения) в выходном файле dataframe.

Давайте визуализируем вышеуказанный процесс в следующей анимации:

2. Column-Wise Concatenation/’columns’) Column-WiSe Concatenation/’Columns’s’)

>>> df3 = pd.concat([df1, df2], axis=1)
>>> print(df3)
    Key   C1    C2  Key     C3
L1    A  1.0  10.0  NaN    NaN
L2    B  2.0  20.0  NaN    NaN
L3    A  3.0  30.0  NaN    NaN
L4    C  4.0  40.0  NaN    NaN
R1  NaN  NaN   NaN    A  100.0
R2  NaN  NaN   NaN    B  200.0
R3  NaN  NaN   NaN    C  300.0
R4  NaN  NaN   NaN    D  400.0
>>> print("The unique row indexes of df1 and df2:", '\n\t', df1.index.append(df2.index).unique())
The unique row indexes of df1 and df2:
       Index(['L1', 'L2', 'L3', 'L4', 'R1', 'R2', 'R3', 'R4'], dtype='object')
>>> print("The row indexes of df3:", "\n\t", df3.index)
The row indexes of df3:
       Index(['L1', 'L2', 'L3', 'L4', 'R1', 'R2', 'R3', 'R4'], dtype='object')
>>> print("The column indexes of df1 and df2:", "\n\t", df1.columns.append(df2.columns))
The column indexes of df1 and df2:
       Index(['Key', 'C1', 'C2', 'Key', 'C3'], dtype='object')
>>> print("The column indexes of df3:", "\n\t", df3.columns)
The column indexes of df3:
       Index(['Key', 'C1', 'C2', 'Key', 'C3'], dtype='object')

Некоторые наблюдения из приведенных выше результатов:

  • Датафафрамы составляют бок о бок.
  • Столбцы в выходных колоннах во всех входных данных данных.
  • Строки в выходных строках во всех входных данных данных.
  • Есть уникальные ряды, присутствующие во всех входных данных. Соответствующие значения в столбце этикетки различных входных данных заполнены Нан s (не число – отсутствующие значения) в выходных данных DataFrame.

Давайте визуализируем вышеуказанный процесс в следующей анимации:

Пожалуйста, посмотрите на начальный таблицу сравнения телефонов OnePlus с веб-сайта Amazon. Столбец в этой таблице составляют все спецификации данного смартфона. Такие все эквивалентные спецификации (этикетки строк) всех сортов (телефонов – метки колонны) объединяются как столбцы для формирования конечной таблицы сравнения.

Итак, для объединения столбцов, у нас должны быть одинаковые показатели строки. В пандах структура данных серии точно предназначена для представления столбцов и их комбинация образует структуру данных данных DataFrame.

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

>>> ser1 = pd.Series([10, 20, 30, 40], name='C1')
>>> ser2 = pd.Series([100, 200, 300, 400], name='C2')
>>> print("Series 1:", "\n", ser1, "\n\n", "Series 2:", "\n",  ser2)
Series 1:
0    10
1    20
2    30
3    40
Name: C1, dtype: int64

Series 2:
0    100
1    200
2    300
3    400
Name: C2, dtype: int64
>>> df = pd.concat([ser1, ser2], axis=1)
>>> print("DataFrame:", "\n", df)
DataFrame:
   C1   C2
0  10  100
1  20  200
2  30  300
3  40  400

Давайте рассмотрим использование, где у нас есть почасовые данные о погоде в течение 4 часов около двух городов. Данные, которые у нас есть, – это только температура (DEGC) и скорость ветра (км/ч). Один из способов хранения своих данных – хранить их в разных данных по датафам на город. Это можно сделать следующим образом,

>>> Date_Hourly = pd.date_range(start = '2020-11-20', periods = 4, freq = 'H')
>>> df_city1 = pd.DataFrame(
...                  {"temp(degC)": [27, 24, 22, 20],
...                   "windspeed(kmph)": [18, 17, 17, 18]},
...                  index = Date_Hourly
...             )
>>> df_city2 = pd.DataFrame(
...                  {"temp(degC)": [30, 33, 33, 34],
...                   "windspeed(kmph)": [23, 25, 27, 30]},
...                  index = Date_Hourly
...             )
>>> print("Weather Data of City 1:", "\n", df_city1)
Weather Data of City 1:
                      temp(degC)  windspeed(kmph)
2020-11-20 00:00:00          27               18
2020-11-20 01:00:00          24               17
2020-11-20 02:00:00          22               17
2020-11-20 03:00:00          20               18
>>> print("Weather Data of City 2:", "\n", df_city2)
Weather Data of City 2:
                      temp(degC)  windspeed(kmph)
2020-11-20 00:00:00          30               23
2020-11-20 01:00:00          33               25
2020-11-20 02:00:00          33               27
2020-11-20 03:00:00          34               30

Теперь мы могли бы захотеть собирать данные двух городов в одном DataFrame для более легкого анализа. Клавиши Multiindex служат идентификаторами для указания источника данных. Это может быть достигнуто путем соединения Multiindex.

Многоиндента Concatenation осуществляется двумя способами;

1. Row-Wise Concatenation/’index’) Row-Wise Concateenation/«Индекс»)

>>> df_concat_rowwise = pd.concat([df_city1, df_city2], axis=0, keys=['City1', 'City2'])
>>> print("Row-Wise Multi-Index Concatenation:", "\n", df_concat_rowwise)
Row-Wise Multi-Index Concatenation:
                            temp(degC)  windspeed(kmph)
City1 2020-11-20 00:00:00          27               18
      2020-11-20 01:00:00          24               17
      2020-11-20 02:00:00          22               17
      2020-11-20 03:00:00          20               18
City2 2020-11-20 00:00:00          30               23
      2020-11-20 01:00:00          33               25
      2020-11-20 02:00:00          33               27
      2020-11-20 03:00:00          34               30

2. Column-Wise Concatenation/’columns’) Column-WiSe Concatenation/’Columns’s’)

>>> df_concat_rowwise = pd.concat([df_city1, df_city2], axis=1, keys=['City1', 'City2']) >>> print("Column-Wise Multi-Index Concatenation:", "\n", df_concat_colwise)
Column-Wise Multi-Index Concatenation:
                          City1                      City2               
                    temp(degC) windspeed(kmph) temp(degC) windspeed(kmph)
2020-11-20 00:00:00         27              18         30              23
2020-11-20 01:00:00         24              17         33              25
2020-11-20 02:00:00         22              17         33              27
2020-11-20 03:00:00         20              18         34              30

То же самое можно достичь для многих городов. После объединения все данные находятся в одном dataframe. Это делает нам эффективно проанализировать погоду вместо того, чтобы получать данные из нескольких источников.

Согласие вдоль рядов ( ось ) очень распространена. Если вы соблюдаете сценарий данных погодных данных после каждого часа данных, прилагаются в следующую строку. Итак, для этой цели метод под названием Добавить () построен на вершине dataframe, чтобы добавить другую строку Dataframe. Это заставляет вас достичь такими же результатами, как pd.concat () с несколькими нажатиями клавиш.

Это может быть реализовано следующим образом,

>>> df1 = pd.DataFrame({'C1': ['A', 'B', 'C', 'D']})
>>> df2 = pd.DataFrame({'C1': ['E', 'F', 'G', 'H']})
>>> print("DataFrame 1:", "\n", df1)
DataFrame 1:
  C1
0  A
1  B
2  C
3  D
>>> print("DataFrame 2:", "\n", df2)
DataFrame 2:
  C1
0  E
1  F
2  G
3  H
>>> pd.concat([df1, df2])
  C1
0  A
1  B
2  C
3  D
0  E
1  F
2  G
3  H
>>> df1.append(df2)
  C1
0  A
1  B
2  C
3  D
0  E
1  F
2  G
3  H

Вы можете наблюдать выше одинаковых результатов для pd.concat ([df1, df2]) и df1.append (df2) Отказ

Каждый раз, когда мы делаем операцию ConcateNation, это создает новое dataframe. Concatenation DataFrame действует эквивалентно операции SQL Join. Таким образом, индекс вывода данных DataFrame сформирован первым присоединенным к операции. Разрешение всех несоответствий между индексами входных данных DataFrames делает его медленно. В некоторых сценариях индексы могут не иметь значения. В таких случаях мы можем игнорировать индексы, чтобы сделать операцию Concat быстрее.

Игнорирование индекса выполняется следующим образом,

>>> df = pd.DataFrame({'C1': [10, 20, 30, 40]}, index=['R1', 'R2', 'R3', 'R4'])
>>> df
    C1
R1  10
R2  20
R3  30
R4  40
>>> df.reset_index(drop=True)
   C1
0  10
1  20
2  30
3  40

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

Модин Создан пакет Python, созданный для ускорения выполнения функций Pandas. Он распространяет вычисление нагрузки на все доступные ядра. Он делает это, фрагментируя DataFrame и выполнение функции, выполняемую на фрагментах DataFrame в других сердечниках, параллельно. Пожалуйста, посмотрите после этого Статья знать об этом подробно.