Breda och långa dataformat

Omforma data med pandas

Maria Eugenia Inzaugarat

Data Scientist

Det här lär du dig

  • Breda och långa format
  • Omvandling från långt till brett format
  • Omvandling från brett till långt format
  • Stapla och ta isär kolumner
  • Omforma och hantera komplex data, till exempel strängkolumner eller JSON-data
Omforma data med pandas

Varför det är viktigt

  • Välstrukturerade datamängder
  • Data som inte är i rätt format för analys:
    • Läsbart för människor kontra statistisk analys
  • Nästlad data i DataFrames är komplex att hantera
  • Hämta sammanfattande statistik för DataFrames med flernivåindex
Omforma data med pandas

Datans form

  • Hur en datamängd är organiserad i rader och kolumner
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)
Omforma data med pandas

Brett format

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

Omforma data med pandas

Brett format

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
                         ^^
  • Varje särdrag finns i en egen kolumn
Omforma data med pandas

Brett format

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

  • Varje särdrag finns i en egen kolumn
  • Varje rad innehåller många särdrag för samma spelare
Omforma data med pandas

Brett format

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
  • Varje särdrag finns i en egen kolumn
  • Varje rad innehåller många särdrag för samma spelare
  • Ingen upprepning men många saknade värden
  • Enkel statistik och imputering
Omforma data med pandas

Långt format

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
Omforma data med pandas

Långt format

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
  • Varje rad representerar ett särdrag
Omforma data med pandas

Långt format

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
  • Varje rad representerar ett särdrag
  • Flera rader per spelare
Omforma data med pandas

Långt format

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
        ^^^^^^^^^^^
  • Varje rad representerar ett särdrag
  • Flera rader per spelare
  • En kolumn (name) identifierar samma spelare
Omforma data med pandas

Långt format

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
  • Varje rad representerar ett särdrag
  • Flera rader per spelare
  • En kolumn (name) identifierar samma spelare
  • Välstrukturerad data:
    • Lättare att sammanfatta data
    • Nyckel-värde-par
    • Föredras för analys och visualisering
Omforma data med pandas

Omforma data

  • Omforma strukturen hos en DataFrame eller Series för analys
    • Transponera en 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
Omforma data med pandas

Omforma data

  • Omforma strukturen hos en DataFrame eller Series för analys
    • Transponera en 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
Omforma data med pandas

Omforma data

  • Omforma strukturen hos en DataFrame eller Series för analys
    • Transponera en 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
Omforma data med pandas

Omforma data

  • Konvertera data mellan brett och långt format
  • Analysenhet:
    • Långt format -> ett särdrag per spelare
    • Brett format -> varje spelare
Omforma data med pandas

Omvandling från brett till långt format

  • Utförs med pandas-funktioner, till exempel:

    • .melt()
    • .wide_to_long()
Omforma data med pandas

Omvandling från långt till brett format

  • Omforma data med pandas-metoder, till exempel:

    • .pivot()
    • .pivot_table()
Omforma data med pandas

Nu kör vi en övning!

Omforma data med pandas

Preparing Video For Download...