Comment convertir Pandas Dataframe en NumPy array
-
La méthode
to_numpy
pour convertir uneDataFrame
en un tableauNumPy
-
Méthode
to_records()
pour convertir un tableau d’enregistrementsDataFrame
en tableau d’enregistrementsNumPy
Nous apprendrons la méthode to_numpy()
pour convertir le tableau pandas.Dataframe
en tableau NumPy
, introduit à partir de pandas v0.24.0 en remplacement de l’ancienne méthode .values
. Nous pouvons définir to_numpy
sur les objets Index
, Series
, et DataFrame
.
L’ancienne méthode DataFrame.values
a un comportement incohérent, qu’il n’est pas recommandé d’utiliser selon la documentation de l’API Pandas. Cependant, nous allons examiner un exemple de cette méthode au cas où vous utiliseriez une ancienne version.
Une autre ancienne méthode DataFrame.as_matrix()
est maintenant obsolète, ne l’utilisez pas!
Nous allons également introduire une autre approche utilisant la méthode DataFrame.to_records()
pour convertir la DataFrame
donnée en un tableau d’enregistrements NumPy
.
La méthode to_numpy
pour convertir une DataFrame
en un tableau NumPy
La pandas.Dataframe
est une structure de données tabulaires 2d avec des lignes et des colonnes. Cette structure de données peut être convertie en tableau NumPy
en utilisant la méthode 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))
Production:
[[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'>
La même chose peut être faite en utilisant la méthode Dataframe.values
comme suit:
# 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))
Production:
[[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'>
Si nous voulons inclure des index
dans un tableau NumPy
, nous devons appliquer la méthode reset_index()
avec 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))
Production:
[[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'>
Méthode to_records()
pour convertir un tableau d’enregistrements DataFrame
en tableau d’enregistrements NumPy
Si vous avez besoin des dtypes
, to_records()
est la meilleure option à utiliser. En ce qui concerne les performances, to_numpy()
et to_records()
sont presque identiques:
# 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))
Production:
[(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'>
Article connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne
- Comment obtenir l'agrégat des Pandas par groupe et par somme