Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

les pneus

Vous vous souvenez peut-être que dans les slides on avait construit ceci :

Loading...

générons les données

dans ce premier code nous avons créé les données directement dans la bonne forme

mais en pratique ce qu’on fournit en général c’est plutôt une table qui ressemble à ceci

Loading...

pivot_table

typiquement la table du début, on l’aurait créée à partir des données brutes comme ceci

Loading...

stack/unstack

unstack()

unstack() va faire migrer un étage de l’index des colonnes (ici on a deux niveaux year et visit) vers l’espace des colonnes

Loading...

stack()

toujours à partir de la forme carrée 2x2 issue du pivot, dans l’autre sens, stack() va faire...

Loading...

à la limite

si je persiste, en faisant encore une fois stack(), j’obtiens cette fois .. une série

pandas.Series

et donc si vous avez suivi, le nombre de niveaux dans l’index de cette série, c’est ?

4

produire le pivot à la main

voyons maintenant comment on pourait produire le pivot sans passer par pivot_table(), et donc de manière plus pédestre, en gérant nous mêmes les index et les unstack()

c’est surtout pour le sport bien sûr, pour bien comprendre.

Loading...

la première chose à faire est donc de mettre les catégories en index

Loading...

et là, il ne me reste plus qu’à faire quoi ?




je vous laisse réfléchir...




Loading...
Loading...

et groupby ?

ici on a pris des données dans lesquelles il n’y a pas de répétition (par ex., on a une seule donnée pour Bob/2013/Front/1), on n’a donc pas eu besoin de faire de groupement ni d’agrégation.

dans le cas général, pivot_table sait aussi faire de l’agrégation
voyons, toujours pour le sport, comment on ferait à la main une pivot_table dans ce cas-là
et pour ça on va prendre notre éternal titanic

Loading...

objectif

reproduire ceci sans utiliser pivot_table():

Loading...

groupby

regardons pour commencer le résultat d’un groupby avec ces deux critères, et qui agrège avec mean pour faire la moyenne

sex pclass female 1 0.968085 2 0.921053 3 0.500000 male 1 0.368852 2 0.157407 3 0.135447 Name: survived, dtype: float64

on obtient donc une série parce que

et surtout ce qui nous intéresse ici c’est que l’index de cette série est de profondeur 2 (parce qu’on a donné 2 critères au groupby)

MultiIndex([('female', 1), ('female', 2), ('female', 3), ( 'male', 1), ( 'male', 2), ( 'male', 3)], names=['sex', 'pclass'])

pivot_table = groupby + unstack

et donc on peut tout simplement reproduire le premier pivot_table() en faisant

Loading...

bon c’est beaucoup plus court et lisible avec pivot_table(), mais vous pouvez constater que c’est vraiment une fonction de confort uniquement, qui se refait assez facilement par d’autres moyens