python中loc、iloc和ix函數區別和作用詳解(附示例)

Pandas的基本數據結構是Series(數組)和DataFrame(類似二維數組),Pandas 提供了 Index 對象,每個 Series 都會帶有一個對應的Index,用來標記不同的元素,Index 的內容不一定是數字,也可以是字母、中文等,它類似於SQL中的主鍵
當我們只想取數據中的各別行或列,可以用.loc .iloc .ix來實現:

1.loc意義:通過行標籤索引行數據

loc[n]表示索引的是第n行(index是整數)
loc[‘n’]表示索引的是第‘n’行(index是字符)

2.iloc意義:通過行號獲取行數據
3.ix:結合前兩種的混合索引

三者區別

  1. ix / loc 可以通過行號和行標籤進行索引,比如 df.loc[‘a’] , df.loc[1], df.ix[‘a’] , df.ix[1](這裏的‘a’是行標籤)
  2. iloc只能通過行號索引 , df.iloc[0] 是對的, 而df.iloc[‘a’] 是錯誤的
  3. .ix[0:n,列名]或.loc[0:n,列名]取數據時,是可以取到index=n這列的,因爲此時0:n指的不是下標,而是index的名稱。而iloc[0:n,列名]只能取到前n行,也就是index=n-1的行。

建議:當用行號索引的時候, 儘量用 iloc 來進行索引; 而用標籤索引的時候用 loc , ix 儘量別用。

代碼示例:

import pandas as pd
filename='ratings.csv'
data=pd.read_csv(filename,names=['user_id','movie_id','rating','time'], sep='::', engine='python')
 #數據集爲movielens-1M中的ratings.csv數據
 
data_test1=data.iloc[:,:2]  #選取位置爲[0,2)列的整列數據
data_test2=data.iloc[0:5,1]  #選取位置爲1的列的[0,5)行的數據
 
data_test3=data.loc[0:2,'movie_id']  #選取列名爲‘movie_id’的[0,2]行的數據
#loc[M:N,m:n]表示取M:N行的m到n-l列的數據

print('-------打印data_test1----------')
print(data_test1)
print('-------打印data_test2-------------------')
print(data_test2)
print('-------打印data_test3----------------------------')
print(data_test3)

輸出結果:

-------打印data_test1----------
         user_id   movie_id
0               1      1193
1               1       661
2               1       914
3               1      3408
4               1      2355
...           ...       ...
1000204      6040      1091
1000205      6040      1094
1000206      6040       562
1000207      6040      1096
1000208      6040      1097

[1000209 rows x 2 columns]

-------打印data_test2-------------------
0    1193
1     661
2     914
3    3408
4    2355
Name: movie_id, dtype: int64
-------打印data_test3----------------------------
0    1193
1     661
2     914
Name: movie_id, dtype: int64
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章