Python中不同数据帧访问方式的性能

Python中不同数据帧访问方式的性能,python,pandas,dataframe,Python,Pandas,Dataframe,我正在研究Python数据帧,我看到 %timeit 然后我比较了几个数据帧, 下面是访问数据帧的不同方法的性能示例,这些方法在数据集变大时具有高度相关性 所以 10000个回路,最好为3个:每个回路159µs %timeit data.loc[0,'nation'] %timeit data.iloc[0,0] %timeit data.iat[0,0] 10000个回路,最好为3个:每个回路158µs %timeit data.loc[0,'nation'] %timeit dat

我正在研究Python数据帧,我看到

%timeit
然后我比较了几个数据帧, 下面是访问数据帧的不同方法的性能示例,这些方法在数据集变大时具有高度相关性

所以

10000个回路,最好为3个:每个回路159µs

%timeit data.loc[0,'nation']
%timeit data.iloc[0,0]
%timeit data.iat[0,0]
10000个回路,最好为3个:每个回路158µs

%timeit data.loc[0,'nation']
%timeit data.iloc[0,0]
%timeit data.iat[0,0]
10000个回路,最好为3个:每个回路132µs

%timeit data.loc[0,'nation']
%timeit data.iloc[0,0]
%timeit data.iat[0,0]
100000个回路,最好为3:5.9µs/回路

%timeit data.loc[0,'nation']
%timeit data.iloc[0,0]
%timeit data.iat[0,0]
您可以看到
data.iat[0,0]
与其他产品有很大的不同

我的问题是为什么
.iat
与其他产品不同,以及它是如何工作的?
我们可以处理任何数据吗?

首先,不要使用
ix
。。。它的用例比
iloc
/
loc
iat
/
at
更容易混淆

第二,
get\u value
速度更快,但并不打算成为公共API,尽管没有什么可以阻止您使用它


现在,答案的核心是:

iloc
loc
接受类似数组的输入<代码>iat和
at
不允许。因此,如果要访问数据帧中的单个点,请务必使用
iat
at
。但是,如果希望使用布尔数组或位置或索引值数组,则不能使用
iat
at
,因此尽可能使用
iloc
loc