Formats de données larges et longs

Reconfigurer les données avec pandas

Maria Eugenia Inzaugarat

Data Scientist

Vous allez apprendre

  • Formats large et long
  • Transformation long vers large
  • Transformation large vers long
  • Empilement et dés-empilement de colonnes
  • Remodelage et gestion de données complexes, comme les chaînes ou le JSON
Reconfigurer les données avec pandas

Pourquoi c'est important

  • Jeux de données "tidy"
  • Données pas au bon format pour l'analyse :
    • Lisible par l'humain vs. analyse statistique
  • Données imbriquées dans des DataFrames : traitement complexe
  • Obtenir des statistiques de synthèse pour des DataFrames à index multi-niveaux
Reconfigurer les données avec pandas

Structure (shape) des données

  • La façon dont un jeu de données est organisé en lignes et colonnes
fifa_players = pd.read_csv("fifa_players.csv")
fifa_players
                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona
1  Cristiano Ronaldo     34      Portugal       Juventus
2    Neymar da Silva     27        Brazil  Saint-Germain
fifa_players.shape
(3, 4)
Reconfigurer les données avec pandas

Format large

fifa_players

                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona
1  Cristiano Ronaldo     34      Portugal       Juventus
2    Neymar da Silva     27        Brazil  Saint-Germain

Reconfigurer les données avec pandas

Format large

fifa_players
                         vv  
                name   | age | nationality          club
0       Lionel Messi   | 32  |  Argentina      Barcelona
1  Cristiano Ronaldo   | 34  |   Portugal       Juventus
2    Neymar da Silva   | 27  |     Brazil  Saint-Germain
                         ^^
  • Chaque caractéristique est dans une colonne distincte
Reconfigurer les données avec pandas

Format large

fifa_players

                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona <--
1  Cristiano Ronaldo     34      Portugal       Juventus <--
2    Neymar da Silva     27        Brazil  Saint-Germain <--

  • Chaque caractéristique est dans une colonne distincte
  • Chaque ligne regroupe plusieurs caractéristiques d'un même joueur
Reconfigurer les données avec pandas

Format large

fifa_players
                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona
 --------------------------------------------------------
1    Cristiano Ronaldo    NaN  <-    Portugal       Juventus
 --------------------------------------------------------
2    Neymar da Silva     27        Brazil  Saint-Germain
  • Chaque caractéristique est dans une colonne distincte
  • Chaque ligne regroupe plusieurs caractéristiques d'un même joueur
  • Pas de répétition mais beaucoup de valeurs manquantes
  • Statistiques simples et imputation
Reconfigurer les données avec pandas

Format long

fifa_players_long.head()
               name     variable     value
0 Cristiano Ronaldo  nationality   Portugal 
1 Cristiano Ronaldo         club   Juventus 
2      Lionel Messi          age         32
3      Lionel Messi  nationality  Argentina 
4      Lionel Messi         club  Barcelona
Reconfigurer les données avec pandas

Format long

fifa_players_long.head()
               name     variable     value
0   Cristiano Ronaldo  nationality   Portugal <--
1 Cristiano Ronaldo         club  Juventus 
2      Lionel Messi          age        32
3        Lionel Messi  nationality  Argentina <--
4      Lionel Messi         club  Barcelona
  • Chaque ligne représente une seule caractéristique
Reconfigurer les données avec pandas

Format long

fifa_players_long.head()
               name     variable     value
0   Cristiano Ronaldo  nationality   Portugal <--
1   Cristiano Ronaldo         club   Juventus <--
2      Lionel Messi          age         32
3      Lionel Messi  nationality  Argentina 
4      Lionel Messi         club  Barcelona
  • Chaque ligne représente une seule caractéristique
  • Plusieurs lignes par joueur
Reconfigurer les données avec pandas

Format long

fifa_players_long.head()
  |              name |    variable      value
0 | Cristiano Ronaldo | nationality   Portugal
1 | Cristiano Ronaldo |        club   Juventus
2 |      Lionel Messi |         age         32
3 |      Lionel Messi | nationality  Argentina 
4 |      Lionel Messi |        club  Barcelona
        ^^^^^^^^^^^
  • Chaque ligne représente une seule caractéristique
  • Plusieurs lignes par joueur
  • Une colonne (name) pour identifier le même joueur
Reconfigurer les données avec pandas

Format long

fifa_players_long.head()
               name     variable     value
0 Cristiano Ronaldo  nationality   Portugal 
1 Cristiano Ronaldo         club   Juventus 
2      Lionel Messi          age         32
3      Lionel Messi  nationality  Argentina 
4      Lionel Messi         club  Barcelona
  • Chaque ligne représente une seule caractéristique
  • Plusieurs lignes par joueur
  • Une colonne (name) pour identifier le même joueur
  • Données « tidy » :
    • Meilleur pour résumer les données
    • Paires clé-valeur
    • Préféré pour l'analyse et la visualisation
Reconfigurer les données avec pandas

Remodeler les données

  • Transformer la structure d'un DataFrame ou d'une Series pour l'adapter à l'analyse
    • Transposer un DataFrame
fifa_players.set_index('club')
                             name  age  nationality
         club 
    Barcelona        Lionel Messi   32    Argentina
     Juventus   Cristiano Ronaldo  NaN     Portugal
Saint-Germain     Neymar da Silva   27       Brazil
Reconfigurer les données avec pandas

Remodeler les données

  • Transformer la structure d'un DataFrame ou d'une Series pour l'adapter à l'analyse
    • Transposer un DataFrame
fifa_players.set_index('club')[['name', 'nationality']]
                               name   nationality 
         club 
    Barcelona        Lionel Messi       Argentina
     Juventus   Cristiano Ronaldo        Portugal
Saint-Germain     Neymar da Silva          Brazil
Reconfigurer les données avec pandas

Remodeler les données

  • Transformer la structure d'un DataFrame ou d'une Series pour l'adapter à l'analyse
    • Transposer un DataFrame
fifa_players.set_index('club')[['name', 'nationality']].transpose()
       club         Barcelona           Juventus     Saint-Germain
       name      Lionel Messi  Cristiano Ronaldo   Neymar da Silva
nationality         Argentina           Portugal            Brazil
Reconfigurer les données avec pandas

Remodeler les données

  • Convertir des données du format large au format long et inversement
  • Unité d'analyse :
    • Format long -> caractéristique d'un joueur
    • Format large -> chaque joueur
Reconfigurer les données avec pandas

Transformation large vers long

  • Réalisé avec des fonctions pandas, comme :

    • .melt()
    • .wide_to_long()
Reconfigurer les données avec pandas

Format long vers large

  • Transformer les données avec des méthodes pandas, par exemple :

    • .pivot()
    • .pivot_table()
Reconfigurer les données avec pandas

Passons à la pratique !

Reconfigurer les données avec pandas

Preparing Video For Download...