pandas.groupby() Verständnisfrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
C#17
User
Beiträge: 19
Registriert: Montag 22. Mai 2017, 12:19

pandas.groupby() Verständnisfrage

Beitragvon C#17 » Montag 5. Juni 2017, 12:04

Hallo,

ich importiere das "planets" dataset von pandas.

Code: Alles auswählen

planets= sns.load_dataset("planets")


Mit folgendem Code welchen ich aus einem Buch habe:

Code: Alles auswählen

decade= 10*(planets["year"]//10)
print(decade)
decade= decade.astype(str)+"s"
decade.name= "decade"
print(planets.groupby(["method",decade])["number"].sum().unstack().fillna(0))


erziele ich folgende Ausgabe:


Code: Alles auswählen

decade                         1980s  1990s  2000s  2010s
method                                                   
Astrometry                       0.0    0.0    0.0    2.0
Eclipse Timing Variations        0.0    0.0    5.0   10.0
Imaging                          0.0    0.0   29.0   21.0
Microlensing                     0.0    0.0   12.0   15.0
Orbital Brightness Modulation    0.0    0.0    0.0    5.0
Pulsar Timing                    0.0    9.0    1.0    1.0
Pulsation Timing Variations      0.0    0.0    1.0    0.0
Radial Velocity                  1.0   52.0  475.0  424.0
Transit                          0.0    0.0   64.0  712.0
Transit Timing Variations        0.0    0.0    0.0    9.0


Nun ist aus der groupby documentation zu entnehmen, dass an die groupby() methode eine Liste übergeben werden kann, nach welcher die Gruppierung erfolgen soll. Nun wäre meine Frage ob ich mit folgender Interpretation des codes auf dem richtigen Weg bin.
1.Es wird also sozusagen zuerst nach "method" (Y-Richtung) aufgeteilt und dann nach decade (X-Richting).

was mich nun aber wirklich verwirrt ist:
Wenn ich das Argument decade aus der List entferne

Code: Alles auswählen

planets.groupby(["method"])["number"].sum().unstack().fillna(0))

dann wird mir eine Fehlermeldung der Art:

Code: Alles auswählen

AttributeError: 'Index' object has no attribute 'labels'

ausgegeben....
WARUM????
Ich habe doch nichts gemacht als die "X-Richtung" entfernt. Ich müsste aber doch dennoch die Summe der Nummern von "Astronomie", "Eclipse Timing Variations",... bilden und ausgeben können?

Kann mir das jemand bitte in möglichst bildlichen Sätzen erklären??

Wer ist online?

Mitglieder in diesem Forum: sebastian0202