数据重构
本文记录2022年3月组队学习-动手学数据分析教程知识点,采用kaggle上泰坦尼克的任务,实战数据分析全流程。
教程内容开源地址:
github
: https://github.com/datawhalechina/hands-on-data-analysis
gitee
:https://gitee.com/datawhalechina/hands-on-data-analysis
接下来要重点研究一下数据重构。本章我们着重研究一下SAC过程(split-apply-combine
),对数据基于某一些规则将数据源拆成若干组,apply
是对每一组独立地使用函数,combine
指将每一组的结果组合成某一类数据结构.
3.1 准备
本次实验平台为: Jupyter Notebook
、Numpy
、Pandas
# 导入基本库
import pandas as pd
3.2 分组模式及其对象
3.2.1 单一分组
分组操作在日常生活中使用极其广泛,例如:
依据 性别
分组,统计全国人口 寿命
的 平均值
依据 班级
分组,筛选出组内 分数 的 平均值
超过80分的班级
从上述的几个例子中不难看出,想要实现分组操作,必须明确三个要素:分组依据
、 数据来源
、 操作及其返回结果
。同时从充分性的角度来说,如果明确了这三方面,就能确定一个分组操作,从而分组代码的一般模式即:
dataframe.groupby(分组依据)[数据来源].使用操作
例如:
- 统计泰坦尼克号男性与女性的平均票价
# dataframe: result 分组依据 result["Sex"] 数据来源result.groupby(result["Sex"])["Fare"]
# 具体操作 mean()
result.groupby(result["Sex"])["Fare"].mean()
- 统计泰坦尼克号中男女的存活人数
# dataframe result 分组依据 result["Sex"] 数据来源["Survived"] 具体操作 sum()
result.groupby(result["Sex"])["Survived"].sum()
- 统计客舱不同等级的存活人数
result.groupby(result["Pclass"])["Survived"].sum()
3.2.2 多维分组
前面提到的若干例子都是以单一维度进行分组的,比如根据性别,如果现在需要根据多个维度进行分组,该如何做?事实上,只需在 groupby
中传入相应列名构成的列表即可。
比如:
- 统计在不同等级的票中的不同年龄的船票花费的平均值
# 分