数据的重构

该博客主要介绍了如何使用pandas进行数据合并操作,包括使用`concat`、`join`、`merge`方法将多个CSV文件合并,并进一步进行了数据转换。接着,通过`groupby`方法对泰坦尼克号数据进行了聚合分析,计算了男女平均票价、存活人数等关键指标,揭示了票价与存活率的关系。最后,博主探讨了不同年龄群体的存活情况及其存活率。
摘要由CSDN通过智能技术生成
import pandas as pd
import numpy as np
df = pd.read_csv('/Users/Administrator/Desktop/组对学习/hands-on-data-analysis-master/第二章项目集合/data/train-left-up.csv')
df.head()

1.数据的合并

1.1将data文件夹里面的所有数据都载入,观察数据的之间的关系

df1 = pd.read_csv('train-left-up.csv')
df2 = pd.read_csv('train-left-down.csv')
df3 = pd.read_csv('train-right-up.csv')
df4 = pd.read_csv('train-right-down.csv')

1.2使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up;将train-left-down和train-right-down横向合并为一张表,并保存这张表result_down。然后将上边的result_up和result_down纵向合并为result。

result_up = pd.concat([df1,df3],axis=1)
result_up.head()
result_down = pd.concat([df2,df4],axis=1)
result = pd.concat([result_up,result_down])
result.head()

1.3使用DataFrame自带的方法join方法和append:完成1.2

result_up = df1.join(df3)
result_down = df2.join(df4)
result = result_up.append(result_down)
result.head()

1.4使用Panads的merge方法和DataFrame的append方法:完成1.2

result_up = pd.merge(df1,df3,left_index=True,right_index=True)
result_down = pd.merge(df2,df4,left_index=True,right_index=True)
result = result_up.append(result_down)
result.head()
#pd.merge行对行连接,pd.concat是轴向进行黏合,join按照索引合并,但要没重复列。不用append只用merge,join不能实现上下合并。

1.5将我们的数据变为Series类型的数据

text = pd.read_csv('result.csv')
text.head()
unit_result=text.stack().head(20)
unit_result.head()
#stack()将行索引变成列索引,unstack()反一反。
text = pd.read_csv('result.csv')
text.head()

2.数据聚合与运算

2.1计算泰坦尼克号男性与女性的平均票价;统计泰坦尼克号中男女的存活人数;计算客舱不同等级的存活人数;统计在不同等级的票中的不同年龄的船票花费的平均值;将任务二和任务三的数据合并,并保存到sex_fare_survived.csv

#GroupBy:拆分-应用-联合。数据包含在pandas对象中,根据一个或多个分组键分离到其他组,分组后一个函数可以应用到各组,结果重新联合从成结果对象。
df1 = text['Fare'].groupby(text['Sex'])
mean = df1.mean()#任务二
df2 = text['Survived'].groupby(text['Sex']).sum()
df2.head()#任务三
df3 = text['Survived'].groupby(text['Pclass']).sum()
df3#任务四
结论:女性选择的平均票价为44.479818,男性为25.523893;女性存活人数233人,男性存活人数109人,女性存活人是男性的两倍;客舱等级1的存活136人,等级2的87人,等级3的119人,
根据票价的选择,女性的存活率很大程度和票价有关,票价高,仓位等级高,存活比例高。
text.groupby('Sex').agg({'Fare':'mean','Survived':'count'}).rename(columns={'Fare':'Fare_mean','Survived':'Survived_sum'})#任务二和三可以通过agg()函数来同时计算。并且可以使用rename函数修改列名。
text.groupby(['Pclass','Age'])['Fare'].mean()#任务五
result = pd.merge(mean,df2,on='Sex')
result.to_csv('sex_fare_survived.csv')#任务六

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

age=text['Survived'].groupby(text['Age']).sum()
age.head()
age[age.values==age.max()]
a1=text['Survived'].sum()
a2=age.max()/text['Survived'].sum()
print('存活总人数'+str(a1))
print('最高存活率'+str(a2))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值