Skip to content

Latest commit

 

History

History
225 lines (119 loc) · 9.8 KB

select-rows-columns-pandas.md

File metadata and controls

225 lines (119 loc) · 9.8 KB

如何使用 [ ]、.loc、iloc、.at 和 .iat 选择 Pandas 中的行和列

原文:www.kdnuggets.com/2019/06/select-rows-columns-pandas.html

如何使用 [ ]、.loc、iloc、.at 和 .iat 选择 Pandas 中的行和列

图片来源:catalyststuff 在 Freepik

你可以在 这里 下载本教程的 Jupyter notebook。

在这篇博客中,我将展示如何使用 [ ].loc.iloc.at.iat 在 Pandas 中选择数据子集。我将使用托管在 UCI 网站上的葡萄酒质量数据集。该数据记录了北葡萄牙成千上万种红酒和白酒的 11 种化学性质(如糖、柠檬酸、酒精、pH 等)以及葡萄酒的质量,质量以 1 到 10 的等级记录。我们只查看红酒的数据。

首先,我导入了 Pandas 库,并将数据集读取到数据框中。

import_pandas_1

这里是数据框的前 5 行:

wine_df.head()

Pandas 数据框头部

我重命名了列,以便在未来操作中更容易调用列名。

wine_df.columns = ['fixed_acidity', 'volatile_acidity', 'citric_acid', 
                   'residual_sugar', 'chlorides', 'free_sulfur_dioxide', 
                   'total_sulfur_dioxide','density','pH','sulphates', 
                   'alcohol', 'quality']

选择列的不同方法

选择单列

要选择第一列 'fixed_acidity',你可以将列名作为字符串传递给索引操作符。

你也可以使用点操作符执行相同的任务。

选择多个列

要选择多个列,你可以将列名列表传递给索引操作符。

wine_four = wine_df[['fixed_acidity', 'volatile_acidity','citric_acid', 'residual_sugar']]

另外,你也可以将所有列分配给一个列表变量,并将该变量传递给索引操作符。

cols = ['fixed_acidity', 'volatile_acidity','citric_acid', 'residual_sugar']
wine_list_four = wine_four[cols]

使用 "select_dtypes" 和 "filter" 方法选择列

要使用 select_dtypes 方法选择列,你首先应找出每种数据类型的列数。

使用 dtypes 选择列

在这个例子中,有 11 列是浮点型数据,一列是整数型数据。要仅选择浮点型列,使用 wine_df.select_dtypes(include = ['float'])select_dtypes 方法的 include 参数接受一个数据类型列表。列表值可以是字符串或 Python 对象。

你还可以使用 filter 方法根据列名或索引标签选择列。

选择列的 filter 方法

在上述示例中,filter方法返回包含确切字符串'acid'的列。like参数接受一个字符串作为输入,并返回包含该字符串的列。

你可以在filter方法中使用regex参数来进行正则表达式匹配。

正则表达式过滤

在这里,我首先重命名了phquality列。然后,我将正则表达式参数传递给filter方法,以查找所有包含数字的列。

改变列的顺序

我想要改变列的顺序。

改变列的顺序

wine_df.columns 显示了所有列名。我将列名组织成三个列表变量,并将这些变量连接起来以获得最终的列顺序。

在 pandas 中重新排序列

我使用 Set 模块检查new_cols是否包含所有原始列。

然后,我将new_cols变量传递给索引操作符,并将结果 DataFrame 存储在变量"wine_df_2"中。现在,wine_df_2 DataFrame 中的列按我想要的顺序排列。

传递列名

选择行的不同方法

使用.iloc 和 loc 选择行

现在,让我们看看如何使用.iloc 和 loc 从我们的 DataFrame 中选择行。为了更好地说明这一概念,我从“density”列中删除了所有重复行,并将wine_df DataFrame 的索引更改为“density”。

选择行

要选择wine_df DataFrame 中的第三行,我将数字 2 传递给.iloc索引器。

使用 iloc 选择行

为了做同样的事情,我使用.loc索引器。

使用 loc 选择行

要选择具有不同索引位置的行,我将一个列表传递给.iloc索引器。

我将一系列密度值传递给.iloc索引器,以重现上述 DataFrame。

loc 以重现数据框

你可以使用切片来选择多行。这类似于在 Python 中切片列表。

上述操作选择了第 2、第 3 和第 4 行。

你可以使用loc来执行相同的操作。

使用 loc 的列表切片

在这里,我选择了索引之间的行 0.99700.9959

同时选择行和列

你必须在.ilocloc索引器中传递行和列的参数,以同时选择行和列。行和列的值可以是标量值、列表、切片对象或布尔值。

选择所有行,以及第 4、第 5 和第 7 列:

要复制上述 DataFrame,将列名作为列表传递给 .loc 索引器:

使用 loc 选择列和行

选择不连续的行和列

要选择特定数量的行和列,你可以使用 .iloc 进行如下操作。

使用 iloc 选择不连续的行

要选择特定数量的行和列,你可以使用 .loc 进行如下操作。

使用 loc 选择特定行

要从 DataFrame 中选择单一值,你可以执行以下操作。

选择单一标量值

你可以使用切片来选择特定的列。

切片选择行和列

要同时选择行和列,你需要理解方括号中逗号的使用。逗号左侧的参数总是根据行索引选择行,而逗号右侧的参数总是根据列索引选择列。

如果你想选择一组行和所有列,你不需要在逗号后使用冒号。

无需使用逗号

iloc - 选择所有列和选定数量的行

使用 "get_loc" 和 "index" 方法选择行和列

使用 get_loc 选择行和列

在上述示例中,我使用 get_loc 方法查找列 'volatile_acidity' 的整数位置,并将其赋值给变量 col_start。然后,我再次使用 get_loc 方法查找比 'volatile_acidity' 列多 2 个整数值的列的位置,并将其赋值给变量 col_end。接着,我使用 iloc 方法选择前 4 行,以及 col_startcol_end 列。如果你将索引标签传递给 get_loc 方法,它将返回其整数位置。

你可以使用 .loc 执行类似的操作。以下显示了如何选择第 3 到第 7 行,以及从 "volatile_acidity" 到 "chlorides" 的列。

索引和 getloc

使用 .iat.at 进行子选择

索引器 .iat.at.iloc.loc 更快,用于从 DataFrame 中选择单个元素。

密度值

使用 iat 和 at 进行子选择

使用 iat 和 at 进行子选择第二部分

我将撰写更多关于使用 Pandas 操作数据的教程。敬请关注!

参考文献


我们的前三大课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业的捷径。

2. 谷歌数据分析专业证书 - 提升你的数据分析技能

3. 谷歌 IT 支持专业证书 - 为你的组织提供 IT 支持


更多相关主题