Maison  >  Article  >  développement back-end  >  Comment transformer un large Pandas DataFrame en un format long avec des valeurs représentant des variables et des dates ?

Comment transformer un large Pandas DataFrame en un format long avec des valeurs représentant des variables et des dates ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-14 11:17:02176parcourir

How do you transform a wide Pandas DataFrame into a long format with values representing variables and dates?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn