Meiner Meinung nach müssen Sie also zwei Dinge tun, wenn Sie eine Teilmenge Ihrer Daten für die Analyse bereitstellen.
- Zeilen holen
- Spalten holen
Pandas bietet eine Reihe von Möglichkeiten, diese Aufgaben zu erfüllen, und einige Techniken, die dabei helfen, Reihen zu bilden y Spalten. Für neue Pandas-Benutzer kann es verwirrend sein, da es so viele Möglichkeiten gibt.
Verwenden Sie iloc, loc, brackets, query, isin, np.where, mask usw.?
Methodenverkettung
Die Methodenverkettung ist eine großartige Möglichkeit, mit Daten zu arbeiten. In R gibt es eine einfache Möglichkeit, dies zu tun: Sie select()
Spalten und Sie filter()
Reihen.
Wenn wir also die Dinge in Pandas einfach halten wollen, warum verwenden wir nicht die filter()
für Spalten und die query()
für Zeilen. Beide geben Datenrahmen zurück, so dass keine Notwendigkeit besteht, mit boolescher Indizierung herumzupfuschen, keine Notwendigkeit, die df[ ]
runden den Rückgabewert.
Und wie sieht das aus:-
df.filter(['col1', 'col2', 'col3']).query("col1 == 'sometext'")
Sie können dann alle anderen Methoden wie groupby
, dropna()
, sort_values()
, reset_index()
usw. usw.
Durch konsequentes Handeln und die Verwendung von filter()
um Ihre Spalten zu erhalten und query()
um Ihre Zeilen zu erhalten, wird es einfacher sein, Ihren Code zu lesen, wenn Sie nach einiger Zeit darauf zurückkommen.
Aber Filter können Zeilen auswählen?
Ja, das ist richtig, aber standardmäßig query()
Zeilen erhalten und filter()
Spalten erhalten. Wenn Sie also die Standardeinstellung beibehalten, ist es nicht notwendig, die axis=
Parameter.
Abfrage()
query() kann mit beiden verwendet werden and
/ or
&
/ |
können Sie auch Vergleichsoperatoren verwenden > , < , >= , <=, ==, !=
. Sie können auch Python in, nicht in verwenden.
Mit @my_list können Sie eine Liste an die Abfrage übergeben
Einige Beispiele für die Verwendung von Abfragen zum Abrufen von Zeilen
df.query('A > B')
df.query('a not in b')
df.query("series == '2206'")
df.query("col1 == @mylist")
df.query('Salary_in_1000 >= 100 & Age < 60 & FT_Team.str.startswith("S").values')
filter()
Filter ist also im Grunde wie die Verwendung von Klammern df[]
o df[[]]
insofern, als es die Beschriftungen zur Auswahl von Spalten verwendet. Aber es tut mehr als nur die Klammerschreibweise.
Filter hat like=
Parameter, um die Auswahl von Spalten mit unvollständigen Namen zu erleichtern.
df.filter(like='partial_name',)
Filter hat auch Regex, um bei der Auswahl zu helfen
df.filter(regex='reg_string')
Zusammenfassend lässt sich also sagen, dass diese Arbeitsweise nicht für jede Situation geeignet ist, z. B. wenn Sie Indizierung/Slicing verwenden möchten, dann ist iloc der richtige Weg. Aber dies scheint eine solide Arbeitsweise zu sein und kann Ihren Arbeitsablauf und Code vereinfachen.