【数据分析学习笔记Task03】数据重构


前言

本次学习作为数据重构部分的相关记录。


一、数据的合并

使用concat方法将数据train-left-up.csvtrain-right-up.csv横向合并为一张表,并保存这张表为result_up

result_up = pd.concat([df_leftup, df_rightup], axis=1)
result_up.head()

在这里插入图片描述
concat方法可以实现不关心按照哪个键来连接,直接纵向连接(axis=1)或者横向连接(axis=0)。


除此之外,连接还可以使用用join方法实现按照索引连接。之后使用append可以将两组数据表拼在一起。
result_up = df_leftup.join(df_rightup)
result_down = df_leftdown.join(df_rightdown,how='left') # 默认就位left还有right 与outer.
result = result_down.append(result_up, ignore_index=True)  # ignore_index=TRUE代表忽略result_up的索引,
result.shape # 如果原表是默认整数序列的索引,那么可以使用 ignore_index=True 对新序列对应的索引自动标号否则必须对 Series 指定 name 属性。

在这里插入图片描述


也可以使用merge和append来实现。merge是值连接。不过在这里left_index和right_index指明使用的是索引的值作为键,就和join一样了。
result_down = df_leftdown.merge(df_rightdown, left_index=True, right_index=True)
result_up = df_leftup.merge(df_rightup, left_index=True, right_index=True)
result = result_up.append(result_down) # ignore_index才会自动编号

在这里插入图片描述

二、数据聚合与运算

这里主要用到了groupby实现分组计算。通过几个例子进行学习。
计算泰坦尼克号男性与女性的平均票价

# 分组依据是:性别;分组来源是 票价; 执行的操作是 求平均
df.groupby('Sex')['Fare'].mean()

在这里插入图片描述
统计泰坦尼克号中男女的存活人数

df.groupby('Sex')['Survived'].sum() # 因为1代表存活,所以用sum就可以直接实现统计存活

在这里插入图片描述
统计在不同等级的票中的不同年龄的船票花费的平均值

df.groupby(['Pclass','Age'])['Fare'].mean()

在这里插入图片描述
得出不同年龄的总的存活人数,然后找出存活人数的最高的年龄,最后计算存活人数最高的存活率(存活人数/总人数)

df.groupby('Age')['Survived'].sum()

在这里插入图片描述

age_num = df.groupby('Age')['Survived'].sum()
age_num[age_num.values == age_num.max()]  # 取行

在这里插入图片描述

age_num.max() / df['Survived'].sum()

在这里插入图片描述
这里要用df['Survived'].sum()来求存活总人数。因为有些人的年龄是NaN值,如果统计按年龄分组后的存活人数的和,那么在groupby('age')时没有考虑这些值,所以会造成数据缺失。

df.groupby('Age')['Survived'].sum().sum()  # 290
df['Survived'].sum()  # 342

总结

本次学习了解了数据重构,仍然是数据理解部分。主要包括数据的合并,用concat,join,merge等连接操作来实现;还有数据的聚合分组,主要是用groupby实现分组以后,在每个组内进行相关特征计算。需要注意的是分组时会舍弃那些分组依据为空值的数据,所以如果需要统计原表的特征比如sum之类的,要在原表进行操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值