Czytam Pythona do analizy danych Wesa Mckinneya, ale byłem zaskoczony tą manipulacją danymi. Możesz zobaczyć całą procedurę here, ale spróbuję podsumować ją tutaj. Zakładam, że masz coś takiego:Dziwna manipulacja danymi w Pandach
In [133]: agg_counts = by_tz_os.size().unstack().fillna(0)
Out[133]:
a Not Windows Windows
tz 245 276
Africa/Cairo 0 3
Africa/Casablanca 0 1
Africa/Ceuta 0 2
Africa/Johannesburg 0 1
Africa/Lusaka 0 1
America/Anchorage 4 1
...
tz
oznacza strefę czasową i Not Windows
i Windows
to kategorie wyodrębnione z User Agent w oryginalnych danych, dzięki czemu możemy zobaczyć, że istnieją 3 Użytkownicy Windows i 0 innych niż Windows użytkowników w Afryce/Kairze z zebranych danych.
Następnie w celu uzyskania „top ogólne strefy czasowe” mamy:
In [134]: indexer = agg_counts.sum(1).argsort()
Out[134]:
tz
24
Africa/Cairo 20
Africa/Casablanca 21
Africa/Ceuta 92
Africa/Johannesburg 87
Africa/Lusaka 53
America/Anchorage 54
America/Argentina/Buenos_Aires 57
America/Argentina/Cordoba 26
America/Argentina/Mendoza 55
America/Bogota 62
...
Więc w tym momencie, to bym pomyślał, że zgodnie z documentation byłem zsumowanie kolumny (w sum(1)
) i następnie sortowanie według wyników pokazujących argumenty (jak zwykle w argsort). Przede wszystkim nie jestem pewien, co to znaczy "kolumny" w kontekście tej serii, ponieważ sum(1)
faktycznie sumuje użytkowników Not Windows
i Windows
utrzymujących tę wartość w tym samym wierszu, co jej strefa czasowa. Ponadto nie widzę korelacji między wartościami argsort i agg_counts
. Na przykład Pacific/Auckland
ma "wartość argsort" (w In[134]
) z 0 i ma tylko sumę 11 Windows
i Not Windows
użytkowników. Asia/Harbin
ma wartość argsort równą 1 i pojawia się z sumą 3 Windows
i użytkowników niezainerwowanych przez system Windows.
Czy ktoś może mi wyjaśnić, co się tam dzieje? Najwyraźniej coś nie rozumiem.
To bardzo mylące przykład w tej książce) – Winand