10 ,pandas 操作: 泰坦尼克号案例( 下 ),幸存男女比例,年龄分析,仓位分析,价格分析,分组函数,去除空值

1 ,船上 : 男女人数

  1. 代码 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    series = data.Sex.value_counts()
    series.plot(kind="bar")
    plt.show()
  1. 图 :

2 ,死亡 : 男女人数 ( 多条件筛选 )

  1. 死亡男人 : 468
if __name__ == '__main__':
    data = pd.read_csv("titanic_train.csv")
    some = data[(data['Survived'] == 0) & (data["Sex"]=="male")]
    numMale = some.shape[0]
    print(numMale)
  1. 死亡女人 : 81
if __name__ == '__main__':
    data = pd.read_csv("titanic_train.csv")
    some = data[(data['Survived'] == 0) & (data["Sex"]=="female")]
    numMale = some.shape[0]
    print(numMale)
  1. 死亡总人数 : 549
if __name__ == '__main__':
    data = pd.read_csv("titanic_train.csv")
    ser = data[data["Survived"] == 0]
    num = ser.shape[0]
    print(num)
  1. 死亡人数 : 比例图
if __name__ == '__main__':
    data = pd.read_csv("titanic_train.csv")
    ser = data[data["Survived"] == 0]
    ser.Sex.value_counts().plot(kind='bar')
    plt.show()
  1. 结果 :

3 ,幸存人数对比 :男女比例

  1. 代码 :
if __name__ == '__main__':
    data = pd.read_csv("titanic_train.csv")
    ser = data[data["Survived"] == 1]
    ser.Sex.value_counts().plot(kind='bar')
    plt.show()
  1. 结果 :
    在这里插入图片描述

4 ,年龄分析 :

  1. 求平均年龄 : 29
if __name__ == '__main__':
    data = pd.read_csv("titanic_train.csv")
    avage = data["Age"].mean()
    print(avage)
  1. mean 的含义 :
    不要 null ,计算的时候,只保留有值的数据一起计算,没有值的数据,不参与总数量计算,也不参与总年龄计算

5 ,pivot_table : 分组函数

  1. 代码 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 分组函数 ( pivot_table ) 分组条件,计算字段,计算规则
    res = data.pivot_table(index="Pclass",values="Fare",aggfunc=np.mean)
    print(res)
  1. 结果 :
             Fare
Pclass           
1       84.154687
2       20.662183
3       13.675550

6 ,船舱等级 : 每个等级的均价,获救人数

  1. 代码 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 分组函数 ( pivot_table ) 分组条件,计算字段,计算规则
    res = data.pivot_table(index="Pclass",values="Fare",aggfunc=np.mean)
    print(res)
  1. 结果 :
             Fare
Pclass           
1       84.154687
2       20.662183
3       13.675550
  1. 每个等级生还的人数 ( 0-死,1-生 ),1 等仓生还率最高
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 分组函数 ( pivot_table ) 分组条件,计算字段,计算规则
    res = data.pivot_table(index="Pclass",values="Survived",aggfunc=np.mean)
    print(res)

结果 :
Pclass          
1       0.629630
2       0.472826
3       0.242363
  1. 每个船舱等级 : 平均年龄 ( 1 等仓年龄最大 )
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 分组函数 ( pivot_table ) 分组条件,计算字段,计算规则
    res = data.pivot_table(index="Pclass",values="Age",aggfunc=np.mean)
    print(res)

结果 : 
1       38.233441
2       29.877630
3       25.140620

7 ,登船地点 : 数据分析

  1. 每个地点的总收入,总获救人数 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 分组函数 ( pivot_table ) 分组条件,计算字段,计算规则
    res = data.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)
    print(res)

结果 :
                Fare  Survived
Embarked                      
C         10072.2962        93
Q          1022.2543        30
S         17439.3988       217
  1. 每个地点的人的生还率 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 分组函数 ( pivot_table ) 分组条件,计算字段,计算规则
    res = data.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.mean)
    print(res)

结果 :
               Fare  Survived
Embarked                     
C         59.954144  0.553571
Q         13.276030  0.389610
S         27.079812  0.336957

8 ,去除空值 :

  1. 数据共几行 : 891
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    n1 = data.shape[0]
    print(n1)

结果 : 891
  1. 每一行有多少个数值,不算空值 : 都不同
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    n1 = data.count()
    print(n1)

结果 :
	PassengerId    891
	Survived       891
	Pclass         891
	Name           891
	Sex            891
	Age            714
	SibSp          891
	Parch          891
  1. 如果有空值 : 删列
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 去除空值
    res = data.dropna(axis=1)
    print(data.shape)
    print(res.shape)
结果 :
	(891, 12)
	(891, 9)
  1. 如果有空值 : 删行
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 去除空值
    res = data.dropna(axis=0)
    print(data.shape)
    print(res.shape)
结果 :
	(891, 12)
	(183, 12)
  1. 指定列,删除行 : 如果这个字段是 Nan ,就删除这一行 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 去除空值,检查年龄和性别,如果有空,就删除数据
    res = data.dropna(axis=0,subset=["Age","Sex"])
    print(data.shape)
    print(res.shape)

结果 :
	(891, 12)
	(714, 12)

9 ,取元素 : 行号 + 列号

  1. 通过行列号取值 :
if __name__ == '__main__':
    # 读数据
    data = pd.read_csv("titanic_train.csv")
    # 取值 :
    print(data.head(5))
    yuan = data.loc[0,'Pclass']
    print(yuan)

结果 :
Backend TkAgg is interactive backend. Turning interactive mode on.
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S
[5 rows x 12 columns]
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值