Comment convertir Pandas Dataframe en NumPy array

Asad Riaz 30 janvier 2023
  1. La méthode to_numpy pour convertir une DataFrame en un tableau NumPy
  2. Méthode to_records() pour convertir un tableau d’enregistrements DataFrame en tableau d’enregistrements NumPy
Comment convertir Pandas Dataframe en NumPy array

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