> Modules non standards > Pandas > Réorganisation des dataframes
Réorganisation des dataframes
Pivotage dans fonction d'aggrégation :
pivot_table : plus souple que pivot :
Stacking : consiste à empiler les différentes colonnes d'un dataframe :
Si on part d'un dataframe
df = pandas.DataFrame({'person': ['a', 'a', 'b', 'b', 'c', 'c'], 'condition': ['A', 'B', 'A', 'B', 'A', 'B'], 'value': [5, 8, 4, 9, 1, 6]}) et que l'on veut un dataframe avec comme colonnes person, A et B :
Réorganisation avec melt pour empiler les données associés à certaines colonnes définies comme clefs :
- pour df = pandas.DataFrame({'A': ['a', 'b', 'b'], 'B': ['yes', 'no', 'no'], 'val1': [4, 2, 5], 'val2': [7, 8, 10], 'val3': [9, 3, 15]}) :
A B val1 val2 val3
0 a yes 4 7 9
1 b no 2 8 3
2 b no 5 10 15
- df.melt(id_vars = ['A', 'B'], var_name = 'myParam', value_name = 'myValue') renvoie :
A B myParam myValue
0 a yes val1 4
1 b no val1 2
2 b no val1 5
3 a yes val2 7
4 b no val2 8
5 b no val2 10
6 a yes val3 9
7 b no val3 3
8 b no val3 15
- pour transformer un dataframe en dataframe à 2 colonnes en conservant l'index (qui a alors des valeurs répétées) :
df = pandas.DataFrame({'A' : [1,2], 'B': [3, 4]}, index = ['a', 'b'])
df.melt(id_vars = [], var_name = 'myVar', value_name = 'myValue', ignore_index = False)
ça donne :
myVar myValue
a A 1
b A 2
a B 3
b B 4
- si df = pandas.DataFrame({'A': [1, 2], 'B': [3, 4]}), df.melt(var_name = 'myVar', value_name = 'myValue') donne :
myVar myValue
0 A 1
1 A 2
2 B 3
3 B 4
One-hot encoding : transforme les colonnes de type catégories en autant de colonnes que de valeurs avec un 1 quand c'est la bonne valeur et des 0 ailleurs :
>>> df = pandas.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'a']})
>>> pandas.get_dummies(df, columns = ['B'])
donne :
A B_a B_b
0 1 1 0
1 2 0 1
2 3 1 0
- columns : indique les colonnes à transformer (les autres restent intactes).
- prefix : le nom du préfixe à mettre dans la colonne (par défaut, le nom de la colonne d'origine)
- prefix_sep : le séparateur entre le nom de la colonne d'origine et la valeur de la colonne (défaut est '_').
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert