Comment faire fondre une trame de données pandas ?
La fusion d'une trame de données pandas implique de la convertir d'un format large avec plusieurs colonnes en un format long avec deux colonnes principales : « variable » et « valeur ». Ceci peut être réalisé en utilisant la fonction melt().
Problème 1 : Fusionner une trame de données pour transposer des colonnes en lignes
df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
Cela convertira la trame de données d'origine en le format souhaité, avec des colonnes pour « Nom », « Âge », « Sujet » et « Notes ». La colonne « Sujet » contiendra les en-têtes de colonne d'origine, tandis que « Notes » contiendra les valeurs correspondantes.
Problème 2 : Filtrage des données fondues pour inclure des colonnes spécifiques
df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades') filtered_df = df[df['Subject'] == 'Math']
En filtrant le dataframe fondu, vous pouvez supprimer les colonnes indésirables. Dans ce cas, seules les lignes avec 'Sujet' défini sur 'Math' sont conservées.
Problème 3 : Regroupement des données fondues et classement par scores
df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades') sorted_df = df.groupby('value').agg({'Name': ', '.join, 'Subject': ', '.join}) sorted_df = sorted_df.sort_values('value')
Cela fusionne les lignes avec des valeurs en double dans la colonne « valeur », provoquant l'agrégation des colonnes « Nom » et « Sujet » avec valeurs séparées par des virgules. Le résultat est ensuite trié pour classer les notes par ordre croissant.
Problème 4 : Défusion d'une trame de données fondue
unmelted_df = df.pivot(index=['Name', 'Age'], columns='Subject', values='Grades')
Pour reconvertir la trame de données fondue dans son format d'origine, vous pouvez utiliser la fonction pivot(). Cela regroupera les données par colonnes « Nom » et « Âge » et fera pivoter la colonne « Sujet » pour créer la forme du cadre de données d'origine.
Problème 5 : regrouper les données fondues et concaténer les sujets et les notes
df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades') grouped_df = df.groupby('Name').agg({'Subject': ', '.join, 'Grades': ', '.join})
Semblable au problème 3, cela regroupe la trame de données fondue par « Nom » et concatène les colonnes « Sujet » et « Notes » à l'aide de virgules. Le résultat est un dataframe avec une ligne par personne, répertoriant leurs matières et leurs notes.
Problème 6 : Fusion d'un dataframe avec toutes les colonnes comme valeurs
df = df.melt(value_name='Value', var_name='Column')
Pour fondez le dataframe avec toutes les colonnes comme valeurs, omettez l'argument id_vars de la fonction melt(). Cela créera un dataframe dans lequel la colonne « Colonne » répertorie les en-têtes de colonne d'origine et la colonne « Valeur » contient les valeurs correspondantes.
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!