泰坦尼克号事实,用数据还原真相——Titanic获救率分析(用pyecharts)

泰坦尼克号获救率数据分析报告,用数据揭露真相。

一,船上乘客生存率分析报告

泰坦尼克号生存率仅有38%的,可见此次事件救援不力,救生艇严重不足,且泰坦尼克号号撞得是冰山,海水冷,没有救生艇,在水里冻死的乘客不少。

二,哪个年龄段存活率最高(青年人(18岁以下),中年人(18到50岁),老年人(50岁以上))

数据分析:看图我们得到,年轻人获救率最高50%,老年人获救率最低0.39,中年人死亡人数最多。发生生命危险时,自救能力最强的中年人还是起到了中流砥柱的作用。不要再叫猥琐油腻中年男了哦,他们才是社会的扛把子。

3,女性乘客和男性乘客获救率分析

从图中可以看到,女性的获救率远远高于男性,女士优先不是一句空话。

4,船上一等舱二等舱三等舱的乘客贫富差距情况

从图中可以看出,一等舱占全船24%的人数,消费额时全船的67%的金额。嗯,符合著名的二八法则,80%的财富掌握在20%的人手里。

5,舱位和获救率关系分析

从图中可以看出,一等舱的获救率时三等舱的三倍左右,说明发生沉船事故时,一等舱先上救生艇的,有钱能使鬼推磨,古人诚不欺我也。

附上本人源代码:

import pandas as pdimport matplotlib.pyplot as plt#导入绘制函数import numpy as np#导入数组库from pylab import *#转义汉字mpl.rcParams[‘font.sans-serif‘] = [‘SimHei‘]#mpl.rcParams[‘axes.unicode_minus‘] = False#

from pyecharts import Pie,Bar,Gauge,EffectScatter,WordCloud,Map,Grid,Line,Timelineimport random

df_Titanic = pd.read_csv(‘Titanic.csv‘)# print(df_Titanic)

#1,一获救率是多少def Rescued_rate():

t1 = df_Titanic[‘Survived‘].count()    t2 = df_Titanic[df_Titanic[‘Survived‘]==1][‘Survived‘].count()    t3=round(t2/t1,2)    print(‘一,存活率为:{}‘.format(t3))

#Titanic存活率可视化    attr = [‘获救率‘,‘死亡率‘ ]    v1 = [t3,(1-t3)]    pie = Pie(‘Titanic生存率报告‘)    pie.add(‘生存率‘, attr, v1, is_label_show=True)    pie.render(‘TItanic_1.html‘)

Rescued_rate()#2,哪个年龄段存活率最高def age_survived():    #18岁以下的人存活率    young_survived = df_Titanic[(df_Titanic[‘Age‘]<=18)&(df_Titanic[‘Survived‘]==1)][‘Survived‘].count()    young_all = df_Titanic[df_Titanic[‘Age‘]<=18][‘Survived‘].count()    #18岁到50岁的存活率    middle_survived = df_Titanic[(df_Titanic[‘Age‘]<50)&(df_Titanic[‘Age‘]>18)&(df_Titanic[‘Survived‘]==1)][‘Survived‘].count()    middle_all = df_Titanic[(df_Titanic[‘Age‘]<50)&(df_Titanic[‘Age‘]>18)][‘Survived‘].count()    #50岁以上乘客的存活率    old_survived = df_Titanic[(df_Titanic[‘Age‘] >= 50) & (df_Titanic[‘Survived‘] == 1)][‘Survived‘].count()    old_all = df_Titanic[df_Titanic[‘Age‘] >= 50][‘Survived‘].count()    #三者的生存率    young_odds = round(young_survived/young_all,2)    middle_odds = round(middle_survived/middle_all,2)    old_odds = round(old_survived/old_all,2)    # list=[young_odds,middle_odds,old_odds]    # max_odds = max(list)    # df_odds = pd.Series([young_odds,middle_odds,old_odds])    # df_odds.plot(kind =‘bar‘)    # plt.show()

print(‘二,年轻人,中年人,老年人生存几率分别为{},{},{}‘.format(young_odds,middle_odds,old_odds))    #获救率可视化对比图    attr = [‘青少年‘, ‘中年人‘, ‘老年人‘]    v1 = [young_odds,middle_odds,old_odds]    v2 = [(1-young_odds), (1-middle_odds), (1-old_odds)]    v3 = [young_all,middle_all,old_all]

bar = Bar(‘Titanic不同年龄段获救率对比‘)

bar.add(‘获救率‘, attr, v1, mark_point=[‘average‘,‘max‘,‘min‘], is_stack=True)    bar.add(‘死亡率‘, attr, v2, mark_line=[‘min‘, ‘max‘], is_stack=True)  # stack是否堆叠显示    bar.add(‘人数‘,attr,v3,mark_point=[‘average‘,‘max‘,‘min‘],is_stack=False)    bar.render(‘Titanic_2.html‘)

age_survived()

#3,女性存活率和男性存活率哪个高def Rescued_rate_man():    s_man =df_Titanic[(df_Titanic[‘Sex‘]==‘male‘)&(df_Titanic[‘Survived‘]==1)][‘Sex‘].count()#获救的男人数    c_man = df_Titanic[df_Titanic[‘Sex‘]==‘male‘][‘Sex‘].count()#男人总数    rescued_man = round(s_man/c_man,2)#男人获救率    s_woman = df_Titanic[(df_Titanic[‘Sex‘]==‘female‘)&(df_Titanic[‘Survived‘]==1)][‘Sex‘].count()    c_woman = df_Titanic[df_Titanic[‘Sex‘]==‘female‘][‘Sex‘].count()    rescued_woman = round(s_woman/c_woman,2)    if rescued_woman > rescued_man:        print(‘三,女性获救率高‘)    else:        print(‘三,男性获救率高‘)

#    attr = [‘女性‘, ‘男性‘]    v1 = [rescued_woman,rescued_man]    # v2 = [(1 - rescued_woman), (1 - rescued_man)]    v3 = [c_woman,c_man]

bar = Bar(‘Titanic——男性女性获救率报告‘)

bar.add(‘获救率‘, attr, v1, mark_point=[‘average‘, ‘max‘, ‘min‘], is_stack=True)    # bar.add(‘死亡率‘, attr, v2,mark_point=[‘average‘, ‘max‘, ‘min‘],  is_stack=True)    bar.add(‘人数‘, attr, v3,mark_point=[‘average‘, ‘max‘, ‘min‘], is_stack=False)# stack是否堆叠显示    bar.render(‘Titanic_3.html‘)

Rescued_rate_man()

#船上的贫富差距def wealth_gap():    #一等舱的人均消费    consume_one = round(df_Titanic[df_Titanic[‘Pclass‘]==1][‘Fare‘].mean(),2)    consume_two = round(df_Titanic[df_Titanic[‘Pclass‘]==2][‘Fare‘].mean(),2)    consume_three = round(df_Titanic[df_Titanic[‘Pclass‘]==3][‘Fare‘].mean(),2)    consume_std = round(df_Titanic[‘Fare‘].std(),2)    #一等舱二等舱三等舱的人数    person_one = df_Titanic[df_Titanic[‘Pclass‘]==1][‘Survived‘].count()    person_two = df_Titanic[df_Titanic[‘Pclass‘] == 2][‘Survived‘].count()    person_three = df_Titanic[df_Titanic[‘Pclass‘] == 3][‘Survived‘].count()    #一等舱二等舱三等舱的消费总额    consumeall_one =df_Titanic[df_Titanic[‘Pclass‘]==1][‘Fare‘].sum()    consumeall_two = df_Titanic[df_Titanic[‘Pclass‘] == 2][‘Fare‘].sum()    consumeall_three = df_Titanic[df_Titanic[‘Pclass‘] == 3][‘Fare‘].sum()

print(‘四,一等舱人均消费:{},二等舱人均消费:{},三等舱人均消费:{},人均消费标准差:{}‘.format(consume_one,consume_two,consume_three,consume_std))

#可视化    attr = [‘一等舱‘, ‘二等舱‘,‘三等舱‘]    v2 = [consume_one,consume_two,consume_three]    v1 = [person_one,person_two,person_three]    v3 = [consumeall_one,consumeall_two,consumeall_three]

bar = Bar(‘Titanic——贫富差距报告‘)

bar.add(‘人均消费‘, attr, v2, mark_point=[‘average‘, ‘max‘, ‘min‘], is_stack=False)    bar.add(‘舱位人数‘, attr, v1,mark_point=[‘average‘, ‘max‘, ‘min‘],  is_stack=False)  # stack是否堆叠显示    bar.add(‘消费总额‘, attr, v3, mark_point=[‘average‘, ‘max‘, ‘min‘],is_stack=False)    bar.render(‘Titanic_4.html‘)

wealth_gap()

#头等舱的生存率是否高于三等舱

def Survival_comparison():    #一等舱的获救率    s1=df_Titanic[(df_Titanic[‘Pclass‘]==1)&(df_Titanic[‘Survived‘]==1)][‘Survived‘].count()    c1 = df_Titanic[df_Titanic[‘Pclass‘]==1][‘Survived‘].count()    svl_1 = round(s1/c1,2)    #二等舱的获救率    s2 = df_Titanic[(df_Titanic[‘Pclass‘] == 2) & (df_Titanic[‘Survived‘] == 1)][‘Survived‘].count()    c2 = df_Titanic[df_Titanic[‘Pclass‘] == 2][‘Survived‘].count()    svl_2 = round(s2 / c2,2)    #三等舱的获救率    s3 = df_Titanic[(df_Titanic[‘Pclass‘] == 3) & (df_Titanic[‘Survived‘] == 1)][‘Survived‘].count()    c3 = df_Titanic[df_Titanic[‘Pclass‘] == 3][‘Survived‘].count()    svl_3 = round(s3 / c3,2)    if svl_1>svl_2>svl_3:        print(‘五,一等舱二等舱三等舱的获救率分别为:{},{},{},一等舱获救率最高‘.format(svl_1,svl_2,svl_3))    else:        print(‘获救率和舱位关系不大‘)    #舱位和获救率的关系    attr = [‘一等舱‘, ‘二等舱‘, ‘三等舱‘]    v2 = [c1/100, c2/100,c3/100]    v1 = [svl_1,svl_2,svl_3]

bar = Bar(‘Titanic——舱位和获救率关系‘)

bar.add(‘获救率‘, attr, v1, mark_point=[‘average‘, ‘max‘, ‘min‘], is_stack=False)    bar.add(‘舱位人数(/百人)‘, attr, v2, mark_point=[‘average‘, ‘max‘, ‘min‘], is_stack=False)  # stack是否堆叠显示    bar.render(‘Titanic_4.html‘)

Survival_comparison()#6,带家属的乘客占的比率,有家属是否会影响生存率def family_survived():    family_yes = df_Titanic[(df_Titanic[‘SibSp‘]==1)|(df_Titanic[‘Parch‘]==1)][‘Survived‘].count()#带家属的乘客人数    family_no = df_Titanic[(df_Titanic[‘SibSp‘] == 0) & (df_Titanic[‘Parch‘] == 0)][‘Survived‘].count()#不带家属的乘客人数    family_all = df_Titanic[‘Survived‘].count()    family_odds = round(family_yes/family_all,2)    #带家属获救的人数    family_survive = df_Titanic[(df_Titanic[‘SibSp‘]==1)|(df_Titanic[‘Parch‘]==1)&(df_Titanic[‘Survived‘]==1)][‘Survived‘].count()    #不带家属获救的人数    family_no_survive = df_Titanic[(df_Titanic[‘SibSp‘]==0)&(df_Titanic[‘Parch‘]==0)&(df_Titanic[‘Survived‘]==1)][‘Survived‘].count()

#带家属获救的几率    family_survive_odds = round(family_survive/family_yes,2)    #不带家属获救的几率    familyno_survive_odds = round(family_no_survive / family_no, 2)    if family_survive_odds>familyno_survive_odds:        print(‘六,带家属的生存率为{},不带家属的生存率为{},带家属的生存率高一些‘.format(family_survive_odds,familyno_survive_odds))    else:        print(‘带家属的乘客获救几率和其他乘客一样‘)

family_survived()

#七,从哪个港口登陆是否影响生存率def port_survived():    #S口进入获救的人数    S_survived = df_Titanic[(df_Titanic[‘Survived‘]==1)&(df_Titanic[‘Embarked‘]==‘S‘)][‘Survived‘].count()    #S口进入的总人数    S_all = df_Titanic[df_Titanic[‘Embarked‘]==‘S‘][‘Survived‘].count()    #C口进入获救的人数    C_survived = df_Titanic[(df_Titanic[‘Survived‘]==1)&(df_Titanic[‘Embarked‘]==‘C‘)][‘Survived‘].count()    #C口进入的总人数    C_all = df_Titanic[df_Titanic[‘Embarked‘] == ‘C‘][‘Survived‘].count()    #Q口进入获救的人数    Q_survived = df_Titanic[(df_Titanic[‘Survived‘]==1)&(df_Titanic[‘Embarked‘]==‘Q‘)][‘Survived‘].count()    #Q口进入的总人数    Q_all = df_Titanic[df_Titanic[‘Embarked‘] == ‘Q‘][‘Survived‘].count()    #从S,C,Q,进入生存的几率    s_odds = round(S_survived/S_all,2)    c_odds = round(C_survived/C_all,2)    q_odds = round(Q_survived/Q_all,2)    print(‘七,s,c,q港口进入的乘客的生存率分别为{},{},{}‘.format(s_odds,c_odds,q_odds))port_survived()

原文地址:https://www.cnblogs.com/chaojiyingxiong/p/9689795.html

时间: 2024-11-02 09:45:02

泰坦尼克号事实,用数据还原真相——Titanic获救率分析(用pyecharts)的相关文章

用Mysqldump实现全库备份+binlog的数据还原

随着业务量的增长,数据库也是成倍增长,原来一直使用的全库备份不再适合现在的数据库了,动辄就备份10G-20G,太占用磁盘空间,所以就考虑用更简洁更快速更节省磁盘空间的备份方法,这就想到了使用binlog日志来进行备份和恢复,下面是具体实施的方法: 环境介绍: 操作系统:Centos 7.2 数据库:Mysql 5.6 一.安装Mysql和改配置文件 安装就不具体介绍了,网上教程很多,配置文件需要添加以下选项: vim /etc/my.cnf log_bin = mysql-binlog    #

MySQL之XtraBackup实现完全备份、增量备份、数据还原

XtraBackup:是一个开源的免费的备份工具,支持热备份,对Innodb和MyISam存储引擎都支持备份,Innodb为热备.MyISam为温备份.且支持将备份结果进行压缩存放.支持部分备份(如只备份某个库或者某个库中的某个表).支持即时点数据还原.支持完全备份.支持增量备份.支持并行备份.流式备份.并行备份压缩.支持将单个表数据从一个数据库中导出然后导入另一个数据库中.支持将表恢复到一个不同的数据库server上 mylvmbackup:是一款可以实现自动化对LVM逻辑卷上的数据实现几乎热

NetAnalyzer笔记 之 九 简单的HTTP数据还原

[创建时间:2016-05-12 00:19:00] NetAnalyzer下载地址 在NetAnalyzer2016中加入了一个HTTP分析功能,很过用户对此都很感兴趣,那么今天写一下具体的实现方式,对我自己也算是一个总结吧,好了,废话就不多少了,直接开始吧. 本文是专注于HTTP数据的分析,所以前期数据包采集相关的内容并不会本文不会涉及,相关内容可以见 NetAnalyzer 笔记 四 在这边默认你已经获取到了http数据报文. 一,提取TCP会话数据 通过TCP/IP协议知道,我们可以通过

5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

 1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制. 3 创建固定集合使用命令: db.createCollection("collectionName",{capped:true,size:100000,max:100}); size:指定集合大小,单位为KB,max指定文档的数量 当指定文档数量上限时,

透过数据看真相:手游市场趋势报告

"机"不离手是大多数人的生活状态,甚至有一个用手机形容真爱的段子:"在一起时不看手机,不在一起时秒回信息,就算现代人的真爱了."随着手机在日常生活中地位的提升,手机游戏也逐渐成为年轻人日常生活不可或缺的一部分. 在7月31日的网易云创大会游戏论坛上,来自 Talking Data华南区业务负责人黎丽华给大家带来了"透过数据看真相:手游市场趋势报告"的主题分享.通过一些鲜活的数据向大家展示了手游现场的现状.玩家类型以及付费率高的游戏有哪些.移动游戏

Titanic幸存预测分析(Kaggle)

分享一篇kaggle入门级案例,泰坦尼克号幸存遇难分析. 参考文章: 技术世界,原文链接 http://www.jasongj.com/ml/classification/ 案例分析内容: 通过训练集分析预测什么人可能生还,并对测试集中乘客做出预测判断 案例分析 加载包 1 library(dplyr) #bind_rows() 2 library(ggplot2) #绘图 3 library(ggthemes) 4 library(InformationValue) #计算WOE和IV 5 l

sql server 数据页缓冲区的内存瓶颈分析

查看数据库的计数器: SELECT * FROM  sys.dm_os_performance_counters **也可以使用系统的性能计监测器查看. 右键图表-> 添加计数器. 添加要监控的项 计数器中一些项的说明 : http://www.cnblogs.com/flysun0311/archive/2012/02/29/2373390.html 资料: http://www.cnblogs.com/Joe-T/archive/2012/07/31/2617060.html http://

利用大数据技术实现日志记录与分析

整体思路 整体分三步: 1.记录日志 1.记录日志采用UDP协议写入大数据平台,大数据平台采用Hive表来存储日志信息. 2.写入日志的工作,封装了一个Auto.Lib3.Dealer.Log.dll,这个dll要依赖ZooKeeperNet.dll 和 log4net.dll.这三个dll文件地址如下: dll文件 TFS上路径 Auto.Lib3.Dealer.Log.dll $/dealer/MCH/CommonLib/Auto.Lib3.Logging.dll ZooKeeperNet.

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot