Titanic - 1

本周原想探究一下seaborn绘图方面的运用,发现用在实际案例中更有效果,遂直接用Kaggel 经典的Titanic案例的描述性分析部分进行研究。以下是案例的其中一部分,模型探究有待补充与更新。

复习一下,完成这篇分析报告需要进行的几个步骤:
一、导入数据包与数据集
二、数据分析
1、总体预览
2、描述性统计分析:使用统计学与绘图,初步了解数据之间相关性,为构造特征工程和模型建立做准备
3、数据清洗
4、建模与优化:
1)参数优化;
2)训练模型;
3)交叉验证
5、预测

本文先进行数据分析前三步:

一、导入数据包和数据集

%matplotlib inline

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
train=pd.read_csv(r'/Users/----/Documents/train.csv')
test=pd.read_csv(r'/Users/----/Documents/test.csv')
PassengerId=test['PassengerId']
all_data=pd.concat([train,test],ignore_index=True)  #不按索引进行同字段标题的追加,同时做到重新给索引负值

二、数据分析

1、数据预览:
train.head()
train.info()

PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S

image.png
2、数据初步分析:使用统计学与绘图

训练集幸存人数与遇难人数汇总
1)sex:性别与生存率关系——女性幸存率远高于男性

train['Survived'].value_counts()
#分类变量(sex)和0-1变量(survived)的关系
sns.barplot(x='Sex',y='Survived',data=train)


image.png

2)Pclass:客舱等级与幸存率关系——乘客社会等级越高生存率越高

sns.barplot(x='Pclass',y='Survived',data=train)
image.png

3)SibSp:旁系亲属人数适中的乘客幸存率更高
sns.barplot(x='SibSp',y='Survived',data=train)
image.png

4)Parch 直系亲属(父母&子女)数量适中的幸存率更高

sns.barplot(x='Parch',y='Survived',data=train)
image.png

5) 从不同生还情况密度图看出,在年龄15岁左侧,生还率有明显差别,密度图非交叉区域较大,其他年龄段差别不明显。可以考虑将年龄偏小的区域分离出来。

facet=sns.FacetGrid(train,hue='Survived',aspect=2)
facet.map(sns.kdeplot,'Age',shade=True)
facet.set(xlim=(0,train['Age'].max()))
facet.add_legend()
plt.xlabel('Age')
plt.ylabel('density')
image.png

6)Embarked:登岗港口与生存情况分析:C地生存率更高,可以考虑作为模型特征。

sns.countplot('Embarked',data=train)    #登陆港口不同的数量分布
image.png
sns.countplot('Embarked',hue='Survived',data=train)   #登陆港口不通的生存数量对比
image.png

7)Title:不同称呼的乘客幸存率不同
新增title特征,从姓名中提取乘客称呼,归为六类:

all_data['Title']=all_data['Name'].apply(lambda x:x.split(',')[1].split('.')[0].strip()) 
#选择称呼中的‘姓’:‘,’分隔后第二位置的部分,再次用‘.’分隔选择第一个位置单词.也就是姓氏的第一个词
Title_Dict={}
Title_Dict.update(dict.fromkeys(['Capt','Col','Major','Dr','Rev'],'Officer'))
Title_Dict.update(dict.fromkeys(['Don','Sir','Dona','the Countess','Lady'],'Royalty'))
Title_Dict.update(dict.fromkeys(['Mme','Ms','Mrs'],'Mrs'))
Title_Dict.update(dict.fromkeys(['Mlle','Miss'],'Miss'))
Title_Dict.update(dict.fromkeys(['Mr'],'Mr'))  
Title_Dict.update(dict.fromkeys(['Master','Jonkheer'],'Master'))
all_data['Title']=all_data['Title'].map(Title_Dict)   
sns.barplot(x='Title',y='Survived',data=all_data)
image.png

8)FamilySize:家庭成员数量2~4乘客幸存率最高
新增FamilyLabel 特征,计算familysize=Parch+SibSp+1,再分成三类

all_data['FamilySize']=all_data['SibSp']+all_data['Parch']+1  #家庭成员数量:旁系亲属+直系亲属+自己
sns.barplot(x='FamilySize',y='Survived',data=all_data)
image.png
def Fam_label(s):
    if (s>=2)&(s<=4):
        return 2   #小家庭
    elif((s>4)&(s<=7)|(s==1)):
        return 1   
    elif(s>7):
        return 0   
all_data['FamilyLabel']=all_data['FamilySize'].map(Fam_label)
sns.barplot(x='FamilyLabel',y='Survived',data=all_data)
image.png
all_data['FamilyLabel']=all_data['FamilySize'].apply(Fam_label)   #map 和 apply 什么区别。。。
all_data['FamilyLabel'][:5]

9)Deck :不同甲板的乘客幸存率不同
新增Deck特征,先把Cabin空缺填充为unknown,再提取Cabin中的首字母构成乘客甲板号

#不同甲板乘客生存率不同
all_data['Cabin']=all_data['Cabin'].fillna('Unknown')  #空白填充unknown
all_data['Deck']=all_data['Cabin'].str.get(0)             #提取首字母作为标签
sns.barplot(x="Deck",y='Survived',data=all_data)     
image.png

10)TicketGroup:与2~4人工票号数的乘客幸存率更高

#新增生存率特征,统计每个乘客共票号数
Ticket_Count=dict(all_data['Ticket'].value_counts())
all_data['TicketGroup']=all_data['Ticket'].apply(lambda x:Ticket_Count[x])
sns.barplot(x='TicketGroup',y='Survived',data=all_data)
image.png

按照生存率把TickedGroup分三类

#把 ticket_counts 分成三类

def Ticket_Label(s):
    if (s>=2)&(s<=4):
        return 2   #小家庭
    elif((s>4)&(s<=8))|(s==1):
        return 1   #大家庭
    elif(s>8):
        return 0   #单身出行
all_data['TicketGroup']=all_data['TicketGroup'].map(Ticket_Label)
sns.barplot(x='TicketGroup',y='Survived',data=all_data)
image.png

以上主要对数据进行描述性分析的步骤。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 探索数据集-泰坦尼克号数据 一、读取数据 import pandas as pdimport numpy as n...
    杨小彤阅读 818评论 0 1
  • 一 经典又兼具备趣味性的Kaggle案例[泰坦尼克号问题 画多图 数据探索 进行特征选择时,判断每一个特征(连续,...
    maocy阅读 1,013评论 0 0
  • 如果对问题更感兴趣,可以跳过引言,直接看第二部分 数据处理, Github地址。 引言 最近这段时间使用机器学习分...
    漫步寻路阅读 6,606评论 3 21
  • 大家好,今天也是被生活安排地明明白白的一天。 来龙去脉不细说了,总而言之就是根据赌约我要完成Kaggle里一个比赛...
    娜某人阅读 986评论 0 1
  • 亲你想了解你的皮肤吗? 你想打造一个完美精致的妆容吗? 你想让你的皮肤【光透亮白】吗? 你想让你的年龄倒着长吗? ...
    张兴蓉阅读 1,373评论 0 1