kaggle (自杀分析)
今天无聊又看看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 (自杀分析)相关推荐
- 基于R语言的Kaggle案例分析-泰坦尼克号
背景 泰坦尼克号由位于北爱尔兰贝尔法斯特的哈兰·沃尔夫船厂兴建,是当时最大的客运轮船,由于其规模相当一艘现代航空母舰,因而号称"上帝也沉没不了的巨型邮轮".在泰坦尼克号的处女航中, ...
- python 数据分析 电信_基于Python的电信客户流失分析和预测
一.项目背景 电信服务是生活中常见的消费服务,在现代社会,凡是使用手机打电话,或者在家看电视,都必须通过电信运营商提供的通话.网络等服务才能实现.本文采用来自kaggle平台的电信客户数据集,来分析人 ...
- kaggle自动驾驶竞赛铜牌总结:Peking University/Baidu - Autonomous Driving—(Part 1)
前言 前段时间打了kaggle上的"Peking University/Baidu - Autonomous Driving"比赛,竞赛时间为三个月,前期一直在银牌区域,但到了比赛 ...
- 机器学习案例学习【每周一例】之 Titanic: Machine Learning from Disaster
下面一文章就总结几点关键: 1.要学会观察,尤其是输入数据的特征提取时,看各输入数据和输出的关系,用绘图看! 2.训练后,看测试数据和训练数据误差,确定是否过拟合还是欠拟合: 3.欠拟合的话,说明模 ...
- 泰坦尼克号数据集_机器学习-预测泰坦尼克号生存概率
一.项目背景概述 泰坦尼克号沉船是历史上最有名的沉船事件之一:1912年4月15日,在她的第一次航行中,泰坦尼克号与冰山相撞后沉没.船上乘客和机组人员2224名,其中1502人死亡.这场耸人听闻的悲剧 ...
- 自然语言处理nlp全领域综述
************************* 精华总结,时间不够只看这个部分就行了 1.书和课 Michael Collins:COMS W4705: Natural Language Proc ...
- Python人工智能基础到实战课程-北方网视频
** Python人工智能基础到实战课程 ** 课程主要分为6大模块,带领大家逐步进步人工智能与数据科学领域. 第一阶段:Python语言及其数据领域工具包使用 本阶段旨在帮助大家快速掌握数据领域最常 ...
- 数据分析案例:全球星巴克数量统计
案例概述 本文为博主的数据分析学习笔记.此篇文章介绍使用星巴克数据统计中国和美国的星巴克数量,并统计中国各个省份的星巴克数量并作图. 本案例涉及到的知识点 Pandas之DataFrame分组 Pan ...
- 【keras】3. 泰坦尼克号数据集处理与预测
[参考:1-01 实战 泰坦尼克号沉船人员获救案例 数据清洗_哔哩哔哩_bilibili] [参考:Titanic - Machine Learning from Disaster | Kaggle] ...
最新文章
- 扛住 100 亿次请求?我们来试一试
- IIS设置Access-Control-Allow-Origin
- HDU - 5572 An Easy Physics Problem(几何-碰撞问题)
- linux shell trap的使用
- solaris系统关闭服务器,solaris系统中关闭和开启系统服务ftp,telnet,ssh,sendmail...
- jquery插件之无缝循环新闻列表
- 图像sobel梯度详细计算过程_数字图像处理(第十章)
- Java 算法 学做菜
- 设置hive的执行引擎_0506-如何将Hue4.0版本中默认执行引擎设置为Hive而非Impala
- Git 分支相关操作
- 对路径XXX的访问被拒绝(文件操作权限)的解决方法
- 用python做股票因子分析_因子分析(by+alphalens)
- Unity编辑器修改图片的大小
- Instagram后端架构
- 8c sql手册 五
- 最新分布式存储解决方案zData将于闪存论坛上正式发布!
- Keil MDK “Ivalid Rom Table”,“Device could not be powered up”的解决办法
- c++中的smart pointer四个智能指针简单介绍
- 用python画佩奇_使用python画个小猪佩奇的示例代码
- 杭州和深圳哪里更适合定居?两个都离不开互联网
热门文章
- 18春东师计算机应用基础,东师计算机应用基础18春在线作业31.docx
- 全志 强制隐藏导航栏状态栏 Patch
- phpcms mysql 事务_phpcms某站点MySQL报错注入
- wps右键新建里面没有word和excel_wps常用的基本操作方法
- c++ map 析构函数_说说C++的虚析构函数
- 民用建筑工程给水排水设计深度图样_「安装工程识图」建筑给水排水施工图的识读方法...
- Java的OOP三大特征之一——多态
- wmic windows
- EntityFramework 学习: Console中初见
- 重温SQL——行转列,列转行