Brede en lange data-indelingen

Data herstructureren met pandas

Maria Eugenia Inzaugarat

Data Scientist

Je leert

  • Brede en lange formaten
  • Transformatie van lang naar breed
  • Transformatie van breed naar lang
  • Stapelen en ont-stapelen van kolommen
  • Reshapen en omgaan met complexe data, zoals stringkolommen of JSON-data
Data herstructureren met pandas

Waarom dit belangrijk is

  • Tidy datasets
  • Data staat niet in het juiste format voor analyse:
    • Menselijk leesbaar vs. statistische analyse
  • Geneste data in DataFrames is lastig te verwerken
  • Samenvattingsstatistieken voor DataFrames met multi-level index
Data herstructureren met pandas

Vorm van data

  • Hoe een dataset is georganiseerd in rijen en kolommen
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)
Data herstructureren met pandas

Breed formaat

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

Data herstructureren met pandas

Breed formaat

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
                         ^^
  • Elke feature staat in een aparte kolom
Data herstructureren met pandas

Breed formaat

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 <--

  • Elke feature staat in een aparte kolom
  • Elke rij bevat meerdere features van dezelfde speler
Data herstructureren met pandas

Breed formaat

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
  • Elke feature staat in een aparte kolom
  • Elke rij bevat meerdere features van dezelfde speler
  • Geen herhaling maar veel missende waarden
  • Eenvoudige statistiek en imputatie
Data herstructureren met pandas

Lang formaat

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
Data herstructureren met pandas

Lang formaat

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
  • Elke rij stelt één feature voor
Data herstructureren met pandas

Lang formaat

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
  • Elke rij stelt één feature voor
  • Meerdere rijen per speler
Data herstructureren met pandas

Lang formaat

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
        ^^^^^^^^^^^
  • Elke rij stelt één feature voor
  • Meerdere rijen per speler
  • Een kolom (name) om dezelfde speler te herkennen
Data herstructureren met pandas

Lang formaat

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
  • Elke rij stelt één feature voor
  • Meerdere rijen per speler
  • Een kolom (name) om dezelfde speler te herkennen
  • Tidy data:
    • Beter voor samenvatten
    • Sleutel-waardeparen
    • Voorkeur voor analyse en grafieken
Data herstructureren met pandas

Data reshapen

  • De structuur van een DataFrame of Series aanpassen voor analyse
    • Een DataFrame transponeren
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
Data herstructureren met pandas

Data reshapen

  • De structuur van een DataFrame of Series aanpassen voor analyse
    • Een DataFrame transponeren
fifa_players.set_index('club')[['name', 'nationality']]
                               name   nationality 
         club 
    Barcelona        Lionel Messi       Argentina
     Juventus   Cristiano Ronaldo        Portugal
Saint-Germain     Neymar da Silva          Brazil
Data herstructureren met pandas

Data reshapen

  • De structuur van een DataFrame of Series aanpassen voor analyse
    • Een DataFrame transponeren
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
Data herstructureren met pandas

Data reshapen

  • Data omzetten van breed naar lang en omgekeerd
  • Eenheid van analyse:
    • Lang formaat -> kenmerk van een speler
    • Breed formaat -> elke speler
Data herstructureren met pandas

Transformatie van breed naar lang

  • Uitvoeren met pandas-functies, zoals:

    • .melt()
    • .wide_to_long()
Data herstructureren met pandas

Van lang naar breed formaat

  • Transformeren met pandas-methoden, bijv.:

    • .pivot()
    • .pivot_table()
Data herstructureren met pandas

Laten we oefenen!

Data herstructureren met pandas

Preparing Video For Download...