- Titanic data
本教程使用泰坦尼克号数据集,它以 CSV 格式存储。该数据包含以下数据列:
PassengerId:每位乘客的 ID。
Survived:乘客是否存活的指示。
0表示生存,1表示死亡。Pclass:3 个票务等级之一:
1等、2等和3等。Name:乘客姓名。
Sex:乘客性别。
Age:乘客年龄(以年为单位)。
SibSp:船上兄弟姐妹或配偶的数量。
Parch:船上父母或子女的数量。
Ticket:乘客的票号。
Fare:指示票价。
Cabin:乘客的客舱号。
Embarked:登船港口。
如何计算汇总统计信息#
汇总统计信息#
泰坦尼克号乘客的平均年龄是多少?
有不同的统计信息可供选择,并可应用于包含数值数据的列。操作通常会排除缺失数据,并默认跨行操作。
泰坦尼克号乘客的中位年龄和票价是多少?
应用于 DataFrame 中多个列的统计信息(选择两列会返回一个 DataFrame,请参阅 subset data tutorial )会为每个数值列计算。
聚合统计信息可以同时为多个列计算。还记得 first tutorial 中的 describe 函数吗?
除了预定义的统计信息,还可以使用 DataFrame.agg() 方法为给定列定义特定的聚合统计信息组合:
有关描述性统计信息的详细信息,请参阅用户指南的 descriptive statistics 部分。
按类别分组的汇总统计信息#
男性与女性泰坦尼克号乘客的平均年龄是多少?
由于我们感兴趣的是每个性别的平均年龄,因此首先对此两列进行子选择:
titanic[["Sex", "Age"]]。接下来,在Sex列上应用groupby()方法,为每个类别创建一个组。计算并返回*每个性别的*平均年龄。
计算*一列中每个类别的*给定统计信息(例如,而是“Age”列的``mean``)可以归纳为一种常见的模式。groupby 方法用于支持此类操作。这符合更通用的“split-apply-combine”模式:
Split 将数据分成组
Apply 对每个组独立应用一个函数
Combine 将结果组合成一个数据结构
apply 和 combine 步骤通常在 pandas 中一起完成。
在前面的示例中,我们首先显式选择了 2 列。如果没有,则通过传递 numeric_only=True 将 mean 方法应用于包含数值列的每一列:
计算 Pclass 的平均值没有多大意义。如果我们只对每个性别的平均年龄感兴趣,那么也可以在分组数据上支持列的选择(以及通常的方括号 []):
备注
Pclass 列包含数值数据,但实际上代表 3 个类别(或因子),分别标记为‘1’、‘2’和‘3’。计算这些数据的统计信息没有多大意义。因此,pandas 提供了一个 Categorical 数据类型来处理这类数据。有关详细信息,请参阅用户指南的 类别数据 部分。
计算每个性别与客舱组合的平均票价是多少?
分组可以同时按多个列进行。将列名作为列表提供给
groupby()方法。
有关拆分-应用-合并方法的完整描述,请参阅用户指南的 groupby operations 部分。
按类别计算记录数#
计算每个客舱类别的乘客数量是多少?
value_counts()方法计算列中每个类别的记录数。
该函数是一个快捷方式,因为它实际上是分组操作,并计算每个组内的记录数:
备注
size 和 count 都可以与 groupby 结合使用。size 包括 NaN 值,仅提供行数(表的size),而 count 则排除缺失值。在 value_counts 方法中,使用 dropna 参数来包含或排除 NaN 值。
用户指南有一个专门介绍 value_counts 的部分,请参阅 discretization 页面。
REMEMBER
聚合统计可以针对整个列或行计算。
groupby提供了*拆分-应用-合并*模式的强大功能。value_counts是一个方便的快捷方式,用于计算变量每个类别中的条目数。
有关拆分-应用-合并方法的完整描述,请参阅有关 groupby operations 的用户指南页面。