Comment puis-je faire pivoter un dataframe ?
Qu'est-ce que le pivot ?
Le pivotement est un technique de transformation de données utilisée pour remodeler un DataFrame en interchangeant les lignes et les colonnes. Il est couramment utilisé pour organiser les données de manière à faciliter leur analyse ou leur visualisation.
Comment puis-je pivoter ?
Il existe plusieurs façons de faire pivoter un DataFrame dans Python utilisant la bibliothèque Pandas :
1. pd.DataFrame.pivot_table :
Cette méthode est une option polyvalente et riche en fonctionnalités pour faire pivoter les données. Il permet de préciser les valeurs à agréger, la fonction d'agrégation et les indices de lignes et de colonnes.
Exemple :
import pandas as pd # Create a sample DataFrame df = pd.DataFrame({ "row": ["row0", "row1", "row2", "row3", "row4"], "col": ["col0", "col1", "col2", "col3", "col4"], "val0": [0.81, 0.44, 0.77, 0.15, 0.81], "val1": [0.04, 0.07, 0.01, 0.59, 0.64] }) # Pivot the DataFrame using pivot_table df_pivoted = df.pivot_table( index="row", columns="col", values="val0", aggfunc="mean", ) print(df_pivoted) # Output: col0 col1 col2 col3 col4 row row0 0.77 0.445 0.000 0.860 0.650 row1 0.130 0.000 0.395 0.500 0.250 row2 0.000 0.310 0.000 0.545 0.000 row3 0.000 0.100 0.395 0.760 0.240 row4 0.000 0.000 0.000 0.000 0.000
2. pd.DataFrame.groupby pd.DataFrame.unstack :
Cette méthode consiste à regrouper le DataFrame par les indices de ligne et de colonne souhaités, puis à utiliser le dépilage pour faire pivoter les données groupées.
Exemple :
# Group the DataFrame by row and col df_grouped = df.groupby(["row", "col"]) # Perform pivot using unstack df_pivoted = df_grouped["val0"].unstack(fill_value=0) print(df_pivoted) # Output: col col0 col1 col2 col3 col4 row row0 0.81 0.445 0.000 0.860 0.650 row1 0.130 0.000 0.395 0.500 0.250 row2 0.000 0.310 0.000 0.545 0.000 row3 0.000 0.100 0.395 0.760 0.240 row4 0.000 0.000 0.000 0.000 0.000
3. pd.DataFrame.set_index pd.DataFrame.unstack :
Cette méthode consiste à définir les indices de ligne et de colonne souhaités comme index du DataFrame, puis à utiliser le dépilage pour faire pivoter les données.
Exemple :
# Set the row and col as the DataFrame's index df = df.set_index(["row", "col"]) # Perform pivot using unstack df_pivoted = df["val0"].unstack(fill_value=0) print(df_pivoted) # Output: col col0 col1 col2 col3 col4 row row0 0.81 0.445 0.000 0.860 0.650 row1 0.130 0.000 0.395 0.500 0.250 row2 0.000 0.310 0.000 0.545 0.000 row3 0.000 0.100 0.395 0.760 0.240 row4 0.000 0.000 0.000 0.000 0.000
4. pd.DataFrame.pivot :
Cette méthode offre une syntaxe plus simple par rapport à pivot_table, mais elle a des fonctionnalités limitées. Il vous permet uniquement de spécifier des indices de lignes et de colonnes, et il ne peut pas effectuer d'agrégation.
Exemple :
# Perform pivot using pivot df_pivoted = df.pivot(index="row", columns="col") print(df_pivoted) # Output: col col0 col1 col2 col3 col4 row row0 key0 0.81 0.44 0.00 0.86 0.65 row1 key1 0.13 0.00 0.39 0.50 0.25 row2 key1 0.00 0.31 0.00 0.54 0.00 row3 key0 0.00 0.10 0.39 0.76 0.24 row4 key1 0.00 0.00 0.00 0.00 0.00
Format long vers format large
Pour convertir un DataFrame du format long au format large en utilisant seulement deux colonnes :
1. pd.DataFrame.pivot(index=column_to_index, columns=column_to_columns, values=values_to_pivot**) :
Exemple :
df["Combined"] = df["row"] + "|" + df["col"] df_pivoted = df.pivot(index="Combined", columns="A", values="B") print(df_pivoted) # Output: A a b c Combined row0|col0 0.0 10.0 7.0 row1|col1 11.0 10.0 NaN row2|col2 2.0 14.0 NaN row3|col3 11.0 NaN NaN row4|col4 NaN NaN NaN
2. pd.DataFrame.groupby pd.DataFrame.unstack :
df["Combined"] = df["row"] + "|" + df["col"] df_grouped = df.groupby(["Combined", "A"]) df_pivoted = df_grouped["B"].unstack(fill_value=0) print(df_pivoted) # Output: A a b c Combined row0|col0 0.0 10.0 7.0 row1|col1 11.0 10.0 NaN row2|col2 2.0 14.0 NaN row3|col3 11.0 NaN NaN row4|col4 NaN NaN NaN
Aplatir l'index multiple en un seul index après le pivot :
df_pivoted.columns = df_pivoted.columns.map("|".join) print(df_pivoted) # Output: a|col0 b|col0 c|col0 a|col1 b|col1 c|col1 a|col2 b|col2 c|col2 a|col3 b|col3 c|col3 row row0 0.0 10.0 7.0 11.0 10.0 NaN 2.0 14.0 NaN 11.0 NaN NaN row1 0.0 10.0 7.0 11.0 10.0 NaN 2.0 14.0 NaN 11.0 NaN NaN
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!