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:
- 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:
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:
- 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
- Categórico : contiene valores que no se pueden comparar entre sí. Ejemplo: un color o un tipo de entrenamiento
- 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:
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:
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