Author: Eric Marsden email@example.com.
This notebook contains an introduction to use of Python and the NumPy library to analyze statistical data.
It concerns the work of medical doctor Ignaz Semmelweis in reducing the risk of puerperal fever during childbirth in Vienna and Budapest during the mid-19th century, by requiring doctors to wash their hands using chlorinated solutions to kill bacteria (note that this was before chemist and medical researcher Louis Pasteur developed his germ theory).
import numpy import pandas import scipy.stats import matplotlib.pyplot as plt import seaborn as sns %config InlineBackend.figure_formats=['svg'] numpy.set_printoptions(threshold=20) import warnings warnings.simplefilter(action='ignore', category=FutureWarning)
# Data comes from https://en.wikipedia.org/wiki/Historical_mortality_rates_of_puerperal_fever wien = pandas.read_csv("https://risk-engineering.org/static/data/wien-fever-mortality.csv", parse_dates=['Year']) wien.set_index('Year', inplace=True) wien.head()
wien["Mortality"] = 100 * wien.Deaths / wien.Births
plt.plot(wien.Mortality) plt.title("Mortality from puerperal fever during childbirth") plt.ylabel("Mortality rate (%)");
There was significant resistance to the implementation of techniques suggested by Semmelweis. Some doctors, for instance, were offended at the suggestion that they should wash their hands, feeling that their social status as gentlemen was inconsistent with the idea that their hands could be unclean (and with the “ridiculous” notion that as doctors, they could be responsible for the transmission of disease).
There are two important dates to analyze in this time series to validate Semmelweis' hypothesis on the origin of the infections:
In 1823, the clinic started lessons on pathological anatomy. Doctors would take classes on cadavers in the morgue, then might deliver a baby or examine a patient, possibly with pieces of contaminated flesh remaining on their hands.
In 1847, Semmelweis managed to convince doctors always to wash their hands with a chlorinated solution between autopsy work and work with patients.
We want to compare the death rate attributed to puerperal fever in the three periods delimited by these two dates, to determine whether the rate increased after the introduction of anatomy lessons and decreased after handwashing was implemented, as is suggested by the graph above.
period1 = wien.query('Year < 1823') period1.Mortality.mean()
period2 = wien.query('1823 < Year < 1847') period2.Mortality.mean()
period3 = wien.query('1847 < Year') period3.Mortality.mean()
wien.loc[:'1832', 'Period'] = 'Period 1' wien.loc['1833':'1847', 'Period'] = 'Period 2' wien.loc['1848':, 'Period'] = 'Period 3'
sns.violinplot(data=wien, x="Period", y="Mortality", ci=95);
This result is indeed quite convincing, in particular the marked reduction in infection rate during period 3, when doctors were following the risk reduction measure.