Formáty dat: široký a dlouhý

Přetváření dat s pandas

Maria Eugenia Inzaugarat

Data Scientist

Naučíte se

  • Široký a dlouhý formát
  • Transformace z dlouhého do širokého formátu
  • Transformace ze širokého do dlouhého formátu
  • Skládání a rozskládání sloupců
  • Přetváření a práce se složitými daty, jako jsou řetězce nebo JSON
Přetváření dat s pandas

Proč je to důležité

  • Úhledná data (tidy data)
  • Data nejsou ve vhodném formátu pro analýzu:
    • Lidsky čitelná vs. statistická analýza
  • Vnořená data v DataFrame jsou složitá na zpracování
  • Souhrnné statistiky pro DataFrame s víceúrovňovým indexem
Přetváření dat s pandas

Tvar dat

  • Způsob uspořádání datové sady do řádků a sloupců
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)
Přetváření dat s pandas

Široký formát

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

Přetváření dat s pandas

Široký formát

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
                         ^^
  • Každý atribut je ve vlastním sloupci
Přetváření dat s pandas

Široký formát

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

  • Každý atribut je ve vlastním sloupci
  • Každý řádek obsahuje více atributů téhož hráče
Přetváření dat s pandas

Široký formát

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
  • Každý atribut je ve vlastním sloupci
  • Každý řádek obsahuje více atributů téhož hráče
  • Bez opakování, ale s velkým množstvím chybějících hodnot
  • Jednoduché statistiky a imputace
Přetváření dat s pandas

Dlouhý formát

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
Přetváření dat s pandas

Dlouhý formát

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
  • Každý řádek představuje jeden atribut
Přetváření dat s pandas

Dlouhý formát

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
  • Každý řádek představuje jeden atribut
  • Více řádků pro každého hráče
Přetváření dat s pandas

Dlouhý formát

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
        ^^^^^^^^^^^
  • Každý řádek představuje jeden atribut
  • Více řádků pro každého hráče
  • Sloupec (name) pro identifikaci hráče
Přetváření dat s pandas

Dlouhý formát

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
  • Každý řádek představuje jeden atribut
  • Více řádků pro každého hráče
  • Sloupec (name) pro identifikaci hráče
  • Úhledná data (tidy data):
    • Lepší pro sumarizaci dat
    • Páry klíč–hodnota
    • Vhodné pro analýzu a vizualizaci
Přetváření dat s pandas

Přetváření dat

  • Transformace struktury DataFrame nebo Series pro analýzu
    • Transpozice 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
Přetváření dat s pandas

Přetváření dat

  • Transformace struktury DataFrame nebo Series pro analýzu
    • Transpozice 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
Přetváření dat s pandas

Přetváření dat

  • Transformace struktury DataFrame nebo Series pro analýzu
    • Transpozice 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
Přetváření dat s pandas

Přetváření dat

  • Převod dat ze širokého do dlouhého formátu a zpět
  • Jednotka analýzy:
    • Dlouhý formát → vlastnost hráče
    • Široký formát → každý hráč
Přetváření dat s pandas

Transformace ze širokého do dlouhého formátu

  • Provádí se pomocí funkcí pandas, například:

    • .melt()
    • .wide_to_long()
Přetváření dat s pandas

Transformace z dlouhého do širokého formátu

  • Transformace dat pomocí metod pandas, například:

    • .pivot()
    • .pivot_table()
Přetváření dat s pandas

Let's practice!

Přetváření dat s pandas

Preparing Video For Download...