UNDERSTANDING SUICIDE RATES

DATA MINING PROJECT BY RUTH AKOR

Introduction

With the high rate of suicide and depression all over the world, more individuals and organisations are chanelling more efforts into mental health issues, in a bid to understand the reason for suicide and depression and reduce it.

The aim of this project is to analyse the trend in suicide rates globally and see what countries, age groups and gender have highest suicide rates. This will help WHO and other health agencies in tackling the painful issue of suicide

Data Source - Gapminder.org

Time Frame - 1950 - 2016

The dataset is a zipped file of several CSV and excel files containing suicide rates disaggregated by age, gender and countries

In [1]:
import math
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
% matplotlib inline
import plotly
import numpy as np
import plotly.graph_objs as go
import chart_studio.plotly as py
py.sign_in('ruthakor', '1HgVOfW0VLt2QnLKh0Al')
print(plotly.__version__)
4.2.0
In [2]:
# import the data
totalsuicide = pd.read_excel("suicide_total_deaths.xlsx")
totalsuicide.columns
Out[2]:
Index(['country',      1990,      1991,      1992,      1993,      1994,
            1995,      1996,      1997,      1998,      1999,      2000,
            2001,      2002,      2003,      2004,      2005,      2006,
            2007,      2008,      2009,      2010,      2011,      2012,
            2013,      2014,      2015,      2016],
      dtype='object')

LATEST NUMBER OF DEATHS GLOBALLY BY SUICIDE (2016)

In [3]:
totalsuicide.columns = ['country', 'yr1990', 'yr1991', 'yr1992', 'yr1993', 'yr1994', 'yr1995', 'yr1996', 'yr1997', 'yr1998', 
                        'yr1999', 'yr2000','yr2001', 'yr2002', 'yr2003', 'yr2004', 'yr2005', 'yr2006', 'yr2007', 'yr2008', 
                        'yr2009', 'yr2010', 'yr2011','yr2012', 'yr2013', 'yr2014', 'yr2015', 'yr2016']
totalsuicide.head()
Out[3]:
country yr1990 yr1991 yr1992 yr1993 yr1994 yr1995 yr1996 yr1997 yr1998 ... yr2007 yr2008 yr2009 yr2010 yr2011 yr2012 yr2013 yr2014 yr2015 yr2016
0 Afghanistan 703.00 754.00 820.00 894.00 977.00 1050.00 1100.00 1130.00 1170.00 ... 1680.00 1710.00 1750.00 1760.00 1810.00 1870.00 1990.00 2080.00 2170.00 2250.00
1 Albania 127.00 130.00 131.00 135.00 136.00 142.00 150.00 162.00 170.00 ... 204.00 205.00 201.00 195.00 191.00 188.00 186.00 184.00 183.00 181.00
2 Algeria 806.00 822.00 843.00 866.00 888.00 912.00 941.00 983.00 1020.00 ... 1240.00 1250.00 1270.00 1290.00 1310.00 1340.00 1370.00 1410.00 1420.00 1440.00
3 Andorra 5.45 5.82 6.18 6.33 6.36 6.17 6.04 6.28 6.24 ... 7.39 7.53 7.67 7.76 7.85 7.92 7.97 7.72 7.78 7.84
4 Angola 645.00 653.00 667.00 700.00 735.00 756.00 738.00 738.00 816.00 ... 1040.00 1060.00 1080.00 1100.00 1120.00 1140.00 1170.00 1200.00 1220.00 1230.00

5 rows × 28 columns

In [4]:
# Mapping deaths from suicide globally in 2016

#set scale and color ranges
scale = [[0.0, 'rgb(88, 158, 92)'], [0.2, 'rgb(223,221,228)'],
         [0.4, 'rgb(169,170,201)'], [0.6, 'rgb(139,135,181)'],
         [0.8, 'rgb(158, 88, 142)'],   [1.0, 'rgb(255,0,0)']]

#dataset to be graphed
data = [dict(type='choropleth', 
             colorscale=scale, 
             locations=totalsuicide['country'],
             z=totalsuicide['yr2016'].astype(float),
             locationmode='country names',
             text=totalsuicide['country'],
             hoverinfo='location+z',
             marker=dict(line=dict(color='rgb(255,255,255)', width=2)),
             colorbar=dict(title='Global suicide deaths in 2016'))]

#layout
layout = dict(title='Global suicide deaths in 2016 <br />(Hover for each country)',
              geo=dict(scope='world', 
                       projection=dict(type='equirectangular'),
                       showlakes=True,
                       lakecolor='rgb(95,145,237)'))

fig = dict(data=data, layout=layout)
py.iplot(fig, filename='DATS 6103 - Individual Project 3 - Ruth Akor')
Out[4]:

From the map above, india records the highest death from suicide in 2016

GLOBAL TREND IN TOTAL SUICIDE DEATHS FROM 1990 TO 2016

In this section, I would love to see if suicide has been increasing or decreasing

In [5]:
totalsuicide.set_index("country",drop=True,inplace=True)
totalsuicide
Out[5]:
yr1990 yr1991 yr1992 yr1993 yr1994 yr1995 yr1996 yr1997 yr1998 yr1999 ... yr2007 yr2008 yr2009 yr2010 yr2011 yr2012 yr2013 yr2014 yr2015 yr2016
country
Afghanistan 703.00 754.00 820.00 894.00 977.00 1050.00 1100.00 1130.00 1170.00 1200.00 ... 1680.00 1710.00 1750.00 1760.00 1810.00 1870.00 1990.00 2080.00 2170.00 2250.00
Albania 127.00 130.00 131.00 135.00 136.00 142.00 150.00 162.00 170.00 175.00 ... 204.00 205.00 201.00 195.00 191.00 188.00 186.00 184.00 183.00 181.00
Algeria 806.00 822.00 843.00 866.00 888.00 912.00 941.00 983.00 1020.00 1060.00 ... 1240.00 1250.00 1270.00 1290.00 1310.00 1340.00 1370.00 1410.00 1420.00 1440.00
Andorra 5.45 5.82 6.18 6.33 6.36 6.17 6.04 6.28 6.24 6.20 ... 7.39 7.53 7.67 7.76 7.85 7.92 7.97 7.72 7.78 7.84
Angola 645.00 653.00 667.00 700.00 735.00 756.00 738.00 738.00 816.00 809.00 ... 1040.00 1060.00 1080.00 1100.00 1120.00 1140.00 1170.00 1200.00 1220.00 1230.00
Antigua and Barbuda 1.27 1.30 1.32 1.34 1.36 1.41 1.44 1.49 1.61 1.64 ... 1.93 1.98 2.02 2.07 2.12 2.04 2.03 2.10 2.11 2.13
Argentina 3300.00 3420.00 3580.00 3720.00 3890.00 4020.00 4160.00 4290.00 4360.00 4440.00 ... 4560.00 4610.00 4640.00 4650.00 4700.00 4800.00 4920.00 5010.00 5010.00 5010.00
Armenia 134.00 136.00 146.00 155.00 158.00 160.00 158.00 149.00 143.00 142.00 ... 206.00 219.00 225.00 232.00 241.00 257.00 255.00 254.00 257.00 252.00
Australia 2360.00 2380.00 2390.00 2380.00 2440.00 2500.00 2550.00 2630.00 2650.00 2610.00 ... 2510.00 2560.00 2600.00 2630.00 2650.00 2690.00 2700.00 2770.00 2790.00 2830.00
Austria 1960.00 1940.00 1920.00 1900.00 1880.00 1850.00 1810.00 1750.00 1710.00 1680.00 ... 1480.00 1470.00 1470.00 1470.00 1470.00 1460.00 1450.00 1440.00 1450.00 1470.00
Azerbaijan 206.00 209.00 224.00 218.00 218.00 198.00 193.00 191.00 190.00 200.00 ... 412.00 409.00 398.00 400.00 399.00 409.00 412.00 416.00 424.00 423.00
Bahamas 6.64 6.88 7.05 7.09 7.34 7.65 7.20 7.57 8.06 7.42 ... 10.00 10.70 11.10 11.30 11.90 12.20 12.40 12.50 12.70 13.00
Bahrain 34.60 36.90 39.30 41.50 44.40 46.50 47.60 48.00 48.90 53.00 ... 85.30 87.90 89.30 89.30 88.30 90.70 89.60 91.00 93.50 96.00
Bangladesh 12500.00 12600.00 13200.00 13700.00 13800.00 14300.00 14100.00 13600.00 13400.00 13100.00 ... 12100.00 12000.00 12000.00 12200.00 11900.00 12000.00 11800.00 11700.00 11600.00 11600.00
Barbados 11.60 12.40 12.70 12.90 12.70 13.20 13.20 13.20 13.20 13.30 ... 14.40 14.70 14.90 15.10 15.10 15.20 15.10 15.20 15.30 15.40
Belarus 2470.00 2630.00 2880.00 3220.00 3440.00 3660.00 3770.00 3970.00 4120.00 4190.00 ... 3640.00 3590.00 3550.00 3450.00 3360.00 3010.00 2790.00 2620.00 2640.00 2660.00
Belgium 2250.00 2260.00 2300.00 2360.00 2380.00 2390.00 2380.00 2400.00 2380.00 2360.00 ... 2260.00 2290.00 2310.00 2310.00 2330.00 2310.00 2270.00 2230.00 2230.00 2250.00
Belize 7.19 7.68 8.06 8.41 8.95 9.95 10.40 11.40 13.10 14.60 ... 18.80 19.80 20.30 20.80 21.90 22.10 22.60 23.40 24.10 24.80
Benin 299.00 319.00 335.00 350.00 375.00 401.00 427.00 441.00 452.00 473.00 ... 625.00 648.00 672.00 698.00 717.00 745.00 769.00 794.00 822.00 847.00
Bhutan 36.00 35.40 34.40 34.50 33.60 32.80 31.70 32.50 33.10 33.00 ... 43.90 44.70 43.90 44.80 45.70 46.60 47.70 48.60 49.40 50.30
Bolivia 446.00 458.00 473.00 490.00 504.00 523.00 532.00 545.00 557.00 564.00 ... 605.00 616.00 628.00 641.00 649.00 658.00 667.00 676.00 689.00 700.00
Bosnia and Herzegovina 558.00 553.00 547.00 539.00 528.00 515.00 494.00 471.00 453.00 435.00 ... 315.00 308.00 304.00 300.00 291.00 314.00 333.00 356.00 352.00 352.00
Botswana 148.00 155.00 165.00 176.00 191.00 210.00 228.00 248.00 268.00 285.00 ... 315.00 319.00 319.00 320.00 321.00 326.00 330.00 332.00 339.00 346.00
Brazil 8920.00 9090.00 9280.00 9420.00 9630.00 9780.00 9870.00 10100.00 10300.00 10400.00 ... 12100.00 12300.00 12500.00 12700.00 12900.00 13200.00 13300.00 13500.00 13700.00 13900.00
Brunei 10.30 10.70 11.00 11.20 11.50 11.40 11.60 11.70 12.20 12.30 ... 16.30 16.70 16.60 16.90 17.30 18.00 18.90 19.60 20.20 20.60
Bulgaria 1600.00 1630.00 1690.00 1710.00 1760.00 1770.00 1780.00 1780.00 1740.00 1650.00 ... 1230.00 1200.00 1160.00 1120.00 1080.00 1060.00 1040.00 1060.00 1070.00 1080.00
Burkina Faso 594.00 593.00 604.00 617.00 627.00 639.00 647.00 666.00 688.00 696.00 ... 821.00 841.00 865.00 906.00 921.00 992.00 1040.00 1080.00 1120.00 1170.00
Burundi 597.00 611.00 625.00 641.00 663.00 681.00 686.00 674.00 661.00 642.00 ... 696.00 701.00 695.00 713.00 734.00 751.00 767.00 774.00 795.00 821.00
Cambodia 474.00 486.00 502.00 522.00 545.00 572.00 585.00 603.00 627.00 648.00 ... 779.00 791.00 809.00 825.00 840.00 855.00 869.00 888.00 907.00 923.00
Cameroon 796.00 842.00 894.00 941.00 989.00 1040.00 1100.00 1180.00 1250.00 1300.00 ... 1680.00 1730.00 1760.00 1820.00 1880.00 1930.00 1990.00 2060.00 2130.00 2180.00
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
St. Vincent and the Grenadines 5.15 5.32 5.52 5.72 5.93 6.15 6.04 6.21 6.75 7.01 ... 7.73 7.83 7.95 8.14 8.36 8.51 8.47 8.52 8.29 8.49
Sudan 726.00 770.00 815.00 862.00 909.00 953.00 987.00 1010.00 1030.00 1070.00 ... 1350.00 1390.00 1430.00 1450.00 1490.00 1550.00 1600.00 1650.00 1700.00 1750.00
Suriname 65.60 69.00 72.40 75.40 76.80 77.10 78.10 80.10 82.00 86.10 ... 117.00 123.00 125.00 129.00 131.00 132.00 134.00 135.00 134.00 131.00
Swaziland 78.30 81.80 82.60 81.70 85.60 91.80 102.00 105.00 115.00 123.00 ... 172.00 175.00 178.00 180.00 180.00 182.00 184.00 184.00 184.00 185.00
Sweden 1840.00 1830.00 1770.00 1740.00 1700.00 1660.00 1590.00 1520.00 1490.00 1460.00 ... 1390.00 1400.00 1400.00 1380.00 1380.00 1390.00 1400.00 1400.00 1420.00 1430.00
Switzerland 1860.00 1900.00 1880.00 1850.00 1830.00 1730.00 1680.00 1630.00 1610.00 1570.00 ... 1430.00 1400.00 1360.00 1320.00 1300.00 1290.00 1290.00 1260.00 1280.00 1310.00
Syria 226.00 234.00 241.00 252.00 263.00 275.00 285.00 295.00 305.00 316.00 ... 365.00 381.00 395.00 413.00 412.00 402.00 388.00 375.00 368.00 377.00
Tajikistan 274.00 277.00 285.00 286.00 287.00 284.00 283.00 281.00 277.00 278.00 ... 336.00 346.00 350.00 348.00 342.00 354.00 364.00 378.00 388.00 396.00
Tanzania 1480.00 1530.00 1590.00 1650.00 1740.00 1780.00 1830.00 1870.00 1930.00 1980.00 ... 2230.00 2310.00 2390.00 2490.00 2580.00 2700.00 2820.00 2910.00 3020.00 3120.00
Thailand 7410.00 7800.00 8290.00 9010.00 9670.00 10200.00 10500.00 10400.00 10500.00 10600.00 ... 8530.00 8520.00 8450.00 8380.00 8370.00 8370.00 8320.00 8320.00 8380.00 8410.00
Timor-Leste 72.10 73.90 75.00 75.50 75.40 74.60 70.10 65.30 61.90 58.10 ... 57.90 57.90 58.60 59.30 59.60 60.00 60.80 62.70 65.30 67.30
Togo 237.00 247.00 257.00 271.00 287.00 300.00 315.00 343.00 365.00 366.00 ... 482.00 510.00 522.00 540.00 554.00 567.00 587.00 603.00 621.00 645.00
Tonga 6.14 6.38 6.41 6.40 6.40 6.39 6.47 6.48 6.38 6.70 ... 6.82 6.80 6.84 6.98 7.03 7.08 7.15 7.22 7.31 7.42
Trinidad and Tobago 155.00 158.00 162.00 166.00 167.00 175.00 172.00 175.00 177.00 172.00 ... 174.00 178.00 177.00 176.00 177.00 177.00 176.00 176.00 176.00 177.00
Tunisia 242.00 252.00 262.00 273.00 283.00 292.00 300.00 309.00 316.00 328.00 ... 402.00 406.00 411.00 417.00 421.00 425.00 428.00 431.00 434.00 436.00
Turkey 2080.00 2230.00 2310.00 2420.00 2510.00 2570.00 2560.00 2600.00 2550.00 2710.00 ... 2280.00 2170.00 2290.00 2220.00 2230.00 2250.00 2380.00 2530.00 2670.00 2750.00
Turkmenistan 296.00 302.00 310.00 314.00 330.00 347.00 365.00 399.00 438.00 476.00 ... 543.00 521.00 498.00 484.00 471.00 461.00 452.00 449.00 460.00 467.00
Uganda 1760.00 1900.00 1970.00 2060.00 2160.00 2240.00 2340.00 2380.00 2500.00 2590.00 ... 3010.00 3020.00 3060.00 3070.00 3110.00 3150.00 3230.00 3250.00 3270.00 3320.00
Ukraine 12500.00 13400.00 14600.00 15700.00 17100.00 19000.00 19000.00 18400.00 17500.00 17800.00 ... 15200.00 14700.00 12700.00 11800.00 11200.00 11300.00 11300.00 10900.00 11000.00 11200.00
United Arab Emirates 70.80 77.60 84.20 91.70 99.20 111.00 117.00 125.00 129.00 136.00 ... 347.00 312.00 358.00 399.00 423.00 436.00 443.00 445.00 446.00 445.00
United Kingdom 6320.00 6280.00 6240.00 6180.00 6110.00 6080.00 6030.00 5970.00 5970.00 5930.00 ... 5520.00 5590.00 5590.00 5600.00 5620.00 5620.00 5680.00 5740.00 5790.00 5800.00
United States 34600.00 34700.00 34900.00 35300.00 35500.00 35600.00 35400.00 35300.00 35300.00 35200.00 ... 40400.00 41000.00 41600.00 42300.00 43100.00 43900.00 44700.00 45600.00 46300.00 46600.00
Uruguay 387.00 421.00 426.00 439.00 450.00 472.00 486.00 517.00 549.00 560.00 ... 615.00 611.00 617.00 629.00 636.00 647.00 645.00 648.00 645.00 642.00
Uzbekistan 1610.00 1660.00 1730.00 1830.00 1940.00 2100.00 2260.00 2380.00 2420.00 2550.00 ... 3010.00 3050.00 3090.00 3110.00 3220.00 3300.00 3360.00 3430.00 3290.00 3290.00
Vanuatu 21.80 22.90 24.10 25.00 25.80 26.50 26.90 27.40 28.00 28.50 ... 34.50 35.20 35.90 36.50 37.10 37.80 38.60 39.50 40.30 41.10
Venezuela 1160.00 1250.00 1350.00 1450.00 1570.00 1660.00 1730.00 1790.00 1940.00 2010.00 ... 2560.00 2640.00 2680.00 2610.00 2660.00 2780.00 2760.00 2840.00 2920.00 2970.00
Vietnam 6180.00 6320.00 6470.00 6630.00 6780.00 6910.00 7000.00 7080.00 7170.00 7250.00 ... 7360.00 7340.00 7390.00 7430.00 7480.00 7530.00 7590.00 7640.00 7680.00 7740.00
Yemen 464.00 493.00 524.00 559.00 595.00 628.00 648.00 668.00 691.00 723.00 ... 997.00 1030.00 1070.00 1110.00 1160.00 1210.00 1260.00 1320.00 1390.00 1450.00
Zambia 416.00 464.00 507.00 554.00 608.00 670.00 720.00 762.00 806.00 841.00 ... 1100.00 1120.00 1140.00 1170.00 1210.00 1240.00 1270.00 1300.00 1340.00 1380.00
Zimbabwe 728.00 670.00 689.00 727.00 796.00 934.00 972.00 1070.00 1220.00 1360.00 ... 1940.00 1980.00 1990.00 2000.00 2000.00 2010.00 2030.00 2080.00 2130.00 2200.00

187 rows × 27 columns

In [6]:
ax = totalsuicide.sum().plot(legend=True, figsize=(16,10), title='Trend in Global suicide deaths from 1990 to 2016')
ax.set_xlabel("Year")
ax.set_ylabel('suicide deaths')
plt.show()

Deaths from suicide have been declining since 2005 but started increasing again at 2013 but is not as high as it was in the 90's'

HIGHEST SUICIDE DEATHS BY COUNTRY IN 2016

In [7]:
#trying to convert from object to float
totalsuicide["yr2016"] = pd.to_numeric(totalsuicide.yr2016, errors='coerce')
In [8]:
def PiePlot(Year):
    df = totalsuicide[Year]
    result = df.sort_values(ascending=False)
    result = result.reset_index()
    result.index = result.index + 1
    others = result[10:].sum()[1]
    top = result[:10]
    top.loc[11] = ['All Other Countries', others]
    
    countryPlot = top[Year].plot.pie(subplots=True,
                                     autopct='%0.1f',
                                     fontsize=10,
                                     figsize=(10,10),
                                     legend=False,
                                     labels=top['country'],
                                     shadow=False,
                                     explode=(0.15,0.12,0,0,0,0,0,0,0,0,0),
                                     startangle=90)
    countryPlot[0].set_ylabel('')
In [9]:
PiePlot('yr2016')
plt.show()
C:\Anaconda3\lib\site-packages\ipykernel_launcher.py:8: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

From the map and pieplot, it appears India has the highest number of suicide deaths, however India and China have very high populations so it may be helpful to consider the suicide rates relative to total population

NOW LOOKING AT SUICIDE DEATHS RELATIVE TO TOTAL POPULATION

HIGHEST SUICIDE RATES IN 2016 (RELATIVE TO TOTAL POPULATION)

In [10]:
suiciderate = pd.read_excel("suicidemortalityrate.xlsx")
suiciderate
Out[10]:
country 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
0 Afghanistan 5.7 NaN NaN NaN NaN 6.3 NaN NaN NaN NaN 5.1 NaN NaN NaN NaN 4.8 4.7
1 Albania 5.5 NaN NaN NaN NaN 6.7 NaN NaN NaN NaN 7.8 NaN NaN NaN NaN 6.0 6.3
2 Algeria 4.1 NaN NaN NaN NaN 3.8 NaN NaN NaN NaN 3.3 NaN NaN NaN NaN 3.2 3.2
3 Angola 7.9 NaN NaN NaN NaN 7.2 NaN NaN NaN NaN 5.7 NaN NaN NaN NaN 5.0 4.7
4 Antigua and Barbuda 2.0 NaN NaN NaN NaN 1.2 NaN NaN NaN NaN 0.3 NaN NaN NaN NaN 0.8 0.5
5 Argentina 9.5 NaN NaN NaN NaN 9.0 NaN NaN NaN NaN 8.7 NaN NaN NaN NaN 8.8 9.2
6 Armenia 3.3 NaN NaN NaN NaN 4.4 NaN NaN NaN NaN 6.0 NaN NaN NaN NaN 7.0 6.6
7 Australia 13.2 NaN NaN NaN NaN 12.3 NaN NaN NaN NaN 12.5 NaN NaN NaN NaN 13.8 13.2
8 Austria 20.0 NaN NaN NaN NaN 17.3 NaN NaN NaN NaN 16.0 NaN NaN NaN NaN 16.0 15.6
9 Azerbaijan 2.2 NaN NaN NaN NaN 3.2 NaN NaN NaN NaN 3.1 NaN NaN NaN NaN 2.7 2.6
10 Bahamas 2.0 NaN NaN NaN NaN 2.2 NaN NaN NaN NaN 2.0 NaN NaN NaN NaN 1.8 1.7
11 Bahrain 6.7 NaN NaN NaN NaN 7.0 NaN NaN NaN NaN 5.2 NaN NaN NaN NaN 5.9 5.9
12 Bangladesh 6.7 NaN NaN NaN NaN 6.3 NaN NaN NaN NaN 6.4 NaN NaN NaN NaN 6.1 5.9
13 Barbados 2.1 NaN NaN NaN NaN 3.7 NaN NaN NaN NaN 2.1 NaN NaN NaN NaN 0.7 0.8
14 Belarus 43.1 NaN NaN NaN NaN 45.1 NaN NaN NaN NaN 38.2 NaN NaN NaN NaN 26.3 26.2
15 Belgium 22.7 NaN NaN NaN NaN 21.2 NaN NaN NaN NaN 21.3 NaN NaN NaN NaN 20.1 20.7
16 Belize 5.5 NaN NaN NaN NaN 4.9 NaN NaN NaN NaN 4.9 NaN NaN NaN NaN 4.8 4.7
17 Benin 9.5 NaN NaN NaN NaN 9.7 NaN NaN NaN NaN 9.6 NaN NaN NaN NaN 9.9 9.9
18 Bhutan 12.4 NaN NaN NaN NaN 12.2 NaN NaN NaN NaN 11.1 NaN NaN NaN NaN 11.6 11.4
19 Bolivia 16.4 NaN NaN NaN NaN 15.3 NaN NaN NaN NaN 14.1 NaN NaN NaN NaN 12.4 12.2
20 Bosnia and Herzegovina 10.7 NaN NaN NaN NaN 9.3 NaN NaN NaN NaN 8.0 NaN NaN NaN NaN 8.9 8.8
21 Botswana 11.8 NaN NaN NaN NaN 12.6 NaN NaN NaN NaN 11.1 NaN NaN NaN NaN 9.7 9.3
22 Brazil 4.8 NaN NaN NaN NaN 5.5 NaN NaN NaN NaN 5.7 NaN NaN NaN NaN 6.5 6.5
23 Brunei 2.8 NaN NaN NaN NaN 3.3 NaN NaN NaN NaN 3.7 NaN NaN NaN NaN 4.5 4.6
24 Bulgaria 18.5 NaN NaN NaN NaN 13.4 NaN NaN NaN NaN 12.5 NaN NaN NaN NaN 11.4 11.5
25 Burkina Faso 8.2 NaN NaN NaN NaN 7.6 NaN NaN NaN NaN 7.5 NaN NaN NaN NaN 7.7 7.7
26 Burundi 7.1 NaN NaN NaN NaN 8.4 NaN NaN NaN NaN 9.0 NaN NaN NaN NaN 8.9 9.1
27 Cambodia 5.6 NaN NaN NaN NaN 5.9 NaN NaN NaN NaN 5.4 NaN NaN NaN NaN 5.3 5.3
28 Cameroon 13.3 NaN NaN NaN NaN 11.9 NaN NaN NaN NaN 11.7 NaN NaN NaN NaN 12.3 12.2
29 Canada 13.0 NaN NaN NaN NaN 13.2 NaN NaN NaN NaN 13.0 NaN NaN NaN NaN 12.5 12.5
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
151 St. Lucia 6.4 NaN NaN NaN NaN 3.0 NaN NaN NaN NaN 6.1 NaN NaN NaN NaN 7.8 7.8
152 St. Vincent and the Grenadines 6.3 NaN NaN NaN NaN 9.9 NaN NaN NaN NaN 3.3 NaN NaN NaN NaN 2.7 2.4
153 Sudan 7.9 NaN NaN NaN NaN 8.4 NaN NaN NaN NaN 8.0 NaN NaN NaN NaN 8.0 8.1
154 Suriname 23.5 NaN NaN NaN NaN 26.5 NaN NaN NaN NaN 27.0 NaN NaN NaN NaN 23.8 22.8
155 Sweden 15.6 NaN NaN NaN NaN 16.4 NaN NaN NaN NaN 15.3 NaN NaN NaN NaN 15.7 14.8
156 Switzerland 21.8 NaN NaN NaN NaN 20.8 NaN NaN NaN NaN 16.2 NaN NaN NaN NaN 17.1 17.2
157 Syria 1.3 NaN NaN NaN NaN 1.6 NaN NaN NaN NaN 1.9 NaN NaN NaN NaN 1.9 1.9
158 Tajikistan 3.0 NaN NaN NaN NaN 2.9 NaN NaN NaN NaN 2.5 NaN NaN NaN NaN 2.5 2.5
159 Tanzania 6.9 NaN NaN NaN NaN 5.5 NaN NaN NaN NaN 5.3 NaN NaN NaN NaN 5.4 5.4
160 Thailand 16.2 NaN NaN NaN NaN 12.7 NaN NaN NaN NaN 14.3 NaN NaN NaN NaN 14.6 14.4
161 Timor-Leste 9.3 NaN NaN NaN NaN 6.2 NaN NaN NaN NaN 5.3 NaN NaN NaN NaN 4.6 4.6
162 Togo 9.6 NaN NaN NaN NaN 9.9 NaN NaN NaN NaN 9.5 NaN NaN NaN NaN 9.4 9.6
163 Tonga 3.6 NaN NaN NaN NaN 3.4 NaN NaN NaN NaN 3.6 NaN NaN NaN NaN 3.5 3.5
164 Trinidad and Tobago 14.9 NaN NaN NaN NaN 12.3 NaN NaN NaN NaN 14.5 NaN NaN NaN NaN 13.6 13.6
165 Tunisia 3.5 NaN NaN NaN NaN 3.6 NaN NaN NaN NaN 3.6 NaN NaN NaN NaN 3.4 3.4
166 Turkey 7.2 NaN NaN NaN NaN 7.6 NaN NaN NaN NaN 8.4 NaN NaN NaN NaN 7.3 7.3
167 Turkmenistan 9.1 NaN NaN NaN NaN 11.7 NaN NaN NaN NaN 7.6 NaN NaN NaN NaN 7.2 6.7
168 Uganda 11.1 NaN NaN NaN NaN 10.5 NaN NaN NaN NaN 10.5 NaN NaN NaN NaN 9.9 9.9
169 Ukraine 36.9 NaN NaN NaN NaN 34.5 NaN NaN NaN NaN 27.1 NaN NaN NaN NaN 23.1 22.4
170 United Arab Emirates 3.2 NaN NaN NaN NaN 3.1 NaN NaN NaN NaN 3.0 NaN NaN NaN NaN 2.8 2.8
171 United Kingdom 9.1 NaN NaN NaN NaN 8.2 NaN NaN NaN NaN 7.8 NaN NaN NaN NaN 8.7 8.9
172 United States 11.3 NaN NaN NaN NaN 11.9 NaN NaN NaN NaN 13.2 NaN NaN NaN NaN 15.0 15.3
173 Uruguay 17.4 NaN NaN NaN NaN 15.3 NaN NaN NaN NaN 16.6 NaN NaN NaN NaN 19.4 18.4
174 Uzbekistan 7.6 NaN NaN NaN NaN 5.8 NaN NaN NaN NaN 6.0 NaN NaN NaN NaN 7.4 7.4
175 Vanuatu 7.3 NaN NaN NaN NaN 5.7 NaN NaN NaN NaN 5.1 NaN NaN NaN NaN 4.5 4.5
176 Venezuela 8.0 NaN NaN NaN NaN 5.9 NaN NaN NaN NaN 4.3 NaN NaN NaN NaN 3.8 3.7
177 Vietnam 6.7 NaN NaN NaN NaN 6.7 NaN NaN NaN NaN 7.0 NaN NaN NaN NaN 7.2 7.3
178 Yemen 6.8 NaN NaN NaN NaN 8.1 NaN NaN NaN NaN 8.8 NaN NaN NaN NaN 8.6 8.5
179 Zambia 8.1 NaN NaN NaN NaN 6.5 NaN NaN NaN NaN 6.3 NaN NaN NaN NaN 6.1 6.1
180 Zimbabwe 12.9 NaN NaN NaN NaN 13.9 NaN NaN NaN NaN 11.9 NaN NaN NaN NaN 10.6 10.7

181 rows × 18 columns

In [11]:
suiciderate.columns = ['country', 'yr2000','yr2001', 'yr2002', 'yr2003', 'yr2004', 'yr2005', 'yr2006', 'yr2007', 'yr2008', 
                        'yr2009', 'yr2010', 'yr2011','yr2012', 'yr2013', 'yr2014', 'yr2015', 'yr2016']
suiciderate.head()
Out[11]:
country yr2000 yr2001 yr2002 yr2003 yr2004 yr2005 yr2006 yr2007 yr2008 yr2009 yr2010 yr2011 yr2012 yr2013 yr2014 yr2015 yr2016
0 Afghanistan 5.7 NaN NaN NaN NaN 6.3 NaN NaN NaN NaN 5.1 NaN NaN NaN NaN 4.8 4.7
1 Albania 5.5 NaN NaN NaN NaN 6.7 NaN NaN NaN NaN 7.8 NaN NaN NaN NaN 6.0 6.3
2 Algeria 4.1 NaN NaN NaN NaN 3.8 NaN NaN NaN NaN 3.3 NaN NaN NaN NaN 3.2 3.2
3 Angola 7.9 NaN NaN NaN NaN 7.2 NaN NaN NaN NaN 5.7 NaN NaN NaN NaN 5.0 4.7
4 Antigua and Barbuda 2.0 NaN NaN NaN NaN 1.2 NaN NaN NaN NaN 0.3 NaN NaN NaN NaN 0.8 0.5
In [12]:
#trying to convert from object to float
suiciderate["yr2016"] = pd.to_numeric(suiciderate.yr2016, errors='coerce')
In [13]:
# Mapping deaths from suicide rates globally in 2016

#set scale and color ranges
scale = [[0.0, 'rgb(29, 180, 240)'], [0.2, 'rgb(223,221,228)'],
         [0.4, 'rgb(169,170,201)'], [0.6, 'rgb(139,135,181)'],
         [0.8, 'rgb(236, 240, 29)'],   [1.0, 'rgb(255,0,0)']]

#dataset to be graphed
data = [dict(type='choropleth', 
             colorscale=scale, 
             locations=suiciderate['country'],
             z=suiciderate['yr2016'].astype(float),
             locationmode='country names',
             text=suiciderate['country'],
             hoverinfo='location+z',
             marker=dict(line=dict(color='rgb(255,255,255)', width=2)),
             colorbar=dict(title='Global suicide rate in 2016'))]

#layout
layout = dict(title='Global suicide rate in 2016 <br />(Hover for each country)',
              geo=dict(scope='world', 
                       projection=dict(type='equirectangular'),
                       showlakes=True,
                       lakecolor='rgb(95,145,237)'))

fig = dict(data=data, layout=layout)
py.iplot(fig, filename='DATS 6103 - Individual Project 3 - Ruth Akor')
Out[13]:

By considering suicide rates relative to each country's population, Lithuania, Russia and Guyana become the countries with the highest suicide rates in 2016

In [14]:
#trying to convert from object to float
suiciderate["yr2016"] = pd.to_numeric(suiciderate.yr2016, errors='coerce')
In [15]:
#Plotting the suicide rate for countries with top 10 highest suicide rates in 2016
top10suicide = suiciderate.nlargest(10, ['yr2016'])
top10suicide.set_index("country",drop=True,inplace=True)
top10suicide
Out[15]:
yr2000 yr2001 yr2002 yr2003 yr2004 yr2005 yr2006 yr2007 yr2008 yr2009 yr2010 yr2011 yr2012 yr2013 yr2014 yr2015 yr2016
country
Lithuania 50.7 NaN NaN NaN NaN 43.9 NaN NaN NaN NaN 37.3 NaN NaN NaN NaN 34.9 31.9
Russia 52.6 NaN NaN NaN NaN 51.6 NaN NaN NaN NaN 40.0 NaN NaN NaN NaN 32.1 31.0
Guyana 23.4 NaN NaN NaN NaN 24.4 NaN NaN NaN NaN 26.8 NaN NaN NaN NaN 29.1 29.2
South Korea 14.8 NaN NaN NaN NaN 26.8 NaN NaN NaN NaN 34.1 NaN NaN NaN NaN 28.3 26.9
Belarus 43.1 NaN NaN NaN NaN 45.1 NaN NaN NaN NaN 38.2 NaN NaN NaN NaN 26.3 26.2
Suriname 23.5 NaN NaN NaN NaN 26.5 NaN NaN NaN NaN 27.0 NaN NaN NaN NaN 23.8 22.8
Kazakhstan 34.0 NaN NaN NaN NaN 39.4 NaN NaN NaN NaN 32.7 NaN NaN NaN NaN 24.9 22.5
Ukraine 36.9 NaN NaN NaN NaN 34.5 NaN NaN NaN NaN 27.1 NaN NaN NaN NaN 23.1 22.4
Latvia 34.7 NaN NaN NaN NaN 26.7 NaN NaN NaN NaN 22.7 NaN NaN NaN NaN 21.6 21.2
Lesotho 18.0 NaN NaN NaN NaN 18.6 NaN NaN NaN NaN 20.1 NaN NaN NaN NaN 21.0 21.2
In [16]:
top10suicide = top10suicide.loc[:,['yr2016']]
top10suicide
Out[16]:
yr2016
country
Lithuania 31.9
Russia 31.0
Guyana 29.2
South Korea 26.9
Belarus 26.2
Suriname 22.8
Kazakhstan 22.5
Ukraine 22.4
Latvia 21.2
Lesotho 21.2
In [17]:
plot_top10suicide = top10suicide.plot(kind='bar',figsize=(20,10), color='purple', title='Countries with highest suicide rates in 2016')
plt.legend(loc='best', fontsize=10)
plt.show()

SUICIDE RATES BY AGE GROUP

Using a CSV file of WHO statistics, I would love to analyse suicide rate by the following age groups:

  1. 5 - 14 years
  2. 15 - 24 years
  3. 25 - 34 years
  4. 35 - 54 years
  5. 55 - 74 years
  6. 75+ years
In [18]:
who_stat = pd.read_csv("who_suicide_statistics.csv")
who_stat.head(10)
Out[18]:
country year sex age suicides_no population
0 Albania 1985 female 15-24 years NaN 277900.0
1 Albania 1985 female 25-34 years NaN 246800.0
2 Albania 1985 female 35-54 years NaN 267500.0
3 Albania 1985 female 5-14 years NaN 298300.0
4 Albania 1985 female 55-74 years NaN 138700.0
5 Albania 1985 female 75+ years NaN 34200.0
6 Albania 1985 male 15-24 years NaN 301400.0
7 Albania 1985 male 25-34 years NaN 264200.0
8 Albania 1985 male 35-54 years NaN 296700.0
9 Albania 1985 male 5-14 years NaN 325800.0
In [19]:
#renaming the age groups to remove 'years'
who_stat.loc[:, 'age'] = who_stat['age'].str.replace(' years','')
who_stat.loc[who_stat['age'] == '5-14', 'age'] = '05-14'
who_stat
Out[19]:
country year sex age suicides_no population
0 Albania 1985 female 15-24 NaN 277900.0
1 Albania 1985 female 25-34 NaN 246800.0
2 Albania 1985 female 35-54 NaN 267500.0
3 Albania 1985 female 05-14 NaN 298300.0
4 Albania 1985 female 55-74 NaN 138700.0
5 Albania 1985 female 75+ NaN 34200.0
6 Albania 1985 male 15-24 NaN 301400.0
7 Albania 1985 male 25-34 NaN 264200.0
8 Albania 1985 male 35-54 NaN 296700.0
9 Albania 1985 male 05-14 NaN 325800.0
10 Albania 1985 male 55-74 NaN 132500.0
11 Albania 1985 male 75+ NaN 21100.0
12 Albania 1986 female 15-24 NaN 283900.0
13 Albania 1986 female 25-34 NaN 252100.0
14 Albania 1986 female 35-54 NaN 273200.0
15 Albania 1986 female 05-14 NaN 304700.0
16 Albania 1986 female 55-74 NaN 141700.0
17 Albania 1986 female 75+ NaN 34900.0
18 Albania 1986 male 15-24 NaN 306700.0
19 Albania 1986 male 25-34 NaN 269000.0
20 Albania 1986 male 35-54 NaN 302000.0
21 Albania 1986 male 05-14 NaN 331600.0
22 Albania 1986 male 55-74 NaN 134800.0
23 Albania 1986 male 75+ NaN 21400.0
24 Albania 1987 female 15-24 14.0 289700.0
25 Albania 1987 female 25-34 4.0 257200.0
26 Albania 1987 female 35-54 6.0 278800.0
27 Albania 1987 female 05-14 0.0 311000.0
28 Albania 1987 female 55-74 0.0 144600.0
29 Albania 1987 female 75+ 1.0 35600.0
... ... ... ... ... ... ...
43746 Virgin Islands (USA) 2012 male 15-24 2.0 6663.0
43747 Virgin Islands (USA) 2012 male 25-34 2.0 5061.0
43748 Virgin Islands (USA) 2012 male 35-54 2.0 13542.0
43749 Virgin Islands (USA) 2012 male 05-14 0.0 7334.0
43750 Virgin Islands (USA) 2012 male 55-74 0.0 11957.0
43751 Virgin Islands (USA) 2012 male 75+ 0.0 2135.0
43752 Virgin Islands (USA) 2015 female 15-24 0.0 6675.0
43753 Virgin Islands (USA) 2015 female 25-34 0.0 5662.0
43754 Virgin Islands (USA) 2015 female 35-54 0.0 14278.0
43755 Virgin Islands (USA) 2015 female 05-14 0.0 7099.0
43756 Virgin Islands (USA) 2015 female 55-74 0.0 14269.0
43757 Virgin Islands (USA) 2015 female 75+ 0.0 3508.0
43758 Virgin Islands (USA) 2015 male 15-24 0.0 6933.0
43759 Virgin Islands (USA) 2015 male 25-34 2.0 4609.0
43760 Virgin Islands (USA) 2015 male 35-54 1.0 12516.0
43761 Virgin Islands (USA) 2015 male 05-14 0.0 7291.0
43762 Virgin Islands (USA) 2015 male 55-74 0.0 12615.0
43763 Virgin Islands (USA) 2015 male 75+ 0.0 2496.0
43764 Zimbabwe 1990 female 15-24 124.0 NaN
43765 Zimbabwe 1990 female 25-34 59.0 NaN
43766 Zimbabwe 1990 female 35-54 45.0 NaN
43767 Zimbabwe 1990 female 05-14 6.0 NaN
43768 Zimbabwe 1990 female 55-74 20.0 NaN
43769 Zimbabwe 1990 female 75+ 3.0 NaN
43770 Zimbabwe 1990 male 15-24 132.0 NaN
43771 Zimbabwe 1990 male 25-34 150.0 NaN
43772 Zimbabwe 1990 male 35-54 132.0 NaN
43773 Zimbabwe 1990 male 05-14 6.0 NaN
43774 Zimbabwe 1990 male 55-74 74.0 NaN
43775 Zimbabwe 1990 male 75+ 13.0 NaN

43776 rows × 6 columns

In [20]:
#drop population column
who_stat = who_stat.drop(['population'], axis=1)
who_stat.head()
Out[20]:
country year sex age suicides_no
0 Albania 1985 female 15-24 NaN
1 Albania 1985 female 25-34 NaN
2 Albania 1985 female 35-54 NaN
3 Albania 1985 female 05-14 NaN
4 Albania 1985 female 55-74 NaN
In [21]:
#subset all suicide deaths for age group 5 to 14
age5to14 = who_stat.loc[who_stat['age']== '05-14']
newage5to14 = age5to14.groupby(['year']).sum()
newage5to14.columns = ['age05-14']
newage5to14.head()
Out[21]:
age05-14
year
1979 635.0
1980 999.0
1981 1186.0
1982 1161.0
1983 993.0
In [22]:
#susbet all suicide death for age group 15 to 24
age15to24 = who_stat.loc[who_stat['age']== '15-24']
newage15to24 = age15to24.groupby(['year']).sum()
newage15to24.columns = ['age15-24']
newage15to24.head()
Out[22]:
age15-24
year
1979 14701.0
1980 23121.0
1981 25190.0
1982 25068.0
1983 18388.0
In [23]:
#subset all suicide death for age group 25 to 34
age25to34 = who_stat.loc[who_stat['age']== '25-34']
newage25to34 = age25to34.groupby(['year']).sum()
newage25to34.columns = ['age25-34']
newage25to34.head()
Out[23]:
age25-34
year
1979 17149.0
1980 29358.0
1981 34369.0
1982 35536.0
1983 22454.0
In [24]:
#susbet all suicide death for age group 35 to 54
age35to54 = who_stat.loc[who_stat['age']== '35-54']
newage35to54 = age35to54.groupby(['year']).sum()
newage35to54.columns = ['age35-54']
newage35to54.head()
Out[24]:
age35-54
year
1979 28614.0
1980 53525.0
1981 64006.0
1982 65017.0
1983 38472.0
In [25]:
#susbet all suicide death for age group 55 to 74
age55to74 = who_stat.loc[who_stat['age']== '55-74']
newage55to74 = age55to74.groupby(['year']).sum()
newage55to74.columns = ['age55-74']
newage55to74.head()
Out[25]:
age55-74
year
1979 23270.0
1980 34566.0
1981 40002.0
1982 41862.0
1983 30275.0
In [26]:
#susbet all suicide death for age group 75+
age75plus = who_stat.loc[who_stat['age']== '75+']
newage75plus = age75plus.groupby(['year']).sum()
newage75plus.columns = ['age75plus']
newage75plus.head()
Out[26]:
age75plus
year
1979 8421.0
1980 11979.0
1981 13261.0
1982 14249.0
1983 11848.0
In [27]:
#join all age groups into one dataframe
data = newage5to14.join(newage15to24).join(newage25to34).join(newage35to54).join(newage55to74).join(newage75plus)
data.head()
Out[27]:
age05-14 age15-24 age25-34 age35-54 age55-74 age75plus
year
1979 635.0 14701.0 17149.0 28614.0 23270.0 8421.0
1980 999.0 23121.0 29358.0 53525.0 34566.0 11979.0
1981 1186.0 25190.0 34369.0 64006.0 40002.0 13261.0
1982 1161.0 25068.0 35536.0 65017.0 41862.0 14249.0
1983 993.0 18388.0 22454.0 38472.0 30275.0 11848.0
In [28]:
agegroup_plot = data.plot.line(legend=True, figsize=(16,10), title='Suicide deaths by age group')
agegroup_plot.set_ylabel('suicide death')
plt.show()

Age group 35 to 54 has had the highest number of suicide deaths since 1979. This can be explained by the fact that many people in this age bracket are at the peak of their careers with families and so many responsibilities trying to figure out life.

SUICIDE RATE BY GENDER

In this section, I consider suicide rate by gender to see whether men or women commit more suicide

In [29]:
#subset all suicide deaths by gender
malesuicide = who_stat.loc[who_stat['sex']== 'male']
newmalesuicide = malesuicide.groupby(['year']).sum()
newmalesuicide.columns = ['male']
newmalesuicide.head()
Out[29]:
male
year
1979 63372.0
1980 110886.0
1981 130484.0
1982 135212.0
1983 87607.0
In [30]:
femalesuicide = who_stat.loc[who_stat['sex']== 'female']
newfemalesuicide = femalesuicide.groupby(['year']).sum()
newfemalesuicide.columns = ['female']
newfemalesuicide.head()
Out[30]:
female
year
1979 29418.0
1980 42662.0
1981 47530.0
1982 47681.0
1983 34823.0
In [31]:
#join all gender into one dataframe
genderdata = newmalesuicide.join(newfemalesuicide)
genderdata.head()
Out[31]:
male female
year
1979 63372.0 29418.0
1980 110886.0 42662.0
1981 130484.0 47530.0
1982 135212.0 47681.0
1983 87607.0 34823.0
In [32]:
gender_plot = genderdata.plot(kind='bar', legend=True, figsize=(16,10), title='Suicide deaths by Sex')
gender_plot.set_ylabel('suicide death')
plt.show()

We have more males committing suicide all over the world than females

WHAT COUNTRIES HAVE THE HIGHEST FEMALE SUICIDE RATE ON AVERAGE

In [33]:
#import the data
suicidewomen = pd.read_excel("suicide_women_per_100000_people.xlsx")
suicidewomen
Out[33]:
country 1950 1951 1952 1953 1954 1955 1956 1957 1958 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
0 Albania NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 3.0400 3.9200 NaN 2.280 NaN NaN NaN NaN NaN NaN
1 Argentina NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 Armenia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 1.0200 NaN NaN NaN 1.080 1.130 0.7570 0.9690 0.673
3 Australia 4.56 4.57 5.15 5.89 5.38 5.320 5.730 6.7600 6.1400 ... 4.5500 4.3100 4.520 4.490 4.740 5.290 5.200 5.5500 5.7100 NaN
4 Austria NaN NaN NaN NaN NaN 13.000 12.300 12.5000 12.6000 ... 5.1100 5.0200 4.900 4.870 5.260 4.320 5.230 5.0700 4.5500 4.830
5 Azerbaijan NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.2880 NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 Bahamas NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 Bahrain NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 1.1800 1.5200 1.010 0.676 1.140 NaN NaN 0.1410 NaN NaN
8 Barbados NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 Belarus NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 Belgium NaN NaN NaN NaN 5.85 5.680 6.930 6.8300 6.4700 ... 7.6300 8.1100 8.230 8.180 8.690 7.530 7.410 7.5800 7.4000 NaN
11 Belize NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 Bosnia and Herzegovina NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 2.5700 NaN NaN
13 Brazil NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 Bulgaria NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 4.0500 3.9500 3.340 3.390 2.710 3.460 2.670 2.7500 NaN NaN
15 Canada 3.70 3.83 3.63 3.40 3.74 3.640 3.780 3.5700 3.2700 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 Chile NaN NaN NaN NaN NaN 1.710 3.290 2.7600 2.9400 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 Colombia NaN NaN NaN NaN NaN 0.392 0.334 0.2550 1.5300 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 Costa Rica NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 Croatia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 5.7200 5.3200 4.540 5.590 5.330 5.170 4.580 5.9000 5.7000 4.960
20 Cuba NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 Cyprus NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.9260 2.2000 1.390 1.780 0.900 0.413 0.986 2.5900 1.7600 1.010
22 Czech Republic NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 3.1900 3.6600 3.270 3.680 3.680 3.740 4.140 3.9800 3.7600 3.990
23 Denmark NaN 14.20 13.60 15.00 14.20 13.700 13.700 13.4000 12.2000 ... 4.8700 5.0800 3.660 4.240 4.120 4.380 4.410 4.0800 4.5000 NaN
24 Dominican Republic NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 Ecuador NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
26 Egypt NaN NaN NaN NaN NaN 0.180 0.196 0.0826 0.0681 ... 0.0222 0.0383 NaN NaN NaN NaN NaN 0.0394 0.0311 NaN
27 El Salvador NaN NaN NaN NaN NaN NaN NaN NaN 4.1300 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
28 Estonia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 4.1200 5.6500 4.460 4.020 4.190 3.910 4.060 4.9200 3.6700 NaN
29 Finland NaN NaN 6.34 7.28 7.71 8.490 9.070 9.9100 9.7600 ... 7.7500 7.7400 8.850 7.550 6.540 6.930 7.180 6.2400 NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
68 Qatar NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
69 Romania NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 3.1500 3.1000 2.860 3.260 2.720 2.680 2.730 2.2000 2.3900 2.330
70 Russia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
71 San Marino NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
72 Sao Tome and Principe NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
73 Serbia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 6.5400 6.7400 6.530 4.840 5.820 5.150 5.170 4.6700 4.7100 NaN
74 Seychelles NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
75 Singapore NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 6.3000 5.2200 5.090 4.430 4.860 6.280 4.730 4.1700 4.7800 NaN
76 Slovak Republic NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 2.3600 1.640 2.650 NaN 2.000 2.440 2.3100 NaN NaN
77 Slovenia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 6.7800 5.6800 6.060 5.040 5.580 5.460 5.300 3.9300 5.6300 NaN
78 South Africa NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 0.3840 NaN NaN NaN NaN NaN NaN NaN NaN
79 South Korea NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 15.5000 15.7000 18.500 17.200 16.200 14.200 13.500 12.6000 11.9000 NaN
80 Spain NaN 2.91 3.26 2.88 2.74 2.580 2.760 2.7700 2.6000 ... 2.6100 2.4700 2.400 2.160 2.280 2.550 3.000 3.1100 2.8700 NaN
81 Sri Lanka 5.01 5.74 6.00 5.24 6.66 5.420 5.430 5.6000 5.4100 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
82 St. Lucia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
83 Suriname NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
84 Sweden NaN 6.73 6.36 8.11 7.27 7.450 8.020 7.7700 7.4700 ... 6.0400 5.8700 6.440 5.350 5.840 5.900 6.460 6.3600 5.9100 NaN
85 Switzerland NaN 10.60 10.20 9.01 10.60 10.800 10.400 9.3600 10.1000 ... 8.0100 8.0200 5.510 5.470 5.110 5.210 5.220 NaN NaN NaN
86 Tajikistan NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
87 Thailand NaN NaN NaN NaN NaN NaN NaN 2.0800 2.2700 ... 2.3100 2.4600 2.410 2.380 2.420 2.500 2.240 2.2400 2.1200 2.130
88 Trinidad and Tobago NaN 2.73 3.56 2.51 3.52 2.950 2.000 1.0000 2.0000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
89 Tunisia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 0.124 NaN NaN NaN NaN NaN NaN NaN
90 Turkey NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 0.689 1.020 0.794 0.991 1.200 1.0400 0.9980 NaN
91 Turkmenistan NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
92 Ukraine NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
93 United Kingdom 5.37 5.47 5.06 5.66 6.05 6.340 6.700 6.8700 6.8000 ... 2.4300 2.7200 2.570 2.680 2.690 2.490 2.640 2.8800 3.1200 NaN
94 United States 4.96 4.55 4.29 4.19 4.08 4.490 4.380 4.2400 4.7400 ... 4.3000 NaN NaN NaN NaN NaN NaN NaN NaN NaN
95 Uruguay NaN NaN NaN NaN NaN 7.820 9.490 6.9300 5.6000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
96 Uzbekistan NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
97 Venezuela NaN NaN NaN NaN NaN 2.770 3.450 2.7400 3.4000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

98 rows × 68 columns

There is a lot of missing data in this excel file on suicide rate for women per 100,000 people so I will take the average of suicide rates for each country from 1950 to 2016 to see which countries have highest suicide rates on average over those years

In [34]:
#create a column for the mean suicide rate for each country
suicidewomen['mean'] = suicidewomen.mean(axis=1)
suicidewomen.head()
Out[34]:
country 1950 1951 1952 1953 1954 1955 1956 1957 1958 ... 2008 2009 2010 2011 2012 2013 2014 2015 2016 mean
0 Albania NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 3.92 NaN 2.28 NaN NaN NaN NaN NaN NaN 2.322316
1 Argentina NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 3.746800
2 Armenia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 1.02 NaN NaN NaN 1.08 1.13 0.757 0.969 0.673 1.165444
3 Australia 4.56 4.57 5.15 5.89 5.38 5.32 5.73 6.76 6.14 ... 4.31 4.52 4.49 4.74 5.29 5.20 5.550 5.710 NaN 6.076154
4 Austria NaN NaN NaN NaN NaN 13.00 12.30 12.50 12.60 ... 5.02 4.90 4.87 5.26 4.32 5.23 5.070 4.550 4.830 9.471935

5 rows × 69 columns

In [35]:
#set index to country and sort by mean value
suicidewomen.set_index("country",drop=True,inplace=True)
sort_suicidewomen = suicidewomen.sort_values('mean', ascending=False)
sort_suicidewomen.head(10)
Out[35]:
1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ... 2008 2009 2010 2011 2012 2013 2014 2015 2016 mean
country
Cuba NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 14.846154
Hungary NaN NaN NaN NaN NaN 12.70 11.20 12.20 13.80 13.90 ... 7.30 7.61 7.23 7.36 6.88 6.51 5.81 6.02 5.66 13.814194
Japan 18.50 17.50 17.7 18.70 19.80 20.90 21.10 20.60 22.00 20.00 ... 10.30 10.10 9.86 10.80 9.34 9.18 8.83 8.06 NaN 12.531818
Denmark NaN 14.20 13.6 15.00 14.20 13.70 13.70 13.40 12.20 12.20 ... 5.08 3.66 4.24 4.12 4.38 4.41 4.08 4.50 NaN 11.364154
Sri Lanka 5.01 5.74 6.0 5.24 6.66 5.42 5.43 5.60 5.41 6.40 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 11.062174
Lithuania NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 8.49 8.27 8.41 8.94 7.60 9.78 7.08 8.00 5.71 10.127941
Russia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 10.081176
South Korea NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 15.70 18.50 17.20 16.20 14.20 13.50 12.60 11.90 NaN 9.670968
Austria NaN NaN NaN NaN NaN 13.00 12.30 12.50 12.60 12.90 ... 5.02 4.90 4.87 5.26 4.32 5.23 5.07 4.55 4.83 9.471935
Switzerland NaN 10.60 10.2 9.01 10.60 10.80 10.40 9.36 10.10 8.42 ... 8.02 5.51 5.47 5.11 5.21 5.22 NaN NaN NaN 9.441111

10 rows × 68 columns

In [36]:
mean_suicide_female = sort_suicidewomen['mean']
topmeansuiciderate = mean_suicide_female.head(10)
topmeansuiciderate
Out[36]:
country
Cuba           14.846154
Hungary        13.814194
Japan          12.531818
Denmark        11.364154
Sri Lanka      11.062174
Lithuania      10.127941
Russia         10.081176
South Korea     9.670968
Austria         9.471935
Switzerland     9.441111
Name: mean, dtype: float64
In [37]:
topmeansuiciderate[0:20].plot(  # This is Pandas-style plotting
    x='country', 
    y='mean suicide rate', 
    kind='bar', 
    color='red',
    legend=False,
    width=0.8
)
# Matplotlib styling of the output:
plt.ylabel("mean suicide rate")
plt.xlabel("country")
plt.title("Countries with the highest female suicide rates on average")
plt.gca().yaxis.grid(linestyle=':')

On average, Cuba has the highest female suicide rates since 1950, followed by Hungary, Japan, Denmanrk, Sri Lanka

WHAT COUNTRIES HAVE THE HIGHEST MALE SUICIDE RATE ON AVERAGE

In [38]:
#import the data
suicidemen = pd.read_excel("suicide_men_per_100000_people.xlsx")
suicidemen.head()
Out[38]:
country 1950 1951 1952 1953 1954 1955 1956 1957 1958 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
0 Albania NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 5.23 6.80 NaN 3.86 NaN NaN NaN NaN NaN NaN
1 Antigua and Barbuda NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 Argentina NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 Armenia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 2.69 NaN NaN NaN 3.91 2.81 2.52 3.39 3.33
4 Australia 13.9 14.3 16.0 15.8 16.2 15.5 16.0 17.8 19.0 ... 15.00 15.70 14.8 15.20 14.8 15.40 15.30 16.90 17.60 NaN

5 rows × 68 columns

In [39]:
#create a column for the mean suicide rate for males for each country
suicidemen['mean'] = suicidemen.mean(axis=1)
suicidemen.head()
Out[39]:
country 1950 1951 1952 1953 1954 1955 1956 1957 1958 ... 2008 2009 2010 2011 2012 2013 2014 2015 2016 mean
0 Albania NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 6.80 NaN 3.86 NaN NaN NaN NaN NaN NaN 4.620000
1 Antigua and Barbuda NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.290000
2 Argentina NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 11.859200
3 Armenia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 2.69 NaN NaN NaN 3.91 2.81 2.52 3.39 3.33 3.624444
4 Australia 13.9 14.3 16.0 15.8 16.2 15.5 16.0 17.8 19.0 ... 15.70 14.8 15.20 14.8 15.40 15.30 16.90 17.60 NaN 17.540000

5 rows × 69 columns

In [40]:
#set index to country and sort by mean value
suicidemen.set_index("country",drop=True,inplace=True)
sort_suicidemen = suicidemen.sort_values('mean', ascending=False)
sort_suicidemen.head(10)
Out[40]:
1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ... 2008 2009 2010 2011 2012 2013 2014 2015 2016 mean
country
Lithuania NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 54.4 55.7 49.5 49.8 46.4 54.9 47.7 45.0 42.7 58.623529
Russia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 53.176471
Belarus NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 44.555556
Latvia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 36.1 35.8 33.1 32.1 33.2 28.7 28.7 27.7 NaN 43.936111
Hungary NaN NaN NaN NaN NaN 29.8 28.8 31.8 33.8 37.9 ... 31.8 32.1 32.1 30.7 29.5 25.5 23.9 22.6 20.9 43.243548
Kazakhstan NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 35.2 31.2 28.4 NaN 42.812500
Estonia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 26.2 29.5 24.5 23.5 25.3 22.6 26.8 22.3 NaN 41.178788
Ukraine NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 39.136364
Slovenia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 25.3 26.7 25.8 25.5 26.3 26.7 23.8 23.6 NaN 36.716129
Finland NaN NaN 32.9 31.2 34.3 35.9 40.4 38.3 36.8 35.1 ... 26.7 25.4 24.2 23.2 21.5 21.5 19.3 NaN NaN 34.733333

10 rows × 68 columns

In [41]:
mean_suicide_male = sort_suicidemen['mean']
topmeansuicide_men = mean_suicide_male.head(10)
topmeansuicide_men
Out[41]:
country
Lithuania     58.623529
Russia        53.176471
Belarus       44.555556
Latvia        43.936111
Hungary       43.243548
Kazakhstan    42.812500
Estonia       41.178788
Ukraine       39.136364
Slovenia      36.716129
Finland       34.733333
Name: mean, dtype: float64
In [42]:
plot_topmeansuicide = topmeansuicide_men.plot(kind='bar',figsize=(20,10), color='skyblue', title='Countries with highest male suicide rates on average')
plt.legend(loc='best', fontsize=10)
plt.show()

On average, Lithuania has had the highest male suicide rate from 1950 to 2016 followed by Russia, Belarus, Latvia, Hungary

FINDINGS AND LIMITATIONS

From the analysis of the data, there are observed patterns in the data. Using the latest available data (2016), India has the highest number of deaths from suicide, followed by China and Russia. However, when we consider suicide rate which is suicide occurence as a percentage of the total population, Lithuania becomes the country with the highest suicide rate followed by Russia and Guyana.

By analysing the trend in suicide deaths globally, I found that suicide rate rose drastically between 1990 and 1995 after which it declined a little but has since been increasing since 2013. A major limitation is that the latest available data is 2016. With the availability of 2017, 2018 and 2019 suicide statistics, I expect the suicide deaths to be higher owing to the recent prevalence of people committing suicide.

Suicide rate is highest among people within the age bracket of 35 and 54 years followed by those within 55 and 74 years. This is probably because people between 35 and 54 years are in the middle of their life with so many responsibilities, trying to figure out life. This can be a tough period for those that feel they cannot make meaning of their life or life cannot get better.

Through the lens of gender, suicide rate has consistently been higher for the male gender throughout all the years compared to the female gender. Countries with highest male suicide rate on average for all the years are Lithuania, Russia and Belarus respectively. Countries with highest female suicide rate on average are Cuba, Hungary, Japan, Denmark respectively.

Another limitation in this study is the presence of so many missing values in the data, this was why average rates were used for the section on gender.

CONCLUSION AND FUTURE RESEARCH

For future research, it will be helpful to know the drivers of suicide such as alcohol consumption, drug abuse, unemployment, high debt, poverty, etc. Also, it will be interesting to see the relationship between mental health issues and suicide.

REFERENCES