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 в других сердечниках, параллельно. Пожалуйста, посмотрите после этого Статья знать об этом подробно.