Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:
KeyError: "['Label'] not found in axis"
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, eine Spalte aus …
Eine Warnung, auf die Sie bei der Verwendung von Pandas stoßen können, ist:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Diese Warnung erscheint, wenn Pandas auf eine sogenannte Kettenzuweisung stoßen – die Kombination aus Verkettung und Zuweisung in einem Schritt.
Es ist wichtig zu beachten, dass dies lediglich eine Warnung ist, kein Fehler. Ihr Code wird weiterhin ausgeführt, aber die Ergebnisse stimmen möglicherweise nicht immer mit Ihren Erwartungen überein.
Der einfachste Weg, diese Warnung zu unterdrücken, ist die Verwendung des folgenden Codes:
pd.options.mode.chained_assignment = None
Das folgende Beispiel zeigt, wie dieser Warnung in der Praxis begegnet werden kann.
Angenommen, wir erstellen den folgenden Pandas DataFrame:
import pandas as pd
#Dataframe erstellen
df = pd.DataFrame({'A': [25, 12, 15, 14, 19, 23, 25, 29],
'B': [5, 7, 7, 9, 12, 9, 9, 4],
'C': [11, 8, 10, 6, 6, 5, 9, 12]})
#Dataframe anzeigen
df
A B C
0 25 5 11
1 12 7 8
2 15 7 10
3 14 9 6
4 19 12 6
5 23 9 5
6 25 9 9
7 29 4 12
Nehmen wir nun an, wir erstellen einen neuen DataFrame, der nur Spalte „A“ aus dem ursprünglichen DataFrame enthält, und teilen jeden Wert in Spalte „A“ durch 2:
#neuen Dataframe definieren
df2 = df[['A']]
#Teile alle Werte in Spalte 'A' durch 2
df2['A'] = df['A'] / 2
/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:2:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
Wir erhalten die SettingWithCopyWarning- Nachricht, weil wir neue Werte für Spalte „A“ auf einem „Slice“ aus dem ursprünglichen DataFrame festlegen.
Wenn wir uns jedoch den neuen DataFrame ansehen, den wir erstellt haben, sehen wir, dass jeder Wert tatsächlich erfolgreich durch 2 geteilt wurde:
#neuen Dataframe anzeigen
df2
A
0 12.5
1 6.0
2 7.5
3 7.0
4 9.5
5 11.5
6 12.5
7 14.5
Obwohl wir eine Warnmeldung erhalten haben, haben Pandas immer noch das getan, was wir dachten.
Um die Warnung zu vermeiden, wird empfohlen, die .loc[row indexer, col indexer] wie folgt zu verwenden:
#neues Dataframe definieren
df2 = df.loc[:, ['A']]
#Teile jeden Wert in Spalte 'A' durch 2
df2['A'] = df['A'] / 2
#zeige Ergebnis
df2
A
0 12.5
1 6.0
2 7.5
3 7.0
4 9.5
5 11.5
6 12.5
7 14.5
Der neue DataFrame enthält alle Werte aus Spalte „A“ im ursprünglichen DataFrame, geteilt durch zwei, und es wird keine Warnmeldung angezeigt.
Wenn wir verhindern möchten, dass die Warnmeldung jemals angezeigt wird, können wir den folgenden Code verwenden:
# verhindern, dass die SettingWithCopyWarnmeldung angezeigt wird
pd.options.mode.chained_assignment = None
Eine ausführliche Erklärung, warum verkettete Zuweisungen vermieden werden sollten, finden Sie in der Online-Dokumentation zu Pandas .
Problembehebung: Kein Modul namens pandas
Problembehebung: Kein Modul namens numpy
Problembehebung: Spalten überlappen, aber es wurde kein Suffix angegeben
Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:
KeyError: "['Label'] not found in axis"
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, eine Spalte aus …
Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:
ValueError: columns overlap but no suffix specified: Index(['column'], dtype='object')
Dieser Fehler tritt auf, wenn Sie …