Warum iteriert Pandas standardmäßig über DataFrame-Spalten?

7

Versuch, die Designprinzipien einiger Funktionen der Pandas zu verstehen.

Wenn ich einen DataFrame mit 3560 Zeilen und 18 Spalten habe, dann

%Vor%

ist 3560, aber

%Vor%

ist 18.

Vielleicht fühlt sich das für jemanden, der aus R kommt, natürlich an; für mich fühlt es sich nicht sehr "Pythonic" an. Gibt es irgendwo eine Einführung in die grundlegenden Designprinzipien für Pandas?

    
trvrm 18.09.2014, 16:44
quelle

2 Antworten

14

Ein DataFrame ist in erster Linie eine spaltenbasierte Datenstruktur. Unter der Haube sind die Daten im DataFrame in Blöcken gespeichert. Grob gesagt gibt es einen Block für jeden dtype. Jede Spalte hat einen dtype . Der Zugriff auf eine Spalte kann also durch Auswählen der entsprechenden Spalte aus einem einzelnen Block erfolgen. Im Gegensatz dazu müssen Sie für die Auswahl einer einzelnen Zeile die entsprechende Zeile aus jedem Block auswählen und dann eine neue Serie erstellen und die Daten aus jeder Blockreihe in die Serie kopieren. Daher ist das Iterieren durch Zeilen eines DataFrames (unter der Haube) kein so natürlicher Prozess wie das Iterieren von Spalten.

Wenn Sie die Zeilen durchlaufen müssen, können Sie dies dennoch tun, indem Sie df.iterrows() aufrufen. Sie sollten die Verwendung von df.iterrows möglichst aus dem gleichen Grund vermeiden, aus dem es unnatürlich ist - es erfordert das Kopieren, was den Prozess langsamer macht als das Durchlaufen von Spalten.

    
unutbu 18.09.2014, 16:59
quelle
4

Es gibt eine anständige Erklärung in der Dokumentation - Iteration für Pandas DataFrames sei "dict-like", also liegt die Iteration über den Schlüsseln (den Spalten).

Wahrscheinlich ist es ein wenig verwirrend, dass die Iteration für Series über die Werte hinausgeht, aber wie in der Dokumentation erwähnt, liegt das daran, dass sie "arrayähnlicher" sind.

    
chrisb 18.09.2014 16:57
quelle

Tags und Links