0
点赞
收藏
分享

微信扫一扫

第二章第二、三节 数据重构

女侠展昭 2022-01-15 阅读 61

开始前,导入numpy和pandas。

 

import numpy as np
import pandas as pd

载入data文件夹中的所有数据,观察数据之间的关系。

trlu = pd.read_csv('C://Users/22774/Desktop/data/train-left-up.csv')
trru = pd.read_csv('C://Users/22774/Desktop/data/train-right-up.csv')
trld = pd.read_csv('C://Users/22774/Desktop/data/train-left-down.csv')
trrd = pd.read_csv('C://Users/22774/Desktop/data/train-right-down.csv')
#分别是完整数据切割成田字格所对应的四个部分

数据的几种连接方式:

1.使用concat函数横向合并。

result_up = pd.concat([trlu,trru],axis=1)
result_down = pd.concat([trld,trrd],axis=1)
result = pd.concat([result_up,result_down],axis=0)
#axis=1时表示列合并(左右合并),axis=0时为行合并(上下合并)
result.to_csv('result.csv')

2.DataFrame自带的方法join。

data1=trlu.join(trru)
data2=trld.join(trrd)
#左右合并

3.DataFrame自带的方法append。

data=data1.append(data2)
#上下合并

4.Panads的merge方法(左右合并)。

da1 = pd.merge(trlu,trru,left_index=True,right_index=True)
da2 = pd.merge(trld,trrd,left_index=True,right_index=True)
da=da1.append(da2)

将DataFrame类型的数据转换成Series类型的数据: 

text = pd.read_csv('result.csv')
unit_result=text.stack()
#使用stack函数将列索引改为行索引,从而转换为Series类型的数据
unit_result.head(12)

前12行数据(第一位乘客的信息)结果如下 :

计算泰坦尼克号男性与女性的平均票价 

result = pd.read_csv('result.csv')
df  = result['Fare'].groupby(result['Sex'])
means = df.mean()
means

 统计泰坦尼克号中男女的存活人数

survived_sex =  result['Survived'].groupby(result['Sex']).sum()
survived_sex

将以上两个过程得到的数据合并,并保存到sex_fare_survived.csv

sfs = pd.merge(means,survived_sex,on='Sex')
sfs.to_csv('sex_fare_survived.csv')

  

 计算客舱不同等级的存活人数

pclass_sex =  result['Survived'].groupby(result['Pclass']).sum()
pclass_sex

 

 从上面几个统计过程中可以看出,女性的平均票价高于男性,存活人数也高于男性。在三个等级的客舱中,一等舱和三等舱存活的人数较多,二等舱乘客存活较少。

利用agg函数得到男女平均票价和存活人数。

result.groupby('Sex').agg({'Fare': 'mean', 'Survived': 'sum'}).rename(
columns={'Fare': 'mean_fare', 'Survived': 'sum_Survived'})

 统计在不同等级的票中的不同年龄的船票花费的平均值

result.groupby(['Pclass','Age'])['Fare'].mean().head(15)

 

 

 得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数)

age_survived = result['Survived'].groupby(result['Age']).sum()
the_age = age_survived[age_survived.values==age_survived.max()]
#查看存活人数最多的年龄段
survived_sum = result['Survived'].sum()
#存活总人数
print('存活人数最高的存活率:'+str(age_survived.max()/survived_sum))

可以看出,存活人数最多的年龄是24岁,共有15人存活。对比总存活人数来看,占比接近0.0439。

总结:在这两节中,学习了数据的几种连接方式,不同类型数据之间的转换,以及通过groupby和agg函数对数据进行分组,提取出重要特征,进行数据重构,得到一些简单结论。

 

 

举报

相关推荐

0 条评论