Accidentalidad en Barranquilla
Nombre: Mariana Arboleda
Vamos a continuar explorando nuestros datos, ahora directamente en Python, sin utilizar interfaces gráficas
Siempre importamos los paquetes que vamos a utilizar. En este caso utilizamos Pandas para el manejo de los datos y Plotly para graficar (existen muchas más librerías, pero esta es mi favorita)
Luego leemos los datos y exploramos sus características básicas
Revisamos las primeras n filas para tener una idea de cómo se ven los datos. Deepnote es bastante robusto y nos permite visualizar n grandes.
0
01/01/2015 12:00:00 AM
2,015
1
01/01/2015 12:00:00 AM
2,015
2
01/01/2015 12:00:00 AM
2,015
3
01/01/2015 12:00:00 AM
2,015
4
01/01/2015 12:00:00 AM
2,015
5
01/01/2015 12:00:00 AM
2,015
6
01/01/2015 12:00:00 AM
2,015
6246
01/01/2016 12:00:00 AM
2,016
6245
01/01/2016 12:00:00 AM
2,016
6244
01/01/2016 12:00:00 AM
2,016
Miramos el tamaño de nuestra base de datos para conocer cuántas filas y columnas tiene
El resultado anterior significa que nuestros datos tienen 42178 filas y 11 columnas y lo podemos imprimir así:
El set de datos tiene 42178 filas y 11 columnas
Por último revisamos qué tan completos están los datos.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 42178 entries, 0 to 42177
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 FECHA_ACCIDENTE 42178 non-null object
1 AÑO_ACCIDENTE 42178 non-null object
2 MES_ACCIDENTE 42178 non-null object
3 DIA_ACCIDENTE 42178 non-null object
4 HORA_ACCIDENTE 42178 non-null object
5 GRAVEDAD_ACCIDENTE 42178 non-null object
6 CLASE_ACCIDENTE 42178 non-null object
7 SITIO_EXACTO_ACCIDENTE 42177 non-null object
8 CANT_HERIDOS_EN _SITIO_ACCIDENTE 9756 non-null float64
9 CANT_MUERTOS_EN _SITIO_ACCIDENTE 295 non-null float64
10 CANTIDAD_ACCIDENTES 42178 non-null int64
dtypes: float64(2), int64(1), object(8)
memory usage: 3.5+ MB
Hay muchos datos nulos en las variables CANT_MUERTOS_... y en CANT_HERIDOS_EN... veamos de qué se trata.
Preprocesamiento
A este paso de "dejar los datos listos" lo llamamos preprocesamiento de datos (data wrangling en los tutoriales de internet). Empecemos por entender qué son los datos nulos y cómo los podemos "rellenar"
1
01/01/2015 12:00:00 AM
2,015
4
01/01/2015 12:00:00 AM
2,015
5
01/01/2015 12:00:00 AM
2,015
6
01/01/2015 12:00:00 AM
2,015
7
01/02/2015 12:00:00 AM
2,015
8
01/02/2015 12:00:00 AM
2,015
9
01/02/2015 12:00:00 AM
2,015
10
01/02/2015 12:00:00 AM
2,015
11
01/02/2015 12:00:00 AM
2,015
12
01/02/2015 12:00:00 AM
2,015
¿Qué significan los datos nulos? (responde en wooclap)
"Rellenemos" los datos nulos con un valor más significativo
0
01/01/2015 12:00:00 AM
2,015
1
01/01/2015 12:00:00 AM
2,015
2
01/01/2015 12:00:00 AM
2,015
3
01/01/2015 12:00:00 AM
2,015
4
01/01/2015 12:00:00 AM
2,015
5
01/01/2015 12:00:00 AM
2,015
6
01/01/2015 12:00:00 AM
2,015
7
01/02/2015 12:00:00 AM
2,015
8
01/02/2015 12:00:00 AM
2,015
9
01/02/2015 12:00:00 AM
2,015
Ya sabemos qué datos tenemos. Ahora, a pensar como detectives
¿Qué nos podemos preguntar? (Responde en wooclap)
¿Qué día suelen suceder más accidentes?
Variable de interés: Cantidad TOTAL de accidentes
Respecto a: los días de la semana
Método de agrupación: suma
El código de abajo crea una tabla dinámica de los datos. En index va la variable que quiero en el eje X, en values va la variable que quiero en el eje Y
0
Dom
4028
1
Jue
6235
2
Lun
6077
3
Mar
6714
4
Mié
6348
5
Sáb
6131
6
Vie
6654
Pero no tiene sentido ordenar alfabéticamente los días. agregamos el argumento category_orders
¿Cómo ha cambiado la cantidad de accidentes según la gravedad, en los últimos años?
Variable de interés: Cantidad de accidentes
Respecto a: Año y gravedad
Agrupación: suma
0
2,015
Con heridos
1
2,015
Con muertos
2
2,015
Solo daños
3
2,016
Con heridos
4
2,016
Con muertos
5
2,016
Solo daños
6
2,017
Con heridos
7
2,017
Con muertos
8
2,017
Solo daños
9
2,018
Con heridos
Tu pregunta aquí:
Esto es un proceso cíclico: ¿Necesitamos preparar más nuestros datos?¿Qué otras variables se nos ocurren?
30
01/03/2015 12:00:00 AM
2,015
31
01/04/2015 12:00:00 AM
2,015
32
01/04/2015 12:00:00 AM
2,015
33
01/04/2015 12:00:00 AM
2,015
34
01/04/2015 12:00:00 AM
2,015
35
01/04/2015 12:00:00 AM
2,015
36
01/04/2015 12:00:00 AM
2,015
37
01/04/2015 12:00:00 AM
2,015
38
01/05/2015 12:00:00 AM
2,015
39
01/05/2015 12:00:00 AM
2,015