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

Susan Sarandon
Libérer: 2024-11-14 11:17:02
original
178 Les gens l'ont consulté

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  |
+---------+----+----+----+
Copier après la connexion

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      |
+------+---------+--------+
Copier après la connexion

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')
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal