开始前,导入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函数对数据进行分组,提取出重要特征,进行数据重构,得到一些简单结论。