English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Concatenação do Pandas

Exemplo de operação de conexão do Pandas

O Pandas oferece várias funcionalidades que permitem combinar facilmente Series, DataFrame e objetos Panel.

 pd.concat(objs,axis=0,join='outer',join_axes=None,
 ignore_index=False)

objs − Esta é uma sequência de Series ou mapeamento, DataFrame ou objeto Panel. axis − {0,1,...},padrão 0. Este é o eixo a ser concatenado. join − {'inner', 'outer'}, padrão 'outer'. Como lidar com índices em outros eixos. Externo é junção, interno é interseção. ignore_index − Booleano, padrão False. Se verdadeiro, não use valores de índice no eixo de junção. O eixo resultante será marcado como 0, ... , n-1。 join_axes − Esta é uma lista de objetos de índice. Usado para outros (n-1)Índice específico do eixo, em vez de executar internamente/Lógica de configuração externa.

Objetos de conexão

Esta função CONCAT realiza todas as operações de junção ao longo do eixo. Vamos criar diferentes objetos e concatená-los.

 import pandas as pd
 one = pd.DataFrame({
    'Nome': ['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({
    'Nome': ['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])))

Resultados da Execução:

    Marks_scored  Name  subject_id
1             98     Alex  sub1
2             90  Amy  sub2
3             87    Allen4
4             69    Alice6
5             78   Ayoung5
1             89    Billy2
2             804
3             79     Bran3
4             97    Bryce6
5             88    Betty5

假设我们想将特定的键与切碎的DataFrame的每个片段相关联。我们可以通过使用keys参数来做到这一点-

 import pandas as pd
 one = pd.DataFrame({
    'Nome': ['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({
    'Nome': ['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']))

Resultados da Execução:

x  1  98    Alex1
   2  902
   3  87    Allen4
   4  69    Alice6
   5  78    Ayoung5
y  1  89    Billy2
   2  804
   3  79    Bran3
   4  97    Bryce6
   5  88    Betty5

结果的索引是重复的;每个索引重复。

如果结果对象必须遵循其自己的索引,则将ignore_index设置为True。

 import pandas as pd
 one = pd.DataFrame({
    'Nome': ['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({
    'Nome': ['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))

Resultados da Execução:

    Marks_scored
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

注意,索引完全更改,并且键也被覆盖。

如果需要沿axis = 1添加两个对象,则将添加新列。

 import pandas as pd
 one = pd.DataFrame({
    'Nome': ['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({
    'Nome': ['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))

Resultados da Execução:

    Marks_scored
1           98      Alex1         89         Billy2
2           902         804
3           87     Allen4         79          Bran3
4           69     Alice6         97         Bryce6
5           78    Ayoung5         88         Betty5

使用append串联

Concat有用的快捷方式是Series和DataFrame上的append实例方法。这些方法实际上早于concat。它们沿着轴= 0连接,即索引-

 import pandas as pd
 one = pd.DataFrame({
    'Nome': ['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({
    'Nome': ['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))

Resultados da Execução:

    Marks_scored
1           98      Alex1
2           902
3           87     Allen4
4           69     Alice6
5           78    Ayoung5
1           89     Billy2
2           80     Brian      sub4
3           79      Bran      sub3
4           97     Bryce      sub6
5           88     Betty      sub5

Esta funcionalidade pode aceitar múltiplos objetos, bem como-

 import pandas as pd
 one = pd.DataFrame({
    'Nome': ['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({
    'Nome': ['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]))

Resultados da Execução:

    Marks_scored   Nome    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

Série temporal

Pandas oferece uma ferramenta poderosa para lidar com dados de séries temporais, especialmente no campo financeiro. Ao lidar com dados de séries temporais, frequentemente nos deparamos com as seguintes situações:

Produzir uma ordem de tempo Converta séries temporais em diferentes frequências

Fornece uma série de ferramentas relativamente compactas e independentes para executar essas tarefas.

Obtém o tempo atual

datetime.now()Fornece a data e hora atuais.

 import pandas as pd
 print(pd.datetime.now())

Resultados da Execução:

2017-05-11 06:10:13.393147

Criação de um timestamp

O tipo de dados de timestamp é o tipo mais básico de série temporal que asocia valores com pontos no tempo. Para objetos Pandas, isso significa usar pontos no tempo. Vamos dar um exemplo-

import pandas as pd
print(pd.Timestamp('2017-03-01))

Resultados da Execução:

2017-03-01 00:00:00

Também pode converter inteiros ou números de ponto flutuante como tempo. A unidade padrão é nanosegundo (porque é a forma como o timestamp é armazenado). No entanto, geralmente o era é armazenado em uma unidade especificada. Vamos dar um exemplo

import pandas as pd
print(pd.Timestamp(1587687255,unit='s'))

Resultados da Execução:

 2020-04-24 00:14:15

Criação de intervalo de tempo

import pandas as pd
print(pd.date_range("11:00", "13:30", freq="3).time)

Resultados da Execução:

 [datetime.time(11, 0) datetime.time(11, 3) datetime.time(12, 0)
 datetime.time(12, 3) datetime.time(13, 0) datetime.time(13, 3, 0)

Alterar Frequência de Tempo

import pandas as pd
print(pd.date_range("11:00", "13:30", freq="H").time)

Resultados da Execução:

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)

Converter para timestamp

Para converter séries ou listas de objetos de data semelhante (por exemplo, strings, tuples ou misturas) em séries ou listas semelhantes de data, você pode usar a função to_datetime. Ao passar, retornará uma Series (com o mesmo índice) e listas semelhantes a listas serão convertidas em DatetimeIndex. Veja o exemplo a seguir-

import pandas as pd
print(pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None]))

Resultados da Execução:

 0 2009-07-31
 1 2010-01-10
 2 NaT
 dtype: datetime64[ns]

NaT representa não é tempo (equivalente a NaN)

Vamos dar outro exemplo.

import pandas as pd
print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))

Resultados da Execução:

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]