2017-03-07 38 views
3

我只是學習Python的熊貓數據幀訪問dataframes不同的方式,我看到性能在Python中

%timeit 

話,我比較了幾個數據幀, 下面是演出來訪問數據的不同方法的例子數據集變大時高度相關的幀。

所以

%timeit data.ix[0,0] 

10000個環路,最好的3:每循環159微秒

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

10000環路,最好的3:每循環158微秒

%timeit data.iloc[0,0] 

10000個環路,最好3:每個迴路132μs

%timeit data.iat[0,0] 

100000循環,最好的3:每循環

5.9微秒,你可以看到data.iat[0,0]別人巨大的差別。

我的問題是爲什麼.iat與其他人不同,以及如何工作? 我們可以使用任何數據嗎?

+1

可能[重複](http://stackoverflow.com/questions/ 28757389/LOC-VS-ILOC-VS-IX-VS-AT-VS-IAT)。 – Psidom

回答

2

首先,不使用ix ...它的使用情況比iloc/lociat/at更加混亂。 And ix will be deprecated

其次,get_value更快但不打算成爲公共API,儘管沒有任何東西阻止您使用它。 See @jeff's comment


現在的答案的肉:

ilocloc接受陣列狀的輸入... iatat沒有。因此,如果您訪問數據幀中的單個點,請務必使用iatat。但是,如果你正在尋找使用布爾陣列或位置或索引值的陣列,則不能使用iatat所以使用ilocloc