- Titanic data
本教程使用泰坦尼克号数据集,它以 CSV 格式存储。该数据包含以下数据列:
PassengerId:每位乘客的 ID。
Survived:乘客是否存活的指示。
0表示生存,1表示死亡。Pclass:3 个票务等级之一:
1等、2等和3等。Name:乘客姓名。
Sex:乘客性别。
Age:乘客年龄(以年为单位)。
SibSp:船上兄弟姐妹或配偶的数量。
Parch:船上父母或子女的数量。
Ticket:乘客的票号。
Fare:指示票价。
Cabin:乘客的客舱号。
Embarked:登船港口。
如何选择 DataFrame 的子集?#
如何从 DataFrame 中选择特定列?#
我对泰坦尼克号乘客的年龄感兴趣。
要选择单列,请使用方括号
[]并加上您感兴趣的列的列名。
DataFrame 中的每一列都是一个 Series 。由于选择的是单列,因此返回的对象是一个 pandas Series 。我们可以通过检查输出的类型来验证这一点:
并查看输出的 shape:
DataFrame.shape 是一个 pandas Series 和 DataFrame 的属性(请记住 tutorial on reading and writing ,属性不要使用括号),包含行数和列数:(行数, 列数)。pandas Series 是 1 维的,只返回行数。
我对泰坦尼克号乘客的年龄和性别感兴趣。
要选择多列,请在选择括号
[]内使用列名列表。
备注
内部方括号定义了一个包含列名的 Python list ,而外部括号用于从 pandas DataFrame 中选择数据,如前一个示例所示。
返回的数据类型是 pandas DataFrame:
选择返回了一个包含 891 行和 2 列的 DataFrame。记住,DataFrame 是 2 维的,同时具有行和列维度。
有关索引的基本信息,请参阅用户指南中关于 indexing and selecting data 的部分。
如何从 DataFrame 中筛选特定行?#
我对年龄大于 35 岁的乘客感兴趣。
要根据条件表达式选择行,请在选择方括号
[]内使用条件。
选择方括号 [] 内的条件 titanic["Age"] > 35 检查 Age 列的值大于 35 的行:
条件表达式(>,但 ==、!=、<、<= 等也可以)的输出实际上是一个布尔值(True 或 False)的 pandas Series,其行数与原始 DataFrame 相同。此类布尔值 Series 可通过将其置于选择方括号 [] 之间来过滤 DataFrame。将只选择值为 True 的行。
我们之前知道,原始的 Titanic DataFrame 由 891 行组成。通过检查结果 DataFrame above_35 的 shape 属性,我们来看看满足条件的行数:
我对泰坦尼克号的 2 等舱和 3 等舱乘客感兴趣。
与条件表达式类似,
isin()条件函数会为值在列表中的每一行返回True。要根据此类函数过滤行,请在选择方括号[]内使用条件函数。在本例中,选择方括号[]内的条件titanic["Pclass"].isin([2, 3])检查Pclass列为 2 或 3 的行。
上面的语句等同于筛选出舱位为 2 或 3 的行,并将这两个语句与 ``|``(或)运算符组合起来:
备注
组合多个条件语句时,每个条件都必须用括号 () 括起来。此外,不能使用 or/and,而必须使用 or 运算符 | 和 and 运算符 &。
请参阅用户指南中关于 boolean indexing 或 isin function 的专门部分。
我想处理年龄已知的乘客数据。
notna()条件函数为值不是Null值的每一行返回True。因此,这可以与选择方括号[]结合使用来过滤数据表。
您可能会想,实际发生了什么变化,因为前 5 行仍然是相同的值。一种验证方法是检查形状是否已更改:
有关缺失值的更多专用函数,请参阅用户指南中关于 handling missing data 的部分。
如何从 DataFrame 中选择特定行和列?#
我对年龄大于 35 岁的乘客姓名感兴趣。
在这种情况下,行和列的子集是一次性完成的,仅使用选择方括号
[]不再足够。必须在选择方括号[]前使用loc/iloc运算符。使用loc/iloc时,逗号前的部分是要选择的行,逗号后的部分是要选择的列。
当使用列名、行标签或条件表达式时,请在选择方括号 [] 前使用 loc 运算符。对于逗号前后的部分,您可以使用单个标签、标签列表、标签切片、条件表达式或冒号。使用冒号表示您要选择所有行或列。
我对第 10 到 25 行和第 3 到 5 列感兴趣。
同样,行和列的子集是一次性完成的,仅使用选择方括号
[]不再足够。当根据表格中的位置特定于某些行和/或列时,请在选择方括号[]前使用iloc运算符。
当使用 loc 或 iloc 选择特定行和/或列时,可以为选定的数据分配新值。例如,将名称 anonymous 分配给第四列的前 3 个元素:
请参阅用户指南中关于 different choices for indexing 的部分,以更深入地了解 loc 和 iloc 的用法。
REMEMBER
选择数据的子集时,使用方括号
[]。在这些方括号内,您可以使用单个列/行标签、标签列表、标签切片、条件表达式或冒号。
使用行和列名称时,请使用
loc来选择特定的行和/或列。使用表格中的位置时,请使用
iloc来选择特定的行和/或列。您可以根据
loc/iloc为选定的内容分配新值。
有关索引的完整概述,请参阅用户指南中关于 indexing and selecting data 的页面。