Python中不同数据帧访问方式的性能
我正在研究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
%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
。