数据框合并/连接入门
本节介绍了在 Pandas 中合并/连接 DataFrames 的概念。
概念
到目前为止,你一直处理的是单个 DataFrame 对象。但在实际应用中,你可能需要根据一个共同的列将多个数据集合并成一个对象。
语法
假设你有两个 DataFrame 对象,df1 和 df2,最基础的合并操作可以使用以下语法:
merged = pd.merge(df1, df2)
合并操作有多种选项,你可以执行左连接(Left Join)、右连接(Right Join)、外连接(Outer Join),也可以指定用于合并的列。
此外,还有其他方式可以合并 DataFrame 对象,例如使用 .join() 或 .append() 方法。
旅行数据集
思路
在旅行数据集中,信息常常分散在多个表格中。假设你手头有两个数据集:一个是客户及其国籍的信息,另一个是相同客户的旅行记录。将这两个数据集合并后,可以分析特定国籍客户的旅行行为,例如他们偏好的目的地分布情况。
面试问题
合并超过两个 DataFrame 对象的情况并不少见。例如,可能会遇到这样的问题:如何根据以下三个数据集计算每种国籍客户在各个目的地的平均旅行费用?
- 每次旅行的费用(不包含目的地信息,每条记录通过
trip_id标识) - 客户信息及对应的国籍(每个客户通过
client_id标识) - 旅行信息,包括每个旅行的目的地(每条记录通过
trip_id标识,同时包含client_id信息)
解决步骤如下:
- 将客户数据集与旅行数据集通过
client_id合并,得到包含国籍-目的地配对的完整数据集; - 将上述结果与费用数据集通过
trip_id进行合并;
最后,按国籍和目的地分组,计算每组的平均费用。
医疗数据集
思路
在医疗数据集中,患者的健康数据通常分为两类:
- 患者基本信息(如年龄、性别等)
- 患者症状信息
将这两类数据合并后,可以分析某些人口统计特征(如性别或年龄)对特定症状严重程度的影响。
面试问题
假设你有两个数据集:第一个是患者的基本健康信息,第二个是智能手表收集的生理指标数据(如血压)。在这种情况下,如何判断患有心脏病的患者是否普遍存在持续高血压的情况?
解决方案非常直接:将两个数据集合并,筛选出患有心脏病的患者,然后计算其中持续高血压的比例,并根据给定规则进行分析。
在进入练习题之前
- 确保你熟悉使用
.merge()函数进行不同类型的连接操作。 - 确保你了解
.concat()函数的使用场景,包括按行或按列拼接数据。