How Has the Maternal Mortality Ratio Improved from 1990-2015?

Maternal Mortality Ratio 1990-2015

The project analyzes the maternal mortality ratio (MMR, out of every 100,000 live births) across countries from 1990-2015. The data for this project can be accessed on the UNICEF website here. A detailed description of how the data was compiled and measured can be found here.

This analysis clearly shows that the MMR has greatly improved over this span of time. In 1990, the average MMR was over 325. By 2015, the average MMR dropped to less than 175. Various plots were used to show this overall change over time. I conclude with a heatmap to visualize these changes at the country level.

# Setup environment
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# Read in data and review
mmr = pd.read_csv('mmr_1990-2015.csv')
mmr.head()
ISO3 codes Countries/Regions 1990 1995 2000 2005 2010 2015
0 AFG Afghanistan 1340 1270 1100 821 584 396
1 ALB Albania 71 53 43 30 30 29
2 DZA Algeria 216 192 170 148 147 140
3 AGO Angola 1160 1150 924 705 561 477
4 ARG Argentina 72 63 60 58 58 52
mmr.tail()
ISO3 codes Countries/Regions 1990 1995 2000 2005 2010 2015
178 VEN Venezuela 94 90 90 93 99 95
179 VNM Viet Nam 139 107 81 61 58 54
180 YEM Yemen 547 498 440 428 416 385
181 ZMB Zambia 577 596 541 372 262 224
182 ZWE Zimbabwe 440 449 590 629 446 443
mmr.shape
(183, 8)
mmr.dtypes
ISO3 codes           object
Countries/Regions    object
1990                  int64
1995                  int64
2000                  int64
2005                  int64
2010                  int64
2015                  int64
dtype: object
mmr.describe()
1990 1995 2000 2005 2010 2015
count 183.000000 183.000000 183.000000 183.000000 183.000000 183.000000
mean 339.622951 308.513661 270.846995 229.513661 194.338798 168.699454
std 451.100979 430.413051 379.013379 313.456797 265.671169 232.377611
min 5.000000 4.000000 4.000000 3.000000 3.000000 3.000000
25% 31.500000 26.500000 22.500000 18.500000 16.000000 14.000000
50% 107.000000 90.000000 77.000000 64.000000 59.000000 54.000000
75% 568.500000 503.500000 453.500000 374.000000 305.500000 229.000000
max 2630.000000 2900.000000 2650.000000 1990.000000 1630.000000 1360.000000
# Rename 'ISO3 codes' to 'Country Code'
# There are only countries, so rename 'Countries/Regions' to 'Country'
mmr.columns.values[0] = 'Country Code'
mmr.columns.values[1] = 'Country'
mmr.columns
Index(['Country Code', 'Country', '1990', '1995', '2000', '2005', '2010',
       '2015'],
      dtype='object')
# Unpivot the year columns so there is only one year column containing all years
mmr = pd.melt(mmr, id_vars=['Country Code', 'Country'], var_name='Year', value_name='MMR')
mmr.head()
Country Code Country Year MMR
0 AFG Afghanistan 1990 1340
1 ALB Albania 1990 71
2 DZA Algeria 1990 216
3 AGO Angola 1990 1160
4 ARG Argentina 1990 72
mmr.tail()
Country Code Country Year MMR
1093 VEN Venezuela 2015 95
1094 VNM Viet Nam 2015 54
1095 YEM Yemen 2015 385
1096 ZMB Zambia 2015 224
1097 ZWE Zimbabwe 2015 443
# Plot a 2x3 grid of histograms for each of the years represented
years = ['1990', '1995', '2000', '2005', '2010', '2015']

fig = plt.figure(figsize=(12,8))

hist_i = 1
for y in years:
  data = mmr[mmr['Year']==y]
  ax = fig.add_subplot(2,3,hist_i)
  ax.hist(data['MMR'], color='darkred', edgecolor='white')
  ax.set_title(y + ' MMR Distribution', fontweight='bold', loc='left')
  ax.spines['left'].set_visible(False)
  ax.spines['top'].set_visible(False)
  ax.spines['right'].set_visible(False)
  ax.spines['bottom'].set_visible(False)
  ax.tick_params(length=0)
  ax.set_xlim(0,3000,500)
  hist_i += 1
fig.savefig('mmr_histograms')

mmr_histograms

# Plot overall average MMR by year
ax = plt.subplot()
mmr_pivot = pd.pivot_table(mmr, values='MMR', index='Year', aggfunc='mean')
ax.plot(mmr_pivot, color='darkred')
ax.set_title('Average MMR (Out of 100,000 Live Births) by Year', fontweight='bold', loc='left', y=1.08)
ax.set_xlabel('Year')
ax.set_ylabel('MMR')
sns.despine()
ax.text(2005, 275, 'MMR improved\nover time.', size=12)
plt.savefig('mean_mmr_by_yr')

mean_mmr_by_yr

# Plot boxplots across years
sns.boxplot(mmr['Year'], mmr['MMR'], color='darkred', saturation=0.9, width= 0.5, fliersize=2)
sns.despine()
plt.title('MMR Distribution by Year', loc='left', fontweight='bold', y=1.08)
plt.savefig('mmr_dist_by_yr_boxplot')

mmr_dist_by_yr_boxplot

# Plot MMR by country using heatmap
mmr_pivot2 = mmr.pivot_table(values='MMR', index='Country', columns='Year')

grid_kws = {'width_ratios': (.9, .05)}
fig, (ax, cbar_ax) = plt.subplots(nrows=1, ncols=2, gridspec_kw=grid_kws, figsize=(8, 40))
sns.heatmap(mmr_pivot2, cmap='Reds', square=False, ax=ax, cbar_ax=cbar_ax)
ax.xaxis.set_label_position('top')
ax.xaxis.tick_top()
ax.set_title('Country Maternal Mortality Ratio (Out of 100,000 Live Births)\n1990-2015', 
             loc='left', fontweight='bold', fontsize=11, y=1.018)
fig.savefig('mmr_heatmap2')

mmr_heatmap2

Sierra Leone

Sierra Leone clearly has the worst maternal mortality ratio. Based on the data, it peaked in 1995 and has steadily been decreasing since then. However, it still looks like it’s in the 1,000-1,500 range in 2015. Let’s filter the data down to Sierra Leone in order to get a closer look.

# Filter data down to Sierra Leone
mmr_sl = mmr[mmr['Country']=='Sierra Leone']
mmr_sl
Country Code Country Year MMR
142 SLE Sierra Leone 1990 2630
325 SLE Sierra Leone 1995 2900
508 SLE Sierra Leone 2000 2650
691 SLE Sierra Leone 2005 1990
874 SLE Sierra Leone 2010 1630
1057 SLE Sierra Leone 2015 1360
# Plot MMR for Sierra Leone
plt.plot(mmr_sl['Year'], mmr_sl['MMR'], color='darkred')
sns.despine()
plt.title('Sierra Leone Maternal Mortality Ratio', loc='left', fontweight='bold', y=1.08)
plt.savefig('sierra_leone_mmr')
plt.show()

 

sierra_leone_mmr

Article

You can read more about Sierra Leone and MMR from this article, “Making strides to improve maternal health in Sierra Leone”.

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s