Pandas - Corrección de datos incorrectos


Información incorrecta

Los "datos incorrectos" no tienen que ser "celdas vacías" o "formato incorrecto", simplemente pueden ser incorrectos, como si alguien registrara "199" en lugar de "1.99".

A veces, puede detectar datos incorrectos mirando el conjunto de datos, porque tiene una expectativa de lo que debería ser.

Si observa nuestro conjunto de datos, puede ver que en la fila 7, la duración es 450, pero para todas las demás filas, la duración es entre 30 y 60.

No tiene por qué estar mal, pero teniendo en cuenta que este es el conjunto de datos de las sesiones de entrenamiento de alguien, concluimos con el hecho de que esta persona no hizo ejercicio en 450 minutos.

      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

¿Cómo podemos corregir valores incorrectos, como el de "Duración" en la fila 7?


w3schools CERTIFIED . 2021

¡Obtener la certificación!

¡Complete los módulos de Pandas, haga los ejercicios, tome el examen y obtendrá la certificación de w3schools!

$10 INSCRÍBETE

Sustitución de valores

Una forma de corregir valores incorrectos es reemplazarlos con otra cosa.

En nuestro ejemplo, lo más probable es que se trate de un error tipográfico, y el valor debería ser "45" en lugar de "450", y podríamos simplemente insertar "45" en la fila 7:

Ejemplo

Establezca "Duración" = 45 en la fila 7:

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

Para conjuntos de datos pequeños, es posible que pueda reemplazar los datos incorrectos uno por uno, pero no para conjuntos de datos grandes.

Para reemplazar datos incorrectos por conjuntos de datos más grandes, puede crear algunas reglas, por ejemplo, establecer algunos límites para los valores legales y reemplazar cualquier valor que esté fuera de los límites.

Ejemplo

Recorra todos los valores en la columna "Duración".

Si el valor es superior a 120, configúrelo en 120:

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

Quitar filas

Otra forma de manejar datos incorrectos es eliminar las filas que contienen datos incorrectos.

De esta manera, no tiene que averiguar con qué reemplazarlos, y existe una buena posibilidad de que no los necesite para realizar sus análisis.

Ejemplo

Eliminar filas donde "Duración" es superior a 120:

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