#导入所需的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
% matplotlib inline
#读取Titanic数据
data=pd.read_csv('E:\\Users\\Administrator\\Desktop\\pythonNotebook\\train.csv',index_col=0)#把源数据第一列设为索引
#查看数据样式
data.head()
#在作图之前最好先看缺失值等的情况。
print(data.isnull().sum())
#画条形图,反映生存与否和所在舱位等级的关系。
#需要作出两者之间的列表 crosstab.
cross_table=pd.crosstab(data['Pclass'],data['Survived'])
#有了这个表就好做多了。直接画条形图。
cross_table.plot(kind='bar')
#同理,可以作出性别和生存与否的关系
survived_sex=pd.crosstab(data.Sex,data.Survived)
survived_sex.plot(kind='bar')
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
因此,粗略可以看出,生存与否显然和舱位、性别有一定关系。
作图的时候,最好是用比例,而不是用数量,需要继续改进。
#定义相除的函数
def rate(data1):
return data1/data1[-1]
data1=pd.crosstab(data.Pclass,data.Survived,margins=True).apply(rate,axis=1)#注意margins的用法。
sp1=sp.apply(rate,axis=1)
sp1.iloc[0:3,0:2].plot(kind='bar')
可以看出,随着所处舱位编号的增加,生存比率是减小,死亡概率增加。