Skip to article frontmatterSkip to article content
import pandas as pd

on a des données qui ressemblent à ceci

df = pd.read_csv("data/stack-simple.csv")
df
Loading...

on veut produire une table simplifiée qui ressemblerait à ceci; on élimine les lignes qui correspondraient à une valeur nulle

citypostcodetypenombre
London90000t11
London90000t22
London90000t33
Paris75000t24
Paris75000t32
Paris75000t43

se concentrer sur les colonnes ti

# commencez par extraire les colonnes spéciales
columns = ['t1', 't2', 't3', 't4']

df2 = ...

stack()

attention comme on a un index simple sur les colonnes, le stack() nous produit une Series

# appliquez un simple `stack()` sur la dataframe df2
# regardez le contenu et le type

series = ...

on peut nettoyer les 0

on peut se passer de cette étape si on a des n/a à la place des 0; mais ici, c’est le moment de nettoyer

# à vous
...

passer de l’index à une colonne ‘usuelle’

maintenant, que faut-il faire avec la donnée type pour se rapprocher de ce qu’on cherche à produire ?

# à vous

df3 = ...

nommer

# les noms des colonnes dans df3 ne sont vraiment pas terribles

# à vous...

recoller

à ce stade il ne reste plus qu’à recoller les morceaux

# à vous

df_all = ...

nettoyer

et enfin, à éliminer les colonnes qui sont de trop

# à vous
# pour vérifier le résultat de visu
# df_all

pd.melt()

Il se trouve qu’on peut arriver à ce même résultat avec une fonction toute faite de pandas qui s’appelle pd.melt()
Mais bon, pour bien comprendre la librairie c’est sans doute mieux de passer par des manipulations de base comme on vient de le faire :)