geekdoc-python-zh/docs/askpython/subset-a-dataframe.md

5.0 KiB
Raw Permalink Blame History

如何在 Python 中对数据帧进行子集化?

原文:https://www.askpython.com/python/examples/subset-a-dataframe

在本教程中,我们将介绍几种可以用来划分数据帧子集的方法。如果要将数据导入 Python则必须了解数据框。DataFrame 是一个二维数据结构,即数据以表格形式排列成行和列。

数据框子集化是从数据框中选择一组所需行和列的过程。

您可以选择:

  • 所有行和有限的列
  • 所有列和有限的行
  • 有限的行和有限的列。

设置数据框的子集非常重要,因为它允许您仅访问数据框的特定部分。当您想要减少数据框中的参数数量时,这很方便。

让我们从导入数据集开始。

导入数据以构建数据框架

在本教程中,我们使用的是加州住房数据集。

让我们从使用 pandas 将数据导入数据框开始。

import pandas as pd
housing = pd.read_csv("/sample_data/california_housing.csv")
housing.head()

Housing Dataframe

Housing Dataframe

我们的 csv 文件现在作为熊猫数据帧存储在 housing 变量中。

使用索引运算符选择数据帧的子集

索引操作符只是**方括号的一个花哨名字。**您可以仅使用方括号选择列、行以及行和列的组合。让我们来看看实际情况。

1.仅选择列

要使用索引运算符选择列,请使用下面的代码行。

housing['population']

Population

Population

这行代码选择标签为“population”的列并显示与之对应的所有行值。

您也可以使用索引运算符选择多个列。

housing[['population', 'households' ]]

Population And Household

Population And Household

要对数据帧进行子集化并存储,请使用以下代码行:

housing_subset = housing[['population', 'households' ]]
housing_subset.head()

Pop And Household

这将创建一个单独的数据框作为原始数据框的子集。

2.选择行

您可以使用索引运算符根据特定条件选择特定的行。

例如,要选择人口数大于 500 的行,可以使用下面的代码行。

population_500 = housing[housing['population']>500]
population_500

Greater Than 500

population Greater Than 500

您还可以进一步划分数据框的子集。例如,让我们尝试从上面创建的 housing_subset 数据框中过滤行。

population_500 = housing_subset[housing['population']>500]
population_500

Subset

Subset

请注意,上面的两个输出具有相同的行数(应该是这样)。

使用 Python 子集化数据帧。loc()

loc 索引器是从数据帧中选择行和列的有效方法。它还可以用来同时选择行和列。

需要记住的重要一点是**。loc()作用于行和列的标签。**这之后,我们再来看看。基于行和列索引的 iloc()。

1.使用 loc()选择行

使用选择单行。loc()使用下面一行代码。

housing.loc[1]

Loc

Loc

要选择多行,请使用:

housing.loc[[1,5,7]]

Loc

Loc

您还可以对起始索引和结束索引之间的行进行切片。

housing.loc[1:7]

Slicing

Slicing

2.选择行和列

要从数据框中选择特定的行和列,请使用以下代码行:

housing.loc[1:7,['population', 'households']]

rows and columns

这一行代码选择从 1 到 7 的行以及对应于标签“人口”和“住房”的列。

使用 Python iloc()子集 a 数据帧

iloc()函数整数位置的简称。它完全适用于行和列的整数索引。

要使用 iloc()选择行和列的子集,请使用以下代码行:

housing.iloc[[2,3,6], [3, 5]]

Iloc

Iloc

这行代码选择行号 2、3 和 6 以及列号 3 和 5。

使用 iloc 可以省去您编写完整的行和列标签的麻烦。

在用整数替换标签后,您还可以使用 iloc()单独选择行或列,就像 loc()一样。

结论

本教程是关于使用方括号、loc 和 iloc 在 python 中设置数据框的子集。我们学习了如何将数据集导入数据框,以及如何从数据框中过滤行和列。