Remodelage à partir de données larges :
Dans le domaine de la manipulation des données, remodeler un ensemble de données large en un ensemble long est une opération cruciale pour les données. intégration et analyse. Considérons le scénario suivant :
Vous disposez d'un dataframe dans pandas avec des valeurs quotidiennes pour les variables AA, BB et CC, indexées par dates.
+---------+----+----+----+ | date | AA | BB | CC | +---------+----+----+----+ | 05/03 | 1 | 2 | 3 | | 06/03 | 4 | 5 | 6 | | 07/03 | 7 | 8 | 9 | | 08/03 | 5 | 7 | 1 | +---------+----+----+----+
Vous souhaitez transformer ces données en un format où chaque ligne représente une variable et une date, comme vu ci-dessous :
+------+---------+--------+ | var | date | value | +------+---------+--------+ | AA | 05/03 | 1 | | AA | 06/03 | 4 | | AA | 07/03 | 7 | | AA | 08/03 | 5 | | BB | 05/03 | 2 | | BB | 06/03 | 5 | | BB | 07/03 | 8 | | BB | 08/03 | 7 | | CC | 05/03 | 3 | | CC | 06/03 | 6 | | CC | 07/03 | 9 | | CC | 08/03 | 1 | +------+---------+--------+
Cette restructuration est une tâche typique en intégration de données et vous permettra de fusionner cette dataframe avec une autre avec dates correspondantes et noms de colonnes initiaux (AA, BB, CC).
Méthode : fonction de fusion de Pandas
Heureusement, pandas propose une méthode simple pour effectuer cette transformation : pandas.melt ou DataFrame.melt. Voici un exemple :
import pandas as pd df = pd.DataFrame({ 'date' : ['05/03', '06/03', '07/03', '08/03'], 'AA' : [1, 4, 7, 5], 'BB' : [2, 5, 8, 7], 'CC' : [3, 6, 9, 1] }) df.set_index('date', inplace=True) dfm = df.reset_index().melt(id_vars='date')
Cela transformera votre dataframe au format long souhaité :
date variable value 0 05/03 AA 1 1 06/03 AA 4 2 07/03 AA 7 3 08/03 AA 5 4 05/03 BB 2 5 06/03 BB 5 6 07/03 BB 8 7 08/03 BB 7 8 05/03 CC 3 9 06/03 CC 6 10 07/03 CC 9 11 08/03 CC 1
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!