
Proyecto Florence Nightingale — Sesión 1: presentación y los datos reales de la guerra de Crimea
Este proyecto es distinto a todos los anteriores de la familia, y a propósito lo hemos hecho muy pequeño: solo dos sesiones. Hasta ahora siempre habéis entrenado un modelo que predice algo (un árbol, un Random Forest). Aquí no vamos a entrenar nada. Vamos a hacer lo que hizo la propia Florence Nightingale en 1858: mirar datos reales de mortalidad y encontrar la manera de dibujarlos para que cualquiera, sin saber estadística, entienda lo que dicen.
Quién fue Florence Nightingale
Antes de ser conocida como enfermera, Nightingale fue una pionera real de la estadística. A los nueve años ya catalogaba y dibujaba gráficos de las plantas de su jardín. De adulta convenció a sus padres para recibir formación matemática avanzada, y llegó a corresponder con el estadístico belga Adolphe Quetelet.
Durante la guerra de Crimea (1854-1856), Nightingale organizó la atención a los soldados heridos en el hospital militar de Scutari (cerca de Constantinopla). Lo que encontró allí la marcó: durante su primer invierno, murieron 4.077 soldados británicos, y diez veces más murieron por enfermedades como el tifus, el tifoideo o el cólera que por heridas de combate. Las causas: hacinamiento, alcantarillado defectuoso y falta de ventilación.
Nightingale recopiló los datos de mortalidad mes a mes, por causa de muerte, y los presentó con un diagrama circular propio —el “diagrama de la rosa” o coxcomb— para convencer al Parlamento británico y a la propia Reina Victoria de que la mayoría de esas muertes eran evitables. En 1859 fue elegida la primera mujer miembro de la Royal Statistical Society. Ese diagrama es, todavía hoy, uno de los ejemplos más citados de visualización de datos usada para cambiar una decisión política real.
Los datos: reales, pequeños, y sin descarga
A diferencia del resto de la familia, aquí no hace falta descargar nada de Kaggle. Los datos que vamos a usar son los mismos 24 meses (de abril de 1854 a marzo de 1856) que aparecen en el informe original de Nightingale de 1859, tal y como los recoge la librería stdlib (dominio público). Son solo 24 filas, así que los escribimos directamente en el cuaderno:
import pandas as pd
meses = [
"1854-04", "1854-05", "1854-06", "1854-07", "1854-08", "1854-09",
"1854-10", "1854-11", "1854-12", "1855-01", "1855-02", "1855-03",
"1855-04", "1855-05", "1855-06", "1855-07", "1855-08", "1855-09",
"1855-10", "1855-11", "1855-12", "1856-01", "1856-02", "1856-03",
]
ejercito = [
8571, 23333, 28333, 28722, 30246, 30290, 30643, 29736, 32779, 32393,
30919, 30107, 32252, 35473, 38863, 42647, 44614, 47751, 46852, 37853,
43217, 44212, 43485, 46140,
]
enfermedad = [
1, 12, 11, 359, 828, 788, 503, 844, 1725, 2761, 2120, 1205, 477, 508,
802, 382, 483, 189, 128, 178, 91, 42, 24, 15,
]
heridas = [
0, 0, 0, 0, 1, 81, 132, 287, 114, 83, 42, 32, 48, 49, 209, 134, 164,
276, 53, 33, 18, 2, 0, 0,
]
otras_causas = [
5, 9, 6, 23, 30, 70, 128, 106, 131, 324, 361, 172, 57, 37, 31, 33, 25,
20, 18, 32, 28, 48, 19, 35,
]
muertes = pd.DataFrame({
"mes": meses,
"ejercito": ejercito,
"enfermedad": enfermedad,
"heridas": heridas,
"otras_causas": otras_causas,
})
muertes.head()
Cada fila es un mes real. ejercito es el tamaño medio del ejército ese mes; enfermedad, heridas y otras_causas son el número real de soldados muertos por cada motivo. La columna mes no es un identificador cualquiera: aquí, a diferencia de Laennec, guardamos desde el principio la referencia temporal de cada fila, precisamente por la lección de trazabilidad que aprendimos en aquel proyecto.

Una primera comparación simple
Antes de dibujar nada elaborado, sumemos el total de muertes por cada causa en los 24 meses:
totales = muertes[["enfermedad", "heridas", "otras_causas"]].sum()
print(totales)
[COMPLETAR CON VUESTROS DATOS REALES: total de muertes por enfermedad, por heridas y por otras causas en los 24 meses]
import matplotlib.pyplot as plt
totales.plot(kind="bar", color=["indianred", "steelblue", "gray"])
plt.title("Muertes totales por causa (abril 1854 - marzo 1856)")
plt.ylabel("Número de soldados")
plt.xticks(rotation=0)
plt.show()
[COMPLETAR EN CLASE: ¿cuántas veces más soldados murieron por enfermedad que por heridas de combate, según vuestro propio gráfico?]

Próximo paso
Con los totales ya claros, en la última sesión vamos a ir más allá de un simple gráfico de barras: vamos a ver cómo cambia la mortalidad mes a mes, señalar el momento exacto en que todo cambió (marzo de 1855, cuando llegó la Comisión Sanitaria), y —de propina— reconstruir el propio diagrama de la rosa de Nightingale.



