今天无聊又看看kaggle ,看中了一个自杀分析数据集

通道地址:
https://www.kaggle.com/russellyates88/suicide-rates-overview-1985-to-2016

看来这个是大家都看过的数据集

来来,刷起来

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
%pylab inline
data = pd.read_csv('../input/suicide-rates-overview-1985-to-2016/master.csv')
data = data.drop(['country-year','HDI for year'],axis=1)
print(data.shape)
data.head()

(27820, 10)

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 27820 entries, 0 to 27819
Data columns (total 10 columns):
country               27820 non-null object
year                  27820 non-null int64
sex                   27820 non-null object
age                   27820 non-null object
suicides_no           27820 non-null int64
population            27820 non-null int64
suicides/100k pop     27820 non-null float64gdp_for_year ($)     27820 non-null object
gdp_per_capita ($)    27820 non-null int64
generation            27820 non-null object
dtypes: float64(1), int64(4), object(5)
memory usage: 2.1+ MB
data[['suicides_no','population','suicides/100k pop','gdp_per_capita ($)']].describe()


我觉得好这是最好的数据分析 (还增加的数据集来在地图中展示)

在这里,您可以看到此数据集中缺少国家的地图。这是一个重要的信息,我们可以认为这些国家的自杀情况很糟糕。

应该注意,我们的数据集是偏移的,并不是完全客观的

from IPython.display import Image
Image('../input/country/missed countries.png')


31年的自杀人数。请注意,并非所有国家都包括在此列表中!这是非常重要的。

suic_sum = pd.DataFrame(data['suicides_no'].groupby(data['country']).sum())
suic_sum = suic_sum.reset_index().sort_index(by='suicides_no',ascending=False)
most_cont = suic_sum.head(8)
fig = plt.figure(figsize=(20,10))
plt.title('Count of suicides for 31 years.')
sns.set(font_scale=2)
sns.barplot(y='suicides_no',x='country',data=most_cont,palette="Blues_d")
plt.xticks(rotation=45)
plt.ylabel('');
plt.xlabel('')
plt.tight_layout()

from mpl_toolkits.basemap import Basemap
concap = pd.read_csv('../input/world-capitals-gps/concap.csv')
concap.head()

def reg(x):if x=='Russia':res = 'Russian Federation'else:res=xreturn res
concap['CountryName'] = concap['CountryName'].apply(reg)data_full = pd.merge(concap[['CountryName', 'CapitalName', 'CapitalLatitude', 'CapitalLongitude']],\suic_sum,left_on='CountryName',right_on='country')

在地图上考虑一下。我要提醒你,许多大(按人口)国家不包括在这个数据集中。

def mapWorld(col1,size2,title3,label4,metr=100,colmap='hot'):m = Basemap(projection='mill',llcrnrlat=-60,urcrnrlat=70,\llcrnrlon=-110,urcrnrlon=180,resolution='c')m.drawcoastlines()m.drawcountries()m.drawparallels(np.arange(-90,91.,30.))m.drawmeridians(np.arange(-90,90.,60.))lat = data_full['CapitalLatitude'].valueslon = data_full['CapitalLongitude'].valuesa_1 = data_full[col1].valuesif size2:a_2 = data_full[size2].valueselse: a_2 = 1m.scatter(lon, lat, latlon=True,c=a_1,s=metr*a_2,linewidth=1,edgecolors='black',cmap=colmap, alpha=1)cbar = m.colorbar()cbar.set_label(label4,fontsize=30)plt.title(title3, fontsize=30)plt.show()
sns.set(font_scale=1.5)
plt.figure(figsize=(15,15))
mapWorld(col1='suicides_no', size2=False,title3='Suicide count',label4='',metr=300,colmap='viridis')

与地图比较-人均GDP(美元)

data_full = pd.merge(concap[['CountryName', 'CapitalName', 'CapitalLatitude', 'CapitalLongitude']],\data,left_on='CountryName',right_on='country')
plt.figure(figsize=(15,15))
mapWorld(col1='gdp_per_capita ($)', size2=False,title3='GDP ($)',label4='',metr=200,colmap='viridis')

考虑具有性别差异的相同条形图:

suic_sum_m = data['suicides_no'].groupby([data['country'],data['sex']]).sum()
suic_sum_m = suic_sum_m.reset_index().sort_index(by='suicides_no',ascending=False)
most_cont_m = suic_sum_m.head(10)
most_cont_m.head(10)
fig = plt.figure(figsize=(20,5))
plt.title('Count of suicides for 31 years.')
sns.set(font_scale=1.5)
sns.barplot(y='suicides_no',x='country',hue='sex',data=most_cont_m,palette='Set2');
plt.ylabel('Count of suicides')
plt.tight_layout()


将此与统计数据进行比较-自杀/10万人。

suic_mean = pd.DataFrame(data['suicides/100k pop'].groupby(data['country']).mean())
suic_mean = suic_mean.reset_index()
suic_mean_most = suic_mean.sort_index(by='suicides/100k pop',ascending=False).head(8)fig = plt.figure(figsize=(15,5))
plt.title('suicides/100k pop.')
#sns.set(font_scale=1.5)
sns.barplot(y='suicides/100k pop',x='country',data=suic_mean_most,palette="GnBu_d");
plt.ylabel('suicides/100k pop')
plt.tight_layout()


让我们将数据分为旧数据和新数据:

data_past = data[data['year']<2000]
suic_mean = pd.DataFrame(data_past['suicides/100k pop'].groupby(data_past['country']).mean())
suic_mean = suic_mean.reset_index()
data_full = pd.merge(concap[['CountryName', 'CapitalName', 'CapitalLatitude', 'CapitalLongitude']],\suic_mean,left_on='CountryName',right_on='country')
plt.figure(figsize=(15,15))
mapWorld(col1='suicides/100k pop', size2=False,title3='Suicides/100k pop before 2000 year',label4='',metr=300,colmap='viridis')

data_last = data[data['year'] > 2000]
suic_mean = pd.DataFrame(data_last['suicides/100k pop'].groupby(data_last['country']).mean())
suic_mean = suic_mean.reset_index()
data_full = pd.merge(concap[['CountryName', 'CapitalName', 'CapitalLatitude', 'CapitalLongitude']],\suic_mean,left_on='CountryName',right_on='country')
plt.figure(figsize=(15,15))
mapWorld(col1='suicides/100k pop', size2=False,title3='Suicides/100k pop after 2000 year',label4='',metr=300,colmap='viridis')


在这里,我们可以看到按年份分布的自杀人数:

suic_sum_yr = pd.DataFrame(data['suicides_no'].groupby(data['year']).sum())
suic_sum_yr = suic_sum_yr.reset_index().sort_index(by='suicides_no',ascending=False)
most_cont_yr = suic_sum_yr
fig = plt.figure(figsize=(30,10))
plt.title('Count of suicides for years.')
sns.set(font_scale=2.5)
sns.barplot(y='suicides_no',x='year',data=most_cont_yr,palette="OrRd");
plt.ylabel('Count of suicides')
plt.xlabel('')
plt.xticks(rotation=45)
plt.tight_layout()


什么是最多的年龄?

suic_sum_yr = pd.DataFrame(data['suicides_no'].groupby([data['generation'],data['year']]).sum())
suic_sum_yr = suic_sum_yr.reset_index().sort_index(by='suicides_no',ascending=False)
most_cont_yr = suic_sum_yr
fig = plt.figure(figsize=(30,10))
plt.title('The distribution of suicides by age groups')sns.set(font_scale=2)
sns.barplot(y='suicides_no',x='year',hue='generation',data=most_cont_yr,palette='deep');
plt.ylabel('Count of suicides')
plt.xticks(rotation=45)
plt.tight_layout()

data_new = data[data['year']<2000]
title_map = 'Generation suicides before 2000 year'
data_gener = pd.DataFrame(data_new['suicides_no'].groupby([data_new['generation'],data_new['country']]).sum()).reset_index()
age_max = pd.DataFrame(data_gener['suicides_no'].groupby(data_gener['country']).max()).reset_index()
gen_full = pd.merge(age_max,data_gener,left_on=['suicides_no','country'],right_on=['suicides_no','country'])data_full = pd.merge(concap[['CountryName', 'CapitalName', 'CapitalLatitude', 'CapitalLongitude']],\gen_full,left_on='CountryName',right_on='country')
data_full.dropna(inplace=True)def gener(x):dic_t = {'Generation X':100,'Silent':200,'G.I. Generation':300,'Boomers':400,'Millenials':500,'Generation Z':600}return dic_t[x]
data_full.generation = data_full.generation.apply(gener)
print(" Generation X:100 \n Silent:200 \n G.I. Generation:300 \n Boomers:400 \n Millenials:500 \n Generation Z:600")
plt.figure(figsize=(15,15))
mapWorld(col1='generation', size2='suicides_no', title3=title_map,label4='',metr=0.01,colmap='viridis')
 Generation X:100 Silent:200 G.I. Generation:300 Boomers:400 Millenials:500 Generation Z:600

data_new = data[data['year']>=2000]
title_map = 'Generation suicides after 2000 year'
data_gener = pd.DataFrame(data_new['suicides_no'].groupby([data_new['generation'],data_new['country']]).sum()).reset_index()
age_max = pd.DataFrame(data_gener['suicides_no'].groupby(data_gener['country']).max()).reset_index()
gen_full = pd.merge(age_max,data_gener,left_on=['suicides_no','country'],right_on=['suicides_no','country'])data_full = pd.merge(concap[['CountryName', 'CapitalName', 'CapitalLatitude', 'CapitalLongitude']],\gen_full,left_on='CountryName',right_on='country')
data_full.dropna(inplace=True)def gener(x):dic_t = {'Generation X':100,'Silent':200,'G.I. Generation':300,'Boomers':400,'Millenials':500,'Generation Z':600}return dic_t[x]
data_full.generation = data_full.generation.apply(gener)
print(" Generation X:100 \n Silent:200 \n G.I. Generation:300 \n Boomers:400 \n Millenials:500 \n Generation Z:600")
plt.figure(figsize=(15,15))
mapWorld(col1='generation', size2='suicides_no', title3=title_map,label4='',metr=0.01,colmap='viridis')


来源

俄罗斯的不到21岁的大佬,果断follow了

在kaggle 果然有很多牛人

kaggle (自杀分析)相关推荐

  1. 基于R语言的Kaggle案例分析-泰坦尼克号

    背景 泰坦尼克号由位于北爱尔兰贝尔法斯特的哈兰·沃尔夫船厂兴建,是当时最大的客运轮船,由于其规模相当一艘现代航空母舰,因而号称"上帝也沉没不了的巨型邮轮".在泰坦尼克号的处女航中, ...

  2. python 数据分析 电信_基于Python的电信客户流失分析和预测

    一.项目背景 电信服务是生活中常见的消费服务,在现代社会,凡是使用手机打电话,或者在家看电视,都必须通过电信运营商提供的通话.网络等服务才能实现.本文采用来自kaggle平台的电信客户数据集,来分析人 ...

  3. kaggle自动驾驶竞赛铜牌总结:Peking University/Baidu - Autonomous Driving—(Part 1)

    前言 前段时间打了kaggle上的"Peking University/Baidu - Autonomous Driving"比赛,竞赛时间为三个月,前期一直在银牌区域,但到了比赛 ...

  4. 机器学习案例学习【每周一例】之 Titanic: Machine Learning from Disaster

     下面一文章就总结几点关键: 1.要学会观察,尤其是输入数据的特征提取时,看各输入数据和输出的关系,用绘图看! 2.训练后,看测试数据和训练数据误差,确定是否过拟合还是欠拟合: 3.欠拟合的话,说明模 ...

  5. 泰坦尼克号数据集_机器学习-预测泰坦尼克号生存概率

    一.项目背景概述 泰坦尼克号沉船是历史上最有名的沉船事件之一:1912年4月15日,在她的第一次航行中,泰坦尼克号与冰山相撞后沉没.船上乘客和机组人员2224名,其中1502人死亡.这场耸人听闻的悲剧 ...

  6. 自然语言处理nlp全领域综述

    ************************* 精华总结,时间不够只看这个部分就行了 1.书和课 Michael Collins:COMS W4705: Natural Language Proc ...

  7. Python人工智能基础到实战课程-北方网视频

    ** Python人工智能基础到实战课程 ** 课程主要分为6大模块,带领大家逐步进步人工智能与数据科学领域. 第一阶段:Python语言及其数据领域工具包使用 本阶段旨在帮助大家快速掌握数据领域最常 ...

  8. 数据分析案例:全球星巴克数量统计

    案例概述 本文为博主的数据分析学习笔记.此篇文章介绍使用星巴克数据统计中国和美国的星巴克数量,并统计中国各个省份的星巴克数量并作图. 本案例涉及到的知识点 Pandas之DataFrame分组 Pan ...

  9. 【keras】3. 泰坦尼克号数据集处理与预测

    [参考:1-01 实战 泰坦尼克号沉船人员获救案例 数据清洗_哔哩哔哩_bilibili] [参考:Titanic - Machine Learning from Disaster | Kaggle] ...

最新文章

  1. 扛住 100 亿次请求?我们来试一试
  2. IIS设置Access-Control-Allow-Origin
  3. HDU - 5572 An Easy Physics Problem(几何-碰撞问题)
  4. linux shell trap的使用
  5. solaris系统关闭服务器,solaris系统中关闭和开启系统服务ftp,telnet,ssh,sendmail...
  6. jquery插件之无缝循环新闻列表
  7. 图像sobel梯度详细计算过程_数字图像处理(第十章)
  8. Java 算法 学做菜
  9. 设置hive的执行引擎_0506-如何将Hue4.0版本中默认执行引擎设置为Hive而非Impala
  10. Git 分支相关操作
  11. 对路径XXX的访问被拒绝(文件操作权限)的解决方法
  12. 用python做股票因子分析_因子分析(by+alphalens)
  13. Unity编辑器修改图片的大小
  14. Instagram后端架构
  15. 8c sql手册 五
  16. 最新分布式存储解决方案zData将于闪存论坛上正式发布!
  17. Keil MDK “Ivalid Rom Table”,“Device could not be powered up”的解决办法
  18. c++中的smart pointer四个智能指针简单介绍
  19. 用python画佩奇_使用python画个小猪佩奇的示例代码
  20. 杭州和深圳哪里更适合定居?两个都离不开互联网

热门文章

  1. 18春东师计算机应用基础,东师计算机应用基础18春在线作业31.docx
  2. 全志 强制隐藏导航栏状态栏 Patch
  3. phpcms mysql 事务_phpcms某站点MySQL报错注入
  4. wps右键新建里面没有word和excel_wps常用的基本操作方法
  5. c++ map 析构函数_说说C++的虚析构函数
  6. 民用建筑工程给水排水设计深度图样_「安装工程识图」建筑给水排水施工图的识读方法...
  7. Java的OOP三大特征之一——多态
  8. wmic windows
  9. EntityFramework 学习: Console中初见
  10. 重温SQL——行转列,列转行