使用Pandas进行数据分析:精确数据选择的.loc和.iloc的掌握

Python编程语言由于其用户友好性和强大的库,在数据科学和分析中是一项重要的资产。其中之一就是Pandas,它提供了灵活而强大的数据处理工具,因此成为全球数据科学家的首选。
在数据分析的过程中,高效地管理和操作数据是关键,而这正是Pandas的优势所在。在Pandas提供的各种工具中,有三个方法因其多功能性而脱颖而出:loc、iloc和ix。
这些方法对于Pandas中的数据选择至关重要,为用户在Pandas DataFrame中访问和修改数据提供了非凡的灵活性。
数据选择是数据分析的重要步骤,涉及从数据集中选择特定数据以进行分析、可视化或机器学习算法输入。
为什么要使用loc、iloc或ix?
通常,数据科学家只需要整个数据集的一部分。这就是loc、iloc和ix方法的宝贵之处,它们根据DataFrame的位置或特定条件实现了高效的数据选择。
本文旨在深入探讨这三个关键的Pandas方法,讨论它们的用例和细节。
我们将使用预构建的数据集,以便您可以复现相同的代码,目标是让您具备使用Pandas在Python中操作和浏览任何数据集的知识和信心。
如果您想了解更多关于Pandas方法的内容,这里为您提供了17个Pandas技巧。如果您觉得懒得编写代码,想要编写提示而不是代码,您还可以使用PandaSAI。
准备好了吗?让我们开始探索吧。
理解Pandas中的数据选择
数据选择的过程是任何数据分析或数据科学任务的基础性方面。
在分析数据、可视化或使其适用于机器学习算法之前,我们应该首先从较大的数据集中选择我们需要的数据。
如果没有选择和处理部分数据,算法的工作速度会变得非常慢,或者我们可能会删除实际上很重要的数据。
Pandas中的数据选择不仅仅是选择一列或一行,它涉及根据特定条件选择特定的数据子集。在Pandas中,我们经常使用数据框(dataframe),它们是类似表格的数据结构,包含行和列。
数据框中的行表示不同的观测值,而列表示各种特征或变量。Pandas的多功能性主要来自其强大的数据选择方法,它们允许我们根据需要快速地隔离这些数据框的特定部分。
理解数据选择非常重要,因为它将给我们一个机会来探索和了解数据。
通过使用正确的技术,我们可以收集所需的数据,无论是根据特定条件选择特定的行,还是选择一组列,这对于我们的分析非常重要。
Python中的数据选择方法
在Pandas中,有三种主要的数据选择方法:loc、iloc和ix。每种方法都有其自身的优势,并且具有特定的用例。
loc方法用于基于标签的数据选择,iloc用于基于整数的选择,而ix是一种更通用的方法,支持基于标签和整数的选择。
这些方法可以以不同的方式从数据帧中选择数据。
在接下来的章节中,我们将通过使用预构建的数据集详细探讨这些方法。
这将使您在使用pandas进行数据选择方面具备扎实的知识,这是成为熟练的数据分析师或科学家的重要步骤。
因此,让我们从下一节中的loc
方法开始深入研究这些选择方法。
使用loc
进行数据选择
loc
方法是Pandas库中的一个强大工具,用于基于标签的数据选择。它允许我们使用索引或列名的实际标签来选择数据,因此使用起来非常直观。
为了了解loc
的工作原理,我们将利用seaborn库中的一个内置数据集:’titanic’数据集。该数据集包含了泰坦尼克号航行中的乘客数据,包括每位乘客的年龄、性别、票价以及是否幸存于沉船事件。通过使用loc
方法,我们可以深入研究这个数据集并迅速提取有见地的信息。
让我们从导入必要的库和加载数据开始。
import seaborn as snsimport pandas as pd# 从seaborn加载'titanic'数据集titanic = sns.load_dataset('titanic')# 显示数据的前几行titanic.head()

现在,让我们利用loc
方法。一个loc
命令的格式如下:dataframe.loc[rows, columns]
。
假设我们想选择数据帧中的第一个乘客。
我们可以通过指定索引标签来实现,这里的索引标签是0。
这是代码。
# 选择第一行和所有列first_passenger = titanic.loc[0, :]print(first_passenger)
这是输出结果。

这种灵活性不仅限于选择行。我们还可以选择特定的列。假设我们只对前三位乘客的’age’和’fare’感兴趣。以下是我们如何使用loc
选择这些数据:
# 选择前三行和特定列first_three_passengers_data = titanic.loc[[0, 1, 2], ['age', 'fare']]print(first_three_passengers_data)
这是输出结果。

这只是揭示了loc
方法的一部分功能。它还可以处理布尔条件,使我们能够选择满足特定条件的行。假设我们想找到所有年龄低于18岁的乘客。使用loc
可以很容易地实现。
# 选择所有年龄低于18岁的乘客under_18_passengers = titanic.loc[titanic['age'] < 18, :]under_18_passengers
这是输出结果。

方法loc
具有多功能、直观和有效的特点,可以根据标签选择数据。然而,有时我们需要根据位置选择数据,而不是根据标签。这就是iloc
方法的作用,我们将在下一节中探讨它。
使用iloc
进行数据选择
虽然loc
是基于标签选择的强大工具,但Pandas还提供了纯整数位置选择的iloc
方法。iloc
方法允许您通过指定它们的整数位置来访问DataFrame的行和列。
让我们继续探索“泰坦尼克”数据集。使用iloc
,我们可以根据整数位置选择特定的行或列,而不考虑索引标签或列名。
iloc
的语法与loc
非常相似:dataframe.iloc[rows, columns]
。不同之处在于您如何指定行和列。使用iloc
时,您使用整数位置,而不是标签。
例如,让我们选择DataFrame的第一行(即第0个位置):
# 选择第一行和所有列
first_row = titanic.iloc[0, :]
print(first_row)
这是输出。

iloc
还可以帮助您一次选择多个行或列。
例如,如果您想选择前三行和第1个(第0个索引位置)和第4个(第3个索引位置)位置的列,则可以执行以下操作:
# 选择前三行和特定列
selected_data = titanic.iloc[0:3, [0, 3]]
print(selected_data)
这是输出。

请注意,在使用iloc
进行切片时,起始边界是包含的,但停止边界是不包含的,与使用loc
进行基于标签的切片不同。因此,0:3
选择的是整数位置为0、1和2的行。
还要注意,与loc
不同,iloc
可以使用负索引。这意味着您可以使用-1
作为索引来选择最后一行或列:
# 选择最后一行和所有列
last_row = titanic.iloc[-1, :]
print(last_row)
这是输出。

在loc
和iloc
之间,您可以灵活地选择DataFrame中的数据。您可以选择基于标签、整数位置或两者的混合选择。了解何时以及如何使用这些函数可以极大地增强您的数据操作技能。然而,Pandas不仅仅有这两个函数。在下一节中,我们将介绍另一种数据选择方法——at
和iat
方法。
使用at
和iat
进行更快的访问
尽管 loc
和 iloc
无疑是数据选择的强大工具;但有时,当处理大型数据集时,您需要一种更快的方法。这就是 at
和 iat
的用武之地。与 loc
和 iloc
相比,at
和 iat
提供更快的数据访问速度。
这种速度的代价是,at
和 iat
一次只能访问一个值。它们用于获取或设置DataFrame或Series中的单个值,不能用于布尔索引或同时访问多个值。
让我们看看它们的实际应用。继续使用我们的“泰坦尼克”数据集,假设我们想快速访问第一行乘客的“票价”:
# 使用 `at`fare_at = titanic.at[0, 'fare']print(fare_at)# 使用 `iat`fare_iat = titanic.iat[0, 8]print(fare_iat)

在第一个示例中,at
用于基于标签索引(在本例中为0)访问“票价”值。
在第二个示例中,iat
用于基于行中的整数位置(8)访问“票价”值。
现在,我们已经介绍了Pandas中所有这些数据选择方法,让我们总结一下它们的使用最佳实践。这将有助于确保在处理数据集时选择正确的工具。
最后的话
理解 loc
、iloc
、at
和 iat
将显著提高您在Pandas中处理数据时的效率和效果。
这些方法为数据选择提供了灵活和强大的选择,使您能够处理几乎任何可能遇到的数据选择任务。
继续使用这些工具进行练习,您很快就会成为Pandas专家。
感谢阅读我的文章。
这是我的 关于人工智能和数据科学的每日通讯 。
这是我的 NumPy速查表 。
这是“ 如何成为亿万富翁 ”数据项目的源代码。
这是“ 使用Python进行6种不同算法的分类任务 ”数据项目的源代码。
这是“ 能源效率分析中的决策树 ”数据项目的源代码。
这是“ DataDrivenInvestor 2022文章分析 ”数据项目的源代码。
如果您还不是VoAGI会员,想通过阅读扩展您的知识,这是我的推荐 链接。
这是我的电子书: 如何通过ChatGPT学习机器学习?
“机器学习是人类所需的最后一个发明。” 尼克·博斯特罗姆