Unterschied iloc und loc
Verfasst: Samstag 23. April 2022, 16:08
Hallo,
ich habe einen code geschrieben bei dem ich bei iloc eine Fehlermeldung "SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame".
Bei loc erhalte ich diese Fehlermeldung nicht.
Woran liegt das?
Soweit ich weiß kann man mit beiden methoden Zeilen und Spalten ansprechen. Dabei spricht man bei loc die zeile oder spalte mit dem Namen, bei iloc mit dem index der zeile oder Spalte. Beide returnen beide keine Kopie der zeile/ spalte sondern Sprechen diese nur an.
also verstehe ich nicht wie es sein kann das ich bei einer die fehlermeldung erhalte bei der anderen aber nicht.
Mein code
Vielen Dank im Voraus!
ich habe einen code geschrieben bei dem ich bei iloc eine Fehlermeldung "SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame".
Bei loc erhalte ich diese Fehlermeldung nicht.
Woran liegt das?
Soweit ich weiß kann man mit beiden methoden Zeilen und Spalten ansprechen. Dabei spricht man bei loc die zeile oder spalte mit dem Namen, bei iloc mit dem index der zeile oder Spalte. Beide returnen beide keine Kopie der zeile/ spalte sondern Sprechen diese nur an.
also verstehe ich nicht wie es sein kann das ich bei einer die fehlermeldung erhalte bei der anderen aber nicht.
Mein code
Code: Alles auswählen
from sklearn.model_selection import StratifiedShuffleSplit
# Instanz von StratifiedShuffleSplit legt fest wie aufgeteilt werden soll
aufteilung = StratifiedShuffleSplit(n_splits=1, test_size = 0.2, random_state=42)
# Aufteilung mit einer forSchleife anhand von Indexen
for test_index, train_index in aufteilung.split(daten, daten["Einkommensgruppen"]):
trainingsdaten = daten.iloc[train_index] # hier iloc / loc verwendet
testdaten = daten.iloc[test_index]
testDataFrame = pd.DataFrame(trainingsdaten)
trainingsdaten
# die zusätzliche Spalte "Einkommensgruppen" aus beiden Daten entfernen
trainingsdaten.drop("Einkommensgruppen", axis =1, inplace =True) # hier wird fehlermeldung angezeigt
testdaten.drop("Einkommensgruppen", axis =1, inplace =True)