Converti Pandas Dataframe in NumPy Array
-
Metodo
to_numpyper convertire PandasDataFramein arrayNumPy -
Metodo
Values()per convertire PandasDataFrameinNumPyArray -
Metodo
To_records()per convertireDataFramein un array di recordNumPy
Impareremo il metodo to_numpy() per convertire l’array pandas.Dataframe in NumPy, introdotto da pandas v0.24.0 che sostituisce il metodo deprecato .values. Possiamo definire to_numpy sugli oggetti Index, Series e DataFrame.
Il metodo deprecato DataFrame.values() ha un comportamento incoerente; pertanto, non è consigliabile utilizzarlo in base alla documentazione dell’API di Pandas. Tuttavia, esamineremo un esempio di questo metodo se stai utilizzando una versione precedente di Pandas.
Introdurremo anche un altro approccio che utilizza il metodo DataFrame.to_records() per convertire il dato DataFrame in un array di record NumPy.
Metodo to_numpy per convertire Pandas DataFrame in array NumPy
pandas.Dataframe è una struttura dati tabulare 2d con righe e colonne. Questa struttura dati può essere convertita in un array NumPy usando il metodo to_numpy:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.to_numpy()
print(nmp)
print(type(nmp))
Produzione:
[[5 5 1 3]
[1 6 6 0]
[9 1 2 0]
[9 3 5 3]
[7 9 4 9]
[8 1 8 9]]
<class 'numpy.ndarray'>
Il metodo Pandas DataFrame to_numpy() converte il DataFrame in un array NumPy come mostrato sopra.
Metodo Values() per convertire Pandas DataFrame in NumPy Array
Potremmo anche usare il metodo Dataframe.values() come segue.
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.values
print(nmp)
print(type(nmp))
Produzione:
[[8 8 5 0]
[1 7 7 5]
[0 2 4 2]
[6 8 0 7]
[6 4 5 1]
[1 8 4 7]]
<class 'numpy.ndarray'>
Se vogliamo includere la colonna index nell’array NumPy convertito, dobbiamo applicare reset_index() con dataframe.values.
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.reset_index().values
print(nmp)
print(type(nmp))
Produzione:
[[0 1 0 3 7]
[1 8 2 5 1]
[2 2 2 7 3]
[3 3 4 3 7]
[4 5 4 4 3]
[5 2 9 7 6]]
<class 'numpy.ndarray'>
Metodo To_records() per convertire DataFrame in un array di record NumPy
Se hai bisogno di dtypes, to_records() è l’opzione migliore da usare. Per quanto riguarda le prestazioni, sia to_numpy() che to_records() sono quasi le stesse:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.to_records()
print(nmp)
print(type(nmp))
Produzione:
[(0, 0, 4, 6, 1)
(1, 3, 1, 7, 1)
(2, 9, 1, 6, 4)
(3, 1, 4, 6, 9)
(4, 9, 1, 3, 9)
(5, 2, 5, 7, 9)]
<class 'numpy.recarray'>
Articolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum