Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man Pandas' SettingWithCopyWarning verstehen und beheben?

Wie kann man Pandas' SettingWithCopyWarning verstehen und beheben?

DDD
Freigeben: 2024-12-26 04:37:10
Original
716 Leute haben es durchsucht

How to Understand and Resolve Pandas' SettingWithCopyWarning?

SettingWithCopyWarning in Pandas verstehen

Hintergrund:

Pandas-Versionen 0.13 und höher werden eingeführt die SettingWithCopyWarning, um potenzielle Verwirrung hervorzuheben, die durch „verkettete“ Zuweisungen verursacht wird. Diese Warnung zielt auf Szenarien ab, in denen eine Kopie eines DataFrames geändert wird, was zu unerwarteten Ergebnissen führt.

Was bedeutet die Warnung?

Die Warnung weist darauf hin, dass ein Wert vorliegt wird auf eine Kopie eines Slice aus einem DataFrame gesetzt. Insbesondere wird vorgeschlagen, die folgende Zeile zu ersetzen:

quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Nach dem Login kopieren
Nach dem Login kopieren

durch:

quote_df.loc[row_index, 'TVol'] = value
Nach dem Login kopieren

So beheben Sie die Warnung:

Die bereitgestellte Lösung Die Warnung besteht darin, stattdessen die Loc-Indizierung zu verwenden. Dies ist jedoch möglicherweise nicht für alle Anwendungsfälle geeignet. Wenn Ihnen die Aktualisierung des ursprünglichen DataFrame nicht wichtig ist, können Sie die Warnung sicher deaktivieren mit:

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
Nach dem Login kopieren

Andere Erklärung:

Das SettingWithCopyWarning kennzeichnet verkettete Zuweisungen, die dies tun funktionieren nicht immer wie erwartet. Das Problem tritt auf, wenn die erste Auswahl eine Kopie des DataFrame zurückgibt und nachfolgende Zuweisungen an dieser Kopie vorgenommen werden. Dieses Muster kann zu Verwirrung führen, da die Änderungen nicht im ursprünglichen DataFrame widergespiegelt werden.

In Ihrem Fall verursacht der folgende Code die Warnung:

quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Nach dem Login kopieren
Nach dem Login kopieren

Da quote_df['TVol' ] eine Kopie ist, ändert die Zuweisung den ursprünglichen DataFrame nicht. Erwägen Sie stattdessen die Verwendung von:

quote_df = quote_df[quote_df['TVol'] > 0]
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Nach dem Login kopieren

Zusätzliche Ressourcen:

  • [Pandas-Benutzerhandbuch: Indizieren und Auswählen von Daten](https://pandas.pydata .org/pandas-docs/stable/user_guide/indexing.html)
  • [Python Data Science Handbook: Datenindizierung und -auswahl](https://jakevdp.github.io/PythonDataScienceHandbook/02.01-indexing-and-selecting-data.html)
  • [Real Python: SettingWithCopyWarning in Pandas: Ansichten vs. Kopien](https ://realpython.com/settingwithcopywarning-in-pandas/)
  • [Dataquest: SettingwithCopyWarning: So beheben Sie diese Warnung in Pandas](https://www.dataquest.io/blog/settingwithcopywarning-pandas/)
  • [Auf dem Weg zur Datenwissenschaft: Erläuterung der SettingWithCopyWarning in Pandas](https://towardsdatascience.com/explaining-the-settingwithcopywarning-in-pandas-520ea63f963a)

Das obige ist der detaillierte Inhalt vonWie kann man Pandas' SettingWithCopyWarning verstehen und beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage