Pandas - Korrigieren falscher Daten


Falschen Daten

„Falsche Daten“ müssen nicht „leere Zellen“ oder „falsches Format“ sein, es kann einfach falsch sein, etwa wenn jemand „199“ statt „1,99“ eingetragen hat.

Manchmal können Sie falsche Daten erkennen, indem Sie sich den Datensatz ansehen, weil Sie eine Erwartung haben, was er sein sollte.

Wenn Sie sich unseren Datensatz ansehen, können Sie sehen, dass in Zeile 7 die Dauer 450 beträgt, aber für alle anderen Zeilen die Dauer zwischen 30 und 60 liegt.

Es muss nicht falsch sein, aber wenn man bedenkt, dass dies der Datensatz der Trainingseinheiten von jemandem ist, schließen wir daraus, dass diese Person in 450 Minuten nicht trainiert hat.

      Duration          Date  Pulse  Maxpulse  Calories
  0         60  '2020/12/01'    110       130     409.1
  1         60  '2020/12/02'    117       145     479.0
  2         60  '2020/12/03'    103       135     340.0
  3         45  '2020/12/04'    109       175     282.4
  4         45  '2020/12/05'    117       148     406.0
  5         60  '2020/12/06'    102       127     300.0
  6         60  '2020/12/07'    110       136     374.0
  7        450  '2020/12/08'    104       134     253.3
  8         30  '2020/12/09'    109       133     195.1
  9         60  '2020/12/10'     98       124     269.0
  10        60  '2020/12/11'    103       147     329.3
  11        60  '2020/12/12'    100       120     250.7
  12        60  '2020/12/12'    100       120     250.7
  13        60  '2020/12/13'    106       128     345.3
  14        60  '2020/12/14'    104       132     379.3
  15        60  '2020/12/15'     98       123     275.0
  16        60  '2020/12/16'     98       120     215.2
  17        60  '2020/12/17'    100       120     300.0
  18        45  '2020/12/18'     90       112       NaN
  19        60  '2020/12/19'    103       123     323.0
  20        45  '2020/12/20'     97       125     243.0
  21        60  '2020/12/21'    108       131     364.2
  22        45           NaN    100       119     282.0
  23        60  '2020/12/23'    130       101     300.0
  24        45  '2020/12/24'    105       132     246.0
  25        60  '2020/12/25'    102       126     334.5
  26        60      20201226    100       120     250.0
  27        60  '2020/12/27'     92       118     241.0
  28        60  '2020/12/28'    103       132       NaN
  29        60  '2020/12/29'    100       132     280.0
  30        60  '2020/12/30'    102       129     380.3
  31        60  '2020/12/31'     92       115     243.0

Wie können wir falsche Werte korrigieren, wie den für "Dauer" in Zeile 7?


w3schools CERTIFIED . 2021

Zertifiziert werden!

Absolvieren Sie die Pandas-Module, machen Sie die Übungen, machen Sie die Prüfung und Sie werden w3schools-zertifiziert!

$10 REGISTRIEREN

Werte ersetzen

Eine Möglichkeit, falsche Werte zu korrigieren, besteht darin, sie durch etwas anderes zu ersetzen.

In unserem Beispiel handelt es sich höchstwahrscheinlich um einen Tippfehler, und der Wert sollte "45" statt "450" ​​lauten, und wir könnten einfach "45" in Zeile 7 einfügen:

Beispiel

Setzen Sie "Dauer" = 45 in Zeile 7:

df.loc[7, 'Duration'] = 45

Bei kleinen Datensätzen können Sie möglicherweise die falschen Daten einzeln ersetzen, bei großen Datensätzen jedoch nicht.

Um falsche Daten für größere Datensätze zu ersetzen, können Sie einige Regeln erstellen, z. B. einige Grenzen für gültige Werte festlegen und alle Werte ersetzen, die außerhalb der Grenzen liegen.

Beispiel

Schleifen Sie alle Werte in der Spalte „Dauer“ durch.

Wenn der Wert höher als 120 ist, setzen Sie ihn auf 120:

for x in df.index:
  if df.loc[x, "Duration"] > 120:
    df.loc[x, "Duration"] = 120

Zeilen entfernen

Eine andere Möglichkeit, mit falschen Daten umzugehen, besteht darin, die Zeilen zu entfernen, die falsche Daten enthalten.

Auf diese Weise müssen Sie nicht herausfinden, wodurch Sie sie ersetzen, und es besteht eine gute Chance, dass Sie sie für Ihre Analysen nicht benötigen.

Beispiel

Löschen Sie Zeilen, bei denen "Dauer" größer als 120 ist:

for x in df.index:
  if df.loc[x, "Duration"] > 120:
    df.drop(x, inplace = True)