Gun_Data.orig.py
303 lines
| 10.4 KiB
| text/x-python
|
PythonLexer
Matthias BUSSONNIER
|
r9595 | ## Some gun violence analysis with Wikipedia data | |
# As [requested by John Stokes](https://twitter.com/jonst0kes/status/282330530412888064), | |||
# here are per-capita numbers for gun-related homicides, | |||
# relating to GDP and total homicides, | |||
# so the situation in the United States can be put in context relative to other nations. | |||
# main data source is UNODC (via Wikipedia [here](http://en.wikipedia.org/wiki/List_of_countries_by_intentional_homicide_rate) | |||
# and [here](http://en.wikipedia.org/wiki/List_of_countries_by_firearm-related_death_rate)). | |||
# | |||
# GDP data from World Bank, again [via Wikipedia](http://en.wikipedia.org/wiki/List_of_countries_by_GDP_(PPP)_per_capita). | |||
# | |||
# If the numbers on Wikipedia are inaccurate, or their relationship is not sound | |||
# (e.g. numbers taken from different years, during which significant change occured) | |||
# then obviously None of this analysis is valid. | |||
# | |||
# To summarize the data, | |||
# every possible way you look at it the US is lousy at preventing gun violence. | |||
# Even when compared to significantly more violent places, | |||
# gun violence in the US is a serious problem, | |||
# and when compared to similarly wealthy places, | |||
# the US is an outstanding disaster. | |||
# **UPDATE:** the relationship of the gun data and totals does not seem to be valid. | |||
# [FBI data](http://www2.fbi.gov/ucr/cius2009/offenses/violent_crime/index.html) suggests that | |||
# the relative contribution of guns to homicides in the US is 47%, | |||
# but relating these two data sources gives 80%. | |||
# Internal comparisons should still be fine, but 'fraction' analysis has been stricken. | |||
# In[1]: | |||
%load_ext retina | |||
%pylab inline | |||
# Out[1]: | |||
# | |||
# Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline]. | |||
# For more information, type 'help(pylab)'. | |||
# | |||
# In[2]: | |||
from IPython.display import display | |||
import pandas | |||
pandas.set_option('display.notebook_repr_html', True) | |||
pandas.set_option('display.precision', 2) | |||
# Some utility functions for display | |||
# In[3]: | |||
def plot_percent(df, limit=10): | |||
df['Gun Percent'][:limit].plot() | |||
plt.ylim(0,100) | |||
plt.title("% Gun Homicide") | |||
plt.show() | |||
# In[4]: | |||
def plot_percapita(df, limit=10): | |||
df = df.ix[:,['Homicides', 'Gun Homicides']][:limit] | |||
df['Total Homicides'] = df['Homicides'] - df['Gun Homicides'] | |||
del df['Homicides'] | |||
df.plot(kind='bar', stacked=True, sort_columns=True) | |||
plt.ylabel("per 100k") | |||
plt.show() | |||
# In[8]: | |||
def display_relevant(df, limit=10): | |||
display(df.ix[:,['Homicides', 'Gun Homicides', 'Gun Data Source']][:limit]) | |||
# Load the data | |||
# In[9]: | |||
totals = pandas.read_csv('totals.csv', '\t', index_col=0) | |||
guns = pandas.read_csv('guns.csv', '\t', index_col=0) | |||
gdp = pandas.read_csv('gdp.csv', '\t', index_col=1) | |||
data = totals.join(guns).join(gdp) | |||
data['Gun Percent'] = 100 * data['Gun Homicides'] / data['Homicides'] | |||
del data['Unintentional'],data['Undetermined'],data['Gun Suicides'] | |||
data = data.dropna() | |||
# Of all sampled countries (Found data for 68 countries), | |||
# the US is in the top 15 in Gun Homicides per capita. | |||
# | |||
# Numbers are per 100k. | |||
# In[10]: | |||
data = data.sort("Gun Homicides", ascending=False) | |||
display_relevant(data, 15) | |||
# Out[10]: | |||
# Homicides Gun Homicides Gun Data Source | |||
# Country | |||
# El Salvador 69.2 50.4 OAS 2011[1] | |||
# Jamaica 52.2 47.4 OAS 2011[1] | |||
# Honduras 91.6 46.7 OAS 2011[1] | |||
# Guatemala 38.5 38.5 OAS 2011[1] | |||
# Colombia 33.4 27.1 UNODC 2011 [2] | |||
# Brazil 21.0 18.1 UNODC 2011[3] | |||
# Panama 21.6 12.9 OAS 2011[1] | |||
# Mexico 16.9 10.0 UNODC 2011[4] | |||
# Paraguay 11.5 7.3 UNODC 2000[11] | |||
# Nicaragua 13.6 7.1 OAS 2011[1] | |||
# United States 4.2 3.7 OAS 2012[5][6] | |||
# Costa Rica 10.0 3.3 UNODC 2002[7] | |||
# Uruguay 5.9 3.2 UNODC 2002[7] | |||
# Argentina 3.4 3.0 UNODC 2011[12] | |||
# Barbados 11.3 3.0 UNODC 2000[11] | |||
# Take top 30 Countries by GDP | |||
# In[11]: | |||
top = data.sort('GDP')[-30:] | |||
# and rank them by Gun Homicides per capita: | |||
# In[12]: | |||
top_by_guns = top.sort("Gun Homicides", ascending=False) | |||
display_relevant(top_by_guns, 5) | |||
plot_percapita(top_by_guns, 10) | |||
# Out[12]: | |||
# Homicides Gun Homicides Gun Data Source | |||
# Country | |||
# United States 4.2 3.7 OAS 2012[5][6] | |||
# Israel 2.1 0.9 WHO 2012[10] | |||
# Canada 1.6 0.8 Krug 1998[13] | |||
# Luxembourg 2.5 0.6 WHO 2012[10] | |||
# Greece 1.5 0.6 Krug 1998[13] | |||
# image file: tests/ipynbref/Gun_Data_orig_files/Gun_Data_orig_fig_00.png | |||
# **NOTE:** these bar graphs should not be interpreted as fractions of a total, | |||
# as the two data sources do not appear to be comparable. | |||
# But the red and blue bar graphs should still be internally comparable. | |||
# The US is easily #1 of 30 wealthiest countries in Gun Homicides per capita, | |||
# by a factor of 4:1 | |||
# Adding USA, Canada, and Mexico to all of Europe, | |||
# USA is a strong #2 behind Mexico in total gun homicides per-capita | |||
# In[13]: | |||
index = (data['Region'] == 'Europe') + \ | |||
(data.index == 'United States') + \ | |||
(data.index == 'Canada') + \ | |||
(data.index == 'Mexico') | |||
selected = data[index] | |||
print "By Total Gun Homicides" | |||
sys.stdout.flush() | |||
by_guns = selected.sort("Gun Homicides", ascending=False) | |||
#by_guns['Gun Homicides'].plot(kind='bar') | |||
plot_percapita(by_guns, limit=25) | |||
display_relevant(selected, limit=None) | |||
# Out[13]: | |||
# By Total Gun Homicides | |||
# | |||
# image file: tests/ipynbref/Gun_Data_orig_files/Gun_Data_orig_fig_01.png | |||
# Homicides Gun Homicides Gun Data Source | |||
# Country | |||
# Mexico 16.9 10.0 UNODC 2011[4] | |||
# United States 4.2 3.7 OAS 2012[5][6] | |||
# Montenegro 3.5 2.1 WHO 2012[10] | |||
# Moldova 7.5 1.0 WHO 2012[10] | |||
# Canada 1.6 0.8 Krug 1998[13] | |||
# Serbia 1.2 0.6 WHO 2012[10] | |||
# Luxembourg 2.5 0.6 WHO 2012[10] | |||
# Greece 1.5 0.6 Krug 1998[13] | |||
# Croatia 1.4 0.6 WHO 2012[10] | |||
# Switzerland 0.7 0.5 OAS 2011[1] | |||
# Malta 1.0 0.5 WHO 2012[10] | |||
# Portugal 1.2 0.5 WHO 2012[10] | |||
# Belarus 4.9 0.4 UNODC 2002[7] | |||
# Ireland 1.2 0.4 WHO 2012[10] | |||
# Italy 0.9 0.4 WHO 2012[10] | |||
# Ukraine 5.2 0.3 UNODC 2000[11] | |||
# Estonia 5.2 0.3 WHO 2012[10] | |||
# Belgium 1.7 0.3 WHO 2012[10] | |||
# Finland 2.2 0.3 WHO 2012[10] | |||
# Lithuania 6.6 0.2 WHO 2012[10] | |||
# Bulgaria 2.0 0.2 WHO 2012[10] | |||
# Georgia 4.3 0.2 WHO 2012[10] | |||
# Denmark 0.9 0.2 WHO 2012[10] | |||
# France 1.1 0.2 WHO 2012[10] | |||
# Netherlands 1.1 0.2 WHO 2012[10] | |||
# Sweden 1.0 0.2 WHO 2012[10] | |||
# Slovakia 1.5 0.2 WHO 2012[10] | |||
# Austria 0.6 0.2 WHO 2012[10] | |||
# Latvia 3.1 0.2 WHO 2012[10] | |||
# Spain 0.8 0.1 WHO 2012[10] | |||
# Hungary 1.3 0.1 WHO 2012[10] | |||
# Czech Republic 1.7 0.1 WHO 2012[10] | |||
# Germany 0.8 0.1 WHO 2012[10] | |||
# Slovenia 0.7 0.1 WHO 2012[10] | |||
# Romania 2.0 0.0 WHO 2012[10] | |||
# United Kingdom 1.2 0.0 WHO2012 [10] | |||
# Norway 0.6 0.0 WHO 2012[10] | |||
# Poland 1.1 0.0 WHO 2012[10] | |||
# Let's just compare US, Canada, and UK: | |||
# In[15]: | |||
select = data.ix[['United States', 'Canada', 'United Kingdom']] | |||
plot_percapita(select) | |||
# Out[15]: | |||
# image file: tests/ipynbref/Gun_Data_orig_files/Gun_Data_orig_fig_02.png | |||
# Normalize to the US numbers (inverse) | |||
# In[16]: | |||
select['Homicides'] = select['Homicides']['United States'] / select['Homicides'] | |||
select['Gun Homicides'] = select['Gun Homicides']['United States'] / select['Gun Homicides'] | |||
display_relevant(select) | |||
# Out[16]: | |||
# Homicides Gun Homicides Gun Data Source | |||
# United States 1.0 1.0 OAS 2012[5][6] | |||
# Canada 2.6 4.9 Krug 1998[13] | |||
# United Kingdom 3.5 92.5 WHO2012 [10] | |||
# So, you are 2.6 times more likely to be killed in the US than Canada, | |||
# and 3.5 times more likely than in the UK. | |||
# That's bad, but not extreme. | |||
# | |||
# However, you are 4.9 times more likely to be killed *with a gun* in the US than Canada, | |||
# and almost 100 times more likely than in the UK. That is pretty extreme. | |||
# | |||
# Countries represented: | |||
# In[14]: | |||
for country in data.index: | |||
print country | |||
# Out[14]: | |||
# El Salvador | |||
# Jamaica | |||
# Honduras | |||
# Guatemala | |||
# Colombia | |||
# Brazil | |||
# Panama | |||
# Mexico | |||
# Paraguay | |||
# Nicaragua | |||
# United States | |||
# Costa Rica | |||
# Uruguay | |||
# Argentina | |||
# Barbados | |||
# Montenegro | |||
# Peru | |||
# Moldova | |||
# Israel | |||
# India | |||
# Canada | |||
# Serbia | |||
# Luxembourg | |||
# Greece | |||
# Uzbekistan | |||
# Croatia | |||
# Kyrgyzstan | |||
# Switzerland | |||
# Malta | |||
# Portugal | |||
# Belarus | |||
# Ireland | |||
# Italy | |||
# Kuwait | |||
# Ukraine | |||
# Estonia | |||
# Belgium | |||
# Finland | |||
# Lithuania | |||
# Cyprus | |||
# Bulgaria | |||
# Georgia | |||
# Denmark | |||
# France | |||
# Netherlands | |||
# Sweden | |||
# Slovakia | |||
# Qatar | |||
# Austria | |||
# Latvia | |||
# New Zealand | |||
# Spain | |||
# Hungary | |||
# Czech Republic | |||
# Hong Kong | |||
# Australia | |||
# Singapore | |||
# Chile | |||
# Germany | |||
# Slovenia | |||
# Romania | |||
# Azerbaijan | |||
# South Korea | |||
# United Kingdom | |||
# Norway | |||
# Japan | |||
# Poland | |||
# Mauritius | |||
# |