Pandas надає різні засоби для простого об'єднання об'єктів Series, DataFrame та Panel .
pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
objs – це послідовність або відображення об'єктів Series, DataFrame або Panel.
вісь – {0, 1, …}, за умовчанням 0. Це вісь для об'єднання.
join – {'inner', 'external'}, за умовчанням 'external'. Як обробляти індекси на інших осях. Зовнішній для об'єднання та внутрішній для перетину.
ignore_index – логічне значення за промовчанням False. Якщо True, не використовуйте значення індексу на осі конкатенації. Результуюча вісь буде позначена 0, …, n – 1.
join_axes – це список об'єктів Index. Спеціальні індекси для використання для інших (n-1) осей замість виконання внутрішньої/зовнішньої логіки набору.
objs – це послідовність або відображення об'єктів Series, DataFrame або Panel.
вісь – {0, 1, …}, за умовчанням 0. Це вісь для об'єднання.
join – {'inner', 'external'}, за умовчанням 'external'. Як обробляти індекси на інших осях. Зовнішній для об'єднання та внутрішній для перетину.
ignore_index – логічне значення за промовчанням False. Якщо True, не використовуйте значення індексу на осі конкатенації. Результуюча вісь буде позначена 0, …, n – 1.
join_axes – це список об'єктів Index. Спеціальні індекси для використання для інших (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 , 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 , 5 ]) print pd . concat ([ 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
Припустимо, що хочемо пов'язати певні ключі з кожним із фрагментів розділеного 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 , 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 , 5 ]) print pd . concat ([ one , two ], keys =[ 'x' , 'y' ])
Його вивід виглядає так –
x 1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
y 1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Індекс результуючого дублюється; кожен індекс повторюється.
Якщо результуючий об'єкт повинен дотримуватися власної індексації, встановіть для 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 , 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 , 5 ]) print pd . concat ([ one , two ], keys =[ 'x' , 'y' ], ignore_index = True )
Його вивід виглядає так –
Marks_scored Name subject_id
0 98 Alex sub1
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 , 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 , 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
Корисний ярлик для конкатату – це методи додавання екземплярів до 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 , 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 ,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 , 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 , 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
Дані з мітками часу – це базовий тип даних часових рядів, який пов'язує значення з точками у часі. Для об'єктів панд це використання точок у часі. Давайте візьмемо приклад -
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)]
Щоб перетворити об'єкт Series або подібний до списку об'єкт типу дати, наприклад рядки, епохи або суміш, ви можете використовувати функцію 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)