Ciencia de datos: preparación de datos


Antes de analizar los datos, un científico de datos debe extraer los datos y hacerlos limpios y valiosos.


Extraer y leer datos con Pandas

Antes de que los datos puedan analizarse, deben importarse/extraerse.

En el siguiente ejemplo, le mostramos cómo importar datos usando Pandas en Python.

Usamos la read_csv()función para importar un archivo CSV con los datos de salud:

Ejemplo

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

Ejemplo explicado

  • Importar la biblioteca de Pandas
  • Nombra el marco de datos como health_data.
  • header=0 significa que los encabezados de los nombres de las variables se encuentran en la primera fila (tenga en cuenta que 0 significa la primera fila en Python)
  • sep=","significa que "," se utiliza como separador entre los valores. Esto se debe a que estamos usando el tipo de archivo .csv (valores separados por comas)

Sugerencia: si tiene un archivo CSV grande, puede usar la head()función para mostrar solo las 5 filas principales:

Ejemplo

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

Limpieza de datos

Mira los datos importados. Como puede ver, los datos están "sucios" con valores incorrectos o no registrados:

datos sucios
  • Hay algunos campos en blanco
  • Pulso promedio de 9 000 no es posible
  • 9 000 se tratará como no numérico, debido al separador de espacios
  • Una observación del pulso máximo se denota como "AF", lo que no tiene sentido

Por lo tanto, debemos limpiar los datos para poder realizar el análisis.


Eliminar filas en blanco

Vemos que los valores no numéricos (9 000 y AF) están en las mismas filas con valores faltantes.

Solución: podemos eliminar las filas con observaciones faltantes para solucionar este problema.

Cuando cargamos un conjunto de datos usando Pandas, todas las celdas en blanco se convierten automáticamente en valores "NaN".

Entonces, eliminar las celdas NaN nos brinda un conjunto de datos limpio que se puede analizar.

Podemos usar la dropna()función para eliminar los NaN. axis=0 significa que queremos eliminar todas las filas que tienen un valor NaN:

Ejemplo

health_data.dropna(axis=0,inplace=True)

print(health_data)

El resultado es un conjunto de datos sin filas NaN:

datos limpios

Categorías de datos

Para analizar datos, también necesitamos saber los tipos de datos con los que estamos tratando.

Los datos se pueden dividir en tres categorías principales:

  1. Numérico : contiene valores numéricos. Se puede dividir en dos categorías:
    • Discreto: los números se cuentan como "enteros". Ejemplo: No puedes haber entrenado 2.5 sesiones, son 2 o 3
    • Continuo: los números pueden tener una precisión infinita. Por ejemplo, puedes dormir 7 horas, 30 minutos y 20 segundos, o 7.533 horas
  2. Categórico : contiene valores que no se pueden comparar entre sí. Ejemplo: un color o un tipo de entrenamiento
  3. Ordinal : contiene datos categóricos que se pueden comparar entre sí. Ejemplo: Calificaciones escolares donde A es mejor que B y así sucesivamente

Al conocer el tipo de sus datos, podrá saber qué técnica utilizar al analizarlos.


Tipos de datos

Podemos usar la info()función para enumerar los tipos de datos dentro de nuestro conjunto de datos: 

Ejemplo

print(health_data.info())

Resultado:

Tipo de datos flotante y objeto

Vemos que este conjunto de datos tiene dos tipos diferentes de datos:

  • flotar64
  • Objeto

No podemos usar objetos para calcular y realizar análisis aquí. Debemos convertir el objeto de tipo a float64 (float64 es un número con un decimal en Python).

Podemos usar la astype()función para convertir los datos en float64.

El siguiente ejemplo convierte "Average_Pulse" y "Max_Pulse" en el tipo de datos float64 (las otras variables ya son del tipo de datos float64):

Ejemplo

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

Resultado:

flotante de tipo de datos

Ahora, el conjunto de datos solo tiene tipos de datos float64.


Analizar los datos

Cuando hayamos limpiado el conjunto de datos, podemos comenzar a analizar los datos.

Podemos usar la describe()función en Python para resumir datos:

Ejemplo

print(health_data.describe())

Resultado:

  Duración Pulso_promedio Max_pulso Calorías_quemadas Horas_Trabajo Horas_Sueño
Contar 10.0 10.0 10.0 10.0 10.0 10.0
Significar 51.0 102.5 137.0 285.0 6.6 7.5
estándar 10.49 15.4 11.35 30.28 3.63 0.53
mínimo 30.0 80.0 120.0 240.0 0.0 7.0
25% 45,0 91.25 130.0 262.5 7.0 7.0
50% 52.5 102.5 140.0 285.0 8.0 7.5
75% 60.0 113.75 145.0 307.5 8.0 8.0
máx. 60.0 125.0 150.0 330.0 10.0 8.0
  • Count - Cuenta el número de observaciones
  • Media - El valor promedio
  • Std - Desviación estándar (explicado en el capítulo de estadísticas)
  • Min - El valor más bajo
  • 25% , 50% y 75% son percentiles (explicado en el capítulo de estadísticas)
  • Max - El valor más alto