python 分组统计图(以Titanic数据集为例)

#导入所需的包
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')

可以看出,随着所处舱位编号的增加,生存比率是减小,死亡概率增加。

猜你喜欢

转载自blog.csdn.net/lishangyin88/article/details/80155869