Converti Pandas Series in DataFrame

Sathiya Sarathi 30 gennaio 2023
  1. Converti una singola Series di Pandas in DataFrame utilizzando pandas.DataFrame()
  2. Converti una singola Series di Pandas in DataFrame utilizzando pandas.Series.to_frame()
  3. Convertire multiple Pandas Series in dataframes
Converti Pandas Series in DataFrame

La creazione di colonne più recenti dalla Series derivata o esistente è un’attività formidabile nell’ingegneria delle caratteristiche. La Series o la colonna appena creata può essere convertita in Dataframe utilizzando le funzioni native dei pandas. In questo articolo, introdurremo come convertire la Series di Pandas in Dataframe.

Negli esempi seguenti, lavoreremo sul dataframe creato utilizzando il seguente 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)

Produzione:

a    44
b    47
c    64
d    67
e    67
f     9
g    83
h    21
i    36
j    87
dtype: int64

Converti una singola Series di Pandas in DataFrame utilizzando pandas.DataFrame()

La Series può essere trasformata in un Dataframe usando il costruttore DataFrame() inviando la Series di Pandas come argomento.

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"]))

Produzione:

    A
a  81
b  37
c  25
d  77
e  72
f   9
g  20
h  80
i  69
j  79

Come visto sopra, l’output della funzione restituisce un Dataframe.

Converti una singola Series di Pandas in DataFrame utilizzando pandas.Series.to_frame()

Questa funzione converte la Series di Pandas data in un Dataframe. Il nome della colonna può essere impostato con l’argomento 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"))

Produzione:

    A
a  44
b  47
c  64
d  67
e  67
f   9
g  83
h  21
i  36
j  87

Possono esserci scenari in cui la serie data non ha alcun nome. In situazioni come queste, il metodo reset_index() può tornare utile.

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())

Produzione:

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

Come visto sopra, il dataframe creato contiene una nuova colonna denominata 0. La colonna denominata 0 può essere rinominata utilizzando l’argomento name che può essere fornito alla funzione reset_index(), come mostrato di seguito.

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"))

Produzione:

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

Convertire multiple Pandas Series in dataframes

Gli esempi precedenti hanno dimostrato la capacità di convertire una sola Series di Pandas in un Dataframe. E se ci fossero più Series, e queste devono essere unite insieme a un singolo Dataframe? Dopo aver creato la singola serie, il dataframe può essere creato concatenando utilizzando la funzione 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)

Produzione:

    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

Nota che la funzione pd.concat() includeva un argomento axis=1, che corrisponde all’appendice lungo la colonna. Se axis non è fornito, ci sarà un’unione o un’unione di righe su tutti i Dataframe.

Articolo correlato - Pandas DataFrame

Articolo correlato - Pandas Series