Fonction Pandas Melt : remodeler les trames de données pour l'analyse
Question :
Considérez une trame de données avec plusieurs colonnes et un dictionnaire :
df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]], colonnes=['Amy', 'Bob', "Carl", "Chris", "Ben", "Autre", 'Année'])<br>
d = {'A' : ['Amy'], 'B' : ['Bob', 'Ben'], 'C' : ['Carl', 'Chris']}<br>
Comment faire nous remodelons le dataframe pour qu'il ressemble à la structure suivante, où les colonnes sont fondues et regroupées ?
Nom du groupe Année Valeur<br> 0 A Amy 2013 2<br> 1 A Amy 2014 9<br> 2 B Bob 2013 4<br> 3 B Bob 2014 2<br> 4 B Ben 2013 1<br> 5 B Ben 2014 5<br>6C Carl 2013 7<br>7 C Carl 2014 4<br>8 C Chris 2013 8<br>9 C Chris 2014 5<br>10 Autre 2013 3<br>11 Autre 2014 6<br>
Réponse :
Pour remodeler le dataframe à l'aide de la fonction de fusion, suivez ces étapes :
Faire fondre le dataframe : Fondre le dataframe dans un format large à l'aide du fonction de fusion. Cela convertira les colonnes en lignes, avec le paramètre id_vars utilisé pour spécifier les colonnes qui doivent rester intactes.
m = pd.melt(df, id_vars=['Year'], var_name='Name')
Créez un dictionnaire de mappage : Remodelez le dictionnaire d pour créer un mappage entre les noms de colonnes et le groupe noms.
d2 = {} for k, v in d.items(): for item in v: d2[item] = k
Ajouter un « Groupe » : Mappez le dictionnaire d2 nouvellement créé à la colonne « Nom » pour ajouter la colonne « Groupe ».
m['Group'] = m['Name'].map(d2)
Déplacer 'Autre' : Déplacer les valeurs 'Autre' de la colonne « Nom » à la colonne « Groupe ».
mask = m['Name'] == 'Other' m.loc[mask, 'Name'] = '' m.loc[mask, 'Group'] = 'Other'
La trame de données résultante contiendra la structure aplatie souhaitée :
print(m) Year Name value Group 0 2013 Amy 2 A 1 2014 Amy 9 A 2 2013 Bob 4 B 3 2014 Bob 2 B 4 2013 Carl 7 C ... ... ... ... ... 7 2014 Chris 5 C 8 2013 Ben 1 B 9 2014 Ben 5 B 10 2013 3 Other 11 2014 6 Other
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!