Comment stocker une matrice multidimensionnelle d'une dataframe avec pandas ?

Published: 21 septembre 2021

Tags: Python; Pandas; DataFrame;

DMCA.com Protection Status

Exemples de comment stocker une matrice multidimensionnelle d'une dataframe avec pandas:

Créer une matrice 3D avec numpy

Considérons la matrice 3D suivante avec les indices i,j,k créée avec numpy

import numpy as np

data = np.random.randint(100,size=(3,3,3))

print(data)

donne par exemple

[[[63 35 74]
  [28 69 48]
  [25 19 33]]

 [[51 23 28]
  [40 76  0]
  [10 48 82]]

 [[51 55  7]
  [12 26 91]
  [ 1 73 31]]]

Note: pour obtenir la valeur correspondant à i = 1, j = 2 et k = 0, une solution est de faire :

print(data[1,1,0])

donne ici

40

Stocker une matrice multidimensionnelle dans une dataframe

Une solution pour stocker une matrice multidimensionnelle dans une dataframe consiste d'abord à "resape" la matrice initiale en une matrice 2D :

data = data.reshape(9,3)

print(data)

donne

[[63 35 74]
 [28 69 48]
 [25 19 33]
 [51 23 28]
 [40 76  0]
 [10 48 82]
 [51 55  7]
 [12 26 91]
 [ 1 73 31]]

et d'utiliser pandas MultiIndex:

import pandas as pd

iterables = [[0,1,2], [0,1,2]]

index = pd.MultiIndex.from_product(iterables, names=['i', "j"])

df = pd.DataFrame(data=data, index=index, columns = [0,1,2])

df = df.rename_axis("k", axis="columns")

print(df)

donne alors

k     0   1   2
i j            
0 0  63  35  74
  1  28  69  48
  2  25  19  33
1 0  51  23  28
  1  40  76   0
  2  10  48  82
2 0  51  55   7
  1  12  26  91
  2   1  73  31

Références