Heim >Backend-Entwicklung >Python-Tutorial >Wann erstellt Pandas eine Ansicht oder eine Kopie?

Wann erstellt Pandas eine Ansicht oder eine Kopie?

Susan Sarandon
Susan SarandonOriginal
2024-11-04 05:02:01733Durchsuche

When Does Pandas Create a View vs a Copy?

Pandas-Regeln für die Generierung von Ansichten und Kopien

Pandas verwendet bestimmte Regeln, um zu entscheiden, ob eine Slice-Operation auf einem DataFrame zu einer Ansicht oder einer Ansicht führt Kopie. Wenn Sie diese Regeln verstehen, können Sie Ihre Datenmanipulation optimieren und unerwartetes Verhalten vermeiden.

Beginnend mit Vorgängen, die immer Kopien erzeugen:

  1. Alle Vorgänge, mit Ausnahme derjenigen, die speziell zum Ändern konzipiert sind Erstellen Sie Kopien des DataFrame vor Ort.
  2. Nur ​​bestimmte Vorgänge unterstützen den Parameter inplace=True, der Änderungen direkt im ursprünglichen DataFrame ermöglicht.

Als nächstes betrachten wir Vorgänge Dies kann zu Ansichten führen:

  1. Ein Indexer, der Werte wie .loc, .iloc, .iat und .at festlegt, arbeitet direkt und ändert den ursprünglichen DataFrame, ohne eine Kopie zu erstellen.
  2. Ein Indexer, der Daten von einem Objekt mit einem einzigen D-Typ abruft, erstellt normalerweise eine Ansicht, es sei denn, das zugrunde liegende Speicherlayout schließt diese Optimierung aus.
  3. Umgekehrt ein Indexer, der Daten von einem Objekt mit mehreren D-Typen abruft Erstellt immer eine Kopie.

Zu Ihren Beispielen:

  • df.query('2 < index <= 5') gibt eine Kopie zurück, da es sich um eine Zahl handelt Ausdrucksauswertung.
  • df.iloc[3] = 70 und df.ix[1, 'B':'E'] = 222 ändern df, da sie auf Objekte mit einem einzigen D-Typ zugreifen und Werte direkt festlegen.
  • df[df.C <= df.B] ändert df, weil es einen direkten Setter (df[...]) für ein einzelnes D-Typ-Objekt (die resultierende boolesche Maske) verwendet.
  • Df[df.C <= df.B].ix[:,'B':'E'] ändert df jedoch nicht, da es sich dabei um einen verketteten Indexierungsvorgang handelt, der nicht garantiert ist von Pandas abgefangen.

Um bestimmte Werte basierend auf einer Abfrage zu ändern, verwenden Sie die richtige Loc-Syntax:

df.loc[df.C <= df.B, 'B':'E']

Durch die Einhaltung dieser Regeln können Sie ein klares Verständnis davon erlangen wenn Pandas Ansichten oder Kopien generiert, um eine effiziente Datenbearbeitung in Ihren Python-Skripten sicherzustellen.

Das obige ist der detaillierte Inhalt vonWann erstellt Pandas eine Ansicht oder eine Kopie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn