Logo
Section 1 / 8

分组简介

在本节课中,你将学习如何在 Pandas 中对相关项目进行分组。

导入

分组简介

在本节课中,你将学习如何在 Pandas 中对相关项目进行分组。

概念

能够将 DataFrames 按一个或多个列进行分组或分割,是任何数据分析应用的核心功能之一。因此,这很可能出现在数据分析师的面试或实际任务中。

其核心思想是将一个 DataFrame 划分为多个组,以便对每个组分别进行分析。

语法

回顾一下,语法非常简单: df.groupby(<列名>),或者在按多列分组时使用 df.groupby([<列1>, <列2>, ...])。

可以在 DataFrameGroupBy 对象上应用聚合操作或 apply 函数,然后通过 reset_index() 将结果重置为普通的 DataFrame。

...
对分组数据应用求和函数

旅行数据集

思路

在你的旅行数据集中,不同旅客的行为可能并不一致。某些国籍的旅客可能更倾向于前往特定目的地,而其他国籍的旅客则偏好不同的目的地。

此时,你的分组列应为 nationality(国籍),你将分析每种国籍对应的 destination(目的地)分布情况。你可能需要找出最常见的目的地,或统计每个国籍的唯一目的地数量。这有助于制定针对“国家-目的地”组合的营销策略。

另一个例子是:某些旅游套餐在特定天气条件下更受欢迎,例如夏季的邮轮旅行。

此时,你的分组列应为 tour_type(旅游类型),你将分析不同旅游类型在各季节的分布情况。

在面试中,理解业务背景和应用场景至关重要。因此,你很可能会基于代表业务核心模型的关键属性进行分组或筛选。

在本例中,核心模型是“旅客”和“行程”。在此处停下来思考一下:哪些属性可能影响旅客的行为?我们已经讨论了 nationality、destination、tour_type 和 season。你能想到其他核心属性吗?

面试常见问题

你可能会被问到开放性问题,例如:

  1. 如何根据旅客的人口统计特征、个人特质或过往行程,为老客户定制半个性化的新闻通讯?

一种解决方案是:根据旅客最显著的特征对他们进行分组,然后向他们推荐可能感兴趣的其他行程。

医疗数据集

思路

在你的医疗数据集中,患者具有不同的健康状况,并接受不同的治疗方案。患有心脏病的患者可能表现出不同的症状,服用特定药物,且多属于某一特定人口群体。

你可能希望分析 糖尿病 状况与其他人口统计信息之间的关联,以及最常使用的治疗方式。这有助于针对高风险患者群体开展健康宣传。

此时,一个明显的分组列是 health_condition(健康状况),基于此可以分析 age(年龄)、gender(性别)、weight(体重)、treatments(治疗方案)等变量。

面试常见问题

你可能会被问到开放性问题,例如:

  1. 在各个年龄段(儿童、青少年、年轻成人、成年人、老年人)中,最常见的健康问题是什么?

一种解决方法是:按年龄范围对患者进行分组,然后展示每组中最常见的2-3种健康问题。

在进入练习题之前

  1. 确保掌握使用单列或多列进行 groupby 的方法。
  2. 确保掌握如何在 DataFrameGroupBy 对象上应用 agg 函数。这包括对不同列应用聚合函数,以及了解可使用的各种聚合函数。
  3. 确保掌握如何使用 reset_index 将结果转换回标准的 DataFrame。

选择 / 筛选

挑战 1:各国家的播放次数总和(简单)