Comportement bizarre avec pivot_table

Bonjour,

j’essaye d’appliquer la formation à un sujet au boulot.
Je dois construire un tableau croisé dynamique. Je le fais sans problème avec la fonction pivot_table() appliqué à un dataframe contenant des données sur des commandes.
Une des variables « Point de vente » donne un code de l’equipe qui a passé la commande, cette donnée étant « native » dans le fichier_csv que je charge dans un dataframe, sur lequel j’applique pivot_table.
Une autre variable du dataframe est « Canal », qui est une donnée que je calcule et ajoute au dataframe chargé par read_csv (dit autrement, je maitrise son format)

Quand j’applique pivot_table() sur mon dataframe avec aggfunc=‹ size › (ça fait pareil si je mets aggfunc=len) et index= « Canal », ça me donne bien le tableau croisé dynamique (comme le ferait Excel):

test_pivot=pd.pivot_table(fichier_nettoye_canaux_principaux
                , index = ["Canal"]
                , values=["Date de depot de la commande - format date"]
                , columns = ["Mois","Variable 1","Variable 2"] 
                , aggfunc = "size")
    display(test_pivot)

donne:

Mois 7 8 9
Variable1 0 1 0 1 0 1
Variable 2 0 1 1 0 1 1 0 1 1
Canal
Canal 1 10805 1623 3851 13307 1621 6507 12958 1465 4798
Canal 2 14009 2858 4423 18141 3458 6079 19829 3569 6552
Canal 3 15616 2873 6426 17453 2938 8612 18305 3108 8391

En revanche, lorsque je l’applique sur une autre variable, par exemple index=« Point de vente », je me retrouve avec un TcD plein de pourcentages. Je comprends pas ce comportement différent.

test_pivot=pd.pivot_table(fichier_nettoye_canaux_principaux
                , index = ["Point de vente - code"]
                , values=["Date de depot de la commande - format date"]
                , columns = ["Mois","Variable 1","Variable 2"] 
                , aggfunc = "size")
    display(test_pivot)

donne:
Mois 7 8 9
Variable 1 0 1 0 1 0 1
Variable 2 0 1 1 0 1 1 0 1 1
Point de vente - code
01PDV 1 16% 1% 5% 19% 3% 6% 18% 2% 5%
01PDV 2 14% 2% 5% 14% 2% 2% 20% 3% 5%
01PDV 3 27% 1% 9% 40% 3% 10% 34% 1% 11%
01PDV 4 10% 2% 4% 21% 1% 7% 20% 1% 8%

Quelqu’un a une idée?

Hello David,

Tu pourrais donner des informations sur ta table ? Type des données ? Sans pour divulguer les données par contre. Genre le résultat d’un df.info()

Paul

Hello Paul,

Un des mystères de Python… Je suis retourné sur mon Notebook aujourd’hui je relance tout comme avant et tadaaa mon problème de pivot_table a disparu.
Je suis content, et en même temps frustré de ne pas comprendre.

Pour partage quand même, le df.info() listait les noms de colonnes, avec même volume d’infos non nulles (j’ai fait un fillna) et comme dtype ‹ object ›.