Converter Pandas Series em DataFrame
-
Converter um único Pandas
Series
paraDataframe
utilizandopandas.Dataframe()
-
Converter um único Pandas
Series
paraDataframe
utilizandopandas.Series.to_frame()
-
Converter
Series
de Pandas Múltiplos em Dataframes
A criação de novas colunas a partir da Series
derivada ou existente é uma actividade formidável na engenharia de características. A nova Series
ou coluna recentemente criada pode ser convertida em Dataframe utilizando as funções nativas dos pandas. Neste artigo, vamos introduzir como converter a Series
de Pandas para Dataframe.
Nos exemplos seguintes, trabalharemos no Dataframe criado utilizando o seguinte snippet.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(np.random.randint(0,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
print (df_series)
Resultado:
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
dtype: int64
Converter um único Pandas Series
para Dataframe
utilizando pandas.Dataframe()
A Series
pode ser transformada num Dataframe utilizando como argumento o Dataframe()
Construtor, enviando a Pandas Series
.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(np.random.randint(0,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
print (pd.DataFrame(df_series, columns=['A']))
Resultado:
A
a 81
b 37
c 25
d 77
e 72
f 9
g 20
h 80
i 69
j 79
Como se viu acima, a saída da função retorna um Dataframe.
Converter um único Pandas Series
para Dataframe
utilizando pandas.Series.to_frame()
Esta função converte a dada Pandas Series
para um Dataframe. O nome da coluna pode ser definido com o argumento name
.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(np.random.randint(0,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
print (df_series.to_frame(name='A'))
Resultado:
A
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
Pode haver cenários em que a série dada não tem qualquer nome. Em situações como estas, o método reset_index()
pode vir a ser útil.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(np.random.randint(0,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']).rename_axis('index')
print (df_series)
print ('\n')
print (df_series.reset_index())
Resultado:
index
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
dtype: int64
index 0
0 a 44
1 b 47
2 c 64
3 d 67
4 e 67
5 f 9
6 g 83
7 h 21
8 i 36
9 j 87
Como se viu acima, o quadro de dados criado contém uma nova coluna chamada 0
. A coluna chamada 0
pode ser renomeada utilizando o argumento name
que pode ser fornecido à função reset_index()
, como se mostra abaixo.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(np.random.randint(0,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']).rename_axis('index')
print (df_series)
print ('\n')
print (df_series.reset_index(name='A'))
Resultado:
index
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
dtype: int64
index A
0 a 44
1 b 47
2 c 64
3 d 67
4 e 67
5 f 9
6 g 83
7 h 21
8 i 36
9 j 87
Converter Series
de Pandas Múltiplos em Dataframes
Os exemplos acima referidos demonstraram a capacidade de converter apenas uma única Pandas Series
a um Dataframe. E se houvesse várias Series
, e estas precisassem de ser costuradas juntas para um único Dataframe? Ao criar a Série individual, o dataframe pode ser criado concatenando utilizando a função concat()
.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series1 = pd.Series(np.random.randint(0,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
df_series2 = pd.Series(np.random.randint(40,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
df_series3 = pd.Series(np.random.randint(80,100,size=(10)),
index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
df_stitched = pd.concat([df_series1, df_series2, df_series3], axis=1)
print (df_stitched)
Resultado:
0 1 2
a 44 46 97
b 47 64 85
c 64 64 93
d 67 52 88
e 67 98 89
f 9 41 99
g 83 78 96
h 21 79 99
i 36 63 85
j 87 86 95
Note que a função pd.concat()
incluía um argumento axis=1
, que corresponde ao apêndice ao longo da coluna. Se o axis
não for fornecido, haverá uma fusão ou união em linha em todos os Dataframes.