Converter Pandas Series em DataFrame

Sathiya Sarathi 30 janeiro 2023
  1. Converter um único Pandas Series para DataFrame utilizando pandas.DataFrame()
  2. Converter um único Pandas Series para DataFrame utilizando pandas.Series.to_frame()
  3. Converter Series de Pandas Múltiplos em Dataframes
Converter Pandas Series em DataFrame

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.

Artigo relacionado - Pandas DataFrame

Artigo relacionado - Pandas Series