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

时间:2017-03-07 02:53:12

标签: python pandas dataframe

我正在研究Python Pandas Data Frame,我看到了

%timeit

然后我比较一些Dataframe, 下面是访问数据集变得非常相关的数据帧的不同方式的性能示例。

所以

%timeit data.ix[0,0]

10000个循环,最佳3:每循环159μs

%timeit data.loc[0,'nation']

10000次循环,最佳3次:每次循环158μs

%timeit data.iloc[0,0]

10000次循环,最佳为3:每循环132μs

%timeit data.iat[0,0]

100000个循环,最佳3:每循环5.9μs

你可以看到data.iat[0,0]与其他人截然不同。

我的问题是为什么.iat与其他人不同,以及如何运作? 我们可以使用任何数据吗?

1 个答案:

答案 0 :(得分:2)

首先,不要使用ix ...它的用例比iloc / lociat / {{更令人困惑1}}。 And ix will be deprecated

其次,at更快,但并不打算成为公共API,但没有什么能阻止您使用它。 See @jeff's comment

现在回答的问题:

get_valueiloc接受类似数组的输入... lociat则不接受。因此,如果您要访问数据框中的单个点,请务必使用atiat。但是,如果您要使用布尔数组或位置或索引值数组,则不能使用atiat,因此请使用atiloc