Python 语言 Pandas 数据筛选 Query/Loc/Iloc 的效率对比

Python阿木 发布于 2025-06-08 9 次阅读


阿木博主一句话概括:Python Pandas 数据筛选效率对比:Query、Loc 与 Iloc 的性能分析

阿木博主为你简单介绍:
在数据分析领域,Pandas 是一个功能强大的库,它提供了多种数据筛选方法,包括 Query、Loc 和 Iloc。本文将通过对这些方法的性能分析,探讨它们在处理大数据集时的效率差异,为数据分析师提供选择合适筛选方法的参考。

一、
Pandas 是 Python 中用于数据分析的一个库,它提供了丰富的数据结构,如 DataFrame 和 Series,以及一系列数据处理功能。在数据分析过程中,数据筛选是必不可少的步骤。Pandas 提供了多种数据筛选方法,其中 Query、Loc 和 Iloc 是最常用的三种。本文将对比这三种方法的效率,以帮助读者了解它们在不同场景下的适用性。

二、Query 方法
Query 方法是 Pandas 中一种基于字符串表达式的筛选方式,它允许用户使用类似 SQL 的语法来筛选数据。Query 方法在 Pandas 1.0.0 版本中引入,它使用 `query()` 函数实现。

python
import pandas as pd

创建示例数据
data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
'Age': [28, 22, 34, 29],
'Salary': [50000, 54000, 58000, 62000]}

df = pd.DataFrame(data)

使用 Query 方法筛选数据
filtered_df = df.query('Age > 25')
print(filtered_df)

Query 方法的优点是语法简洁,易于理解,但它的性能可能不如 Loc 和 Iloc 方法。

三、Loc 方法
Loc 方法是 Pandas 中最常用的数据筛选方法之一,它基于标签(labels)进行筛选。Loc 方法可以通过 `.loc` 属性访问,并使用标签或整数索引来筛选数据。

python
使用 Loc 方法筛选数据
filtered_df = df.loc[df['Age'] > 25]
print(filtered_df)

Loc 方法的优点是它支持多种筛选条件,包括布尔索引、条件索引等,且性能通常优于 Query 方法。

四、Iloc 方法
Iloc 方法是 Pandas 中另一种数据筛选方法,它基于整数索引进行筛选。Iloc 方法可以通过 `.iloc` 属性访问,并使用整数索引来筛选数据。

python
使用 Iloc 方法筛选数据
filtered_df = df.iloc[df['Age'] > 25]
print(filtered_df)

Iloc 方法的优点是它可以直接使用整数索引进行筛选,这在处理大型数据集时可能更高效。

五、性能对比
为了比较 Query、Loc 和 Iloc 方法的性能,我们可以使用 Pandas 的 `timeit` 模块来测量执行时间。

python
import timeit

创建一个较大的数据集
large_data = {'Name': ['John', 'Anna', 'Peter', 'Linda'] 1000,
'Age': [28, 22, 34, 29] 1000,
'Salary': [50000, 54000, 58000, 62000] 1000}

large_df = pd.DataFrame(large_data)

定义测试函数
def test_query():
return large_df.query('Age > 25')

def test_loc():
return large_df.loc[large_df['Age'] > 25]

def test_iloc():
return large_df.iloc[large_df['Age'] > 25]

测试性能
query_time = timeit.timeit(test_query, number=1000)
loc_time = timeit.timeit(test_loc, number=1000)
iloc_time = timeit.timeit(test_iloc, number=1000)

print(f"Query method time: {query_time}")
print(f"Loc method time: {loc_time}")
print(f"Iloc method time: {iloc_time}")

通过上述代码,我们可以看到在不同数据集和筛选条件下的性能差异。

六、结论
通过本文的性能对比分析,我们可以得出以下结论:

1. 在处理小型数据集时,Query、Loc 和 Iloc 方法的性能差异不大。
2. 在处理大型数据集时,Iloc 方法的性能通常优于 Loc 和 Query 方法。
3. Query 方法的语法简洁,易于理解,但在性能上可能不如 Loc 和 Iloc 方法。

在选择数据筛选方法时,应根据具体的数据集大小和筛选条件来决定使用哪种方法。对于大型数据集,建议优先考虑 Loc 和 Iloc 方法。