Verkettete Zuweisungen in Pandas, einer beliebten Datenbearbeitungsbibliothek, sind Operationen, die nacheinander an den Werten eines Datenrahmens ausgeführt werden. Dies kann zu Leistungsproblemen führen, wenn die Vorgänge nicht ordnungsgemäß ausgeführt werden.
Pandas gibt SettingWithCopy-Warnungen aus, um auf mögliche Ineffizienzen bei verketteten Zuweisungen hinzuweisen. Die Warnungen machen Benutzer darauf aufmerksam, dass die Zuweisungen den ursprünglichen Datenrahmen möglicherweise nicht wie beabsichtigt aktualisieren.
Wenn auf eine Pandas-Serie oder einen Pandas-Datenrahmen verwiesen wird, wird eine Kopie zurückgegeben. Dies kann zu Fehlern führen, wenn das referenzierte Objekt nachträglich geändert wird. Beispielsweise verhält sich der folgende Code möglicherweise nicht wie erwartet:
data['amount'] = data['amount'].fillna(float)
Die obige Zuweisung erstellt eine Kopie der data['amount']-Serie, die dann aktualisiert wird. Dadurch wird verhindert, dass der ursprüngliche Datenrahmen aktualisiert wird.
Um die Erstellung unnötiger Kopien zu vermeiden, stellt Pandas Inplace-Operationen bereit, die mit .inplace(True) gekennzeichnet sind. Diese Operationen ändern den ursprünglichen Datenrahmen direkt:
data['amount'].fillna(data.groupby('num')['amount'].transform('mean'), inplace=True)
Die Verwendung von Inplace-Vorgängen oder separaten Zuweisungen hat mehrere Vorteile:
data['amount'] = data['amount'].fillna(mean_avg) * 2
Das Verständnis verketteter Zuweisungen in Pandas ist entscheidend für die Optimierung der Codeeffizienz und die Vermeidung von Datenänderungsfehlern. Durch die Einhaltung der in diesem Artikel beschriebenen empfohlenen Vorgehensweisen können Sie die Genauigkeit und Leistung Ihrer Pandas-Vorgänge sicherstellen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3