English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Пример операции подключения Pandas
Pandas предоставляет различные функции, которые позволяют легко комбинировать Series, DataFrame и Panel объекты.
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False)
objs − Это последовательность Series или карта, DataFrame или Panel объект. axis − {0, 1, ...}, по умолчанию 0. Это ось, которую нужно слить. join − {'inner', 'outer'}, по умолчанию 'outer'. Как обрабатывать индексы других осей. Внешний - это объединение, внутренний - это перекрестное слияние. ignore_index − Булево значение, по умолчанию False. Если True, не использовать значения индексов на оси слияния. Осевая линия будет помечена как 0, ..., n-1. join_axes − Это список индексных объектов. Используется для других специфических индексов по осям (n-1), а не для выполнения логики внутреннего/внешнего установления.
Функция CONCAT выполняет все задачи по слиянию по осям. Давайте создадим различные объекты и свяжем их.
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two])))
Результат выполнения будет следующим:
Marks_scored Name subject_id 1 98 Алексей под1 2 90 Эми под2 3 87 Эллен под4 4 69 Алис под6 5 78 Айyoung под5 1 89 Билли под2 2 80 Брайан под4 3 79 Бран под3 4 97 Брайс под6 5 88 Бетти под5
Предположим, что мы хотим связать специфические ключи с каждым фрагментом разрезанного DataFrame. Это можно сделать, используя параметр keys -
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y']))
Результат выполнения будет следующим:
x 1 98 Алексей под1 2 90 Эми под2 3 87 Эллен под4 4 69 Алис под6 5 78 Айyoung под5 y 1 89 Билли под2 2 80 Брайан под4 3 79 Бран под3 4 97 Брайс под6 5 88 Бетти под5
Индекс результатов повторяется; каждый индекс повторяется.
Если результат объекта должен следовать своему собственному индексу, то установите ignore_index в True.
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y'],ignore_index=True))
Результат выполнения будет следующим:
Marks_scored Name subject_id 0 98 Алексей под1 1 90 Amy sub2 2 87 Allen sub4 3 69 Alice sub6 4 78 Ayoung sub5 5 89 Billy sub2 6 80 Brian sub4 7 79 Bran sub3 8 97 Bryce sub6 9 88 Betty sub5
Обратите внимание, что индекс полностью изменяется, и ключи также перезаписываются.
Если необходимо добавить два объекта по оси = 1, то будут добавлены новые столбцы.
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],axis=1))
Результат выполнения будет следующим:
Marks_scored Name subject_id Marks_scored Name subject_id 1 98 Alex sub1 89 Billy sub2 2 90 Amy sub2 80 Brian sub4 3 87 Allen sub4 79 Bran sub3 4 69 Alice sub6 97 Bryce sub6 5 78 Ayoung sub5 88 Betty sub5
Удобный способ использования concat - это метод append на Series и DataFrame. Эти методы существуют раньше, чем concat. Они соединяются по оси = 0, то есть по индексу-
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(one.append(two))
Результат выполнения будет следующим:
Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5
дополнительная функция может принимать несколько объектов, а также-
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(one.append([two,one,two]))
Результат выполнения будет следующим:
Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5
Pandas предоставляет мощные инструменты для обработки временных рядов, особенно в финансовой области. При обработке временных рядов мы часто сталкиваемся с такими ситуациями:
генерация временного порядка преобразование временных рядов в разные частоты
предоставляет набор относительно компактных и независимых инструментов для выполнения этих задач.
datetime.now()предоставление текущей даты и времени.
import pandas as pd print(pd.datetime.now())
Результат выполнения будет следующим:
2017-05-11 06:10:13.393147
Временные метки - это最基本的 тип временных рядов, в которых значения связаны с точками времени. Для объектов Pandas это означает использование точек времени. Давайте приведем пример-
import pandas as pd print(pd.Timestamp('2017-03-01'))
Результат выполнения будет следующим:
2017-03-01 00:00:00
также можно преобразовать целое или дробное время. По умолчанию их единица измерения - наносекунды (поскольку это способ хранения временных меток). Но, обычно эра хранится в другой единице, которую можно указать. Приведем пример
import pandas as pd print(pd.Timestamp(1587687255,unit='s'))
Результат выполнения будет следующим:
2020-04-24 00:14:15
import pandas as pd print(pd.date_range("11:00", "13:30", freq="30min").time)
Результат выполнения будет следующим:
[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0) datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)
import pandas as pd print(pd.date_range("11:00", "13:30", freq="H").time)
Результат выполнения будет следующим:
[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]
Чтобы преобразовать сериализованные объекты даты или списки аналогичных объектов (например, строки, эра или смесь), можно использовать функцию to_datetime. При передаче возвращает Series (с таким же индексом), а списки аналогичных списков преобразуются в DatetimeIndex. Вот пример-
import pandas as pd print(pd.to_datetime(pd.Series(['Jul 31, 2009', '2010-01-10', None])))
Результат выполнения будет следующим:
0 2009-07-31 1 2010-01-10 2 NaT dtype: datetime64[ns]
NaT означает не время (эквивалент NaN)
Давайте рассмотрим еще один пример.
import pandas as pd print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))
Результат выполнения будет следующим:
DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)