Python學(xué)習(xí)之.iloc與.loc的區(qū)別、聯(lián)系和用法
最近接觸到數(shù)據(jù)科學(xué),需要對一些數(shù)據(jù)表進(jìn)行分析,觀察到代碼中一會出現(xiàn)loc一會又出現(xiàn)iloc,下面對兩者的用法給出我的一些理解。
1.聯(lián)系
(1)操作對象相同:loc和iloc都是對DataFrame類型進(jìn)行操作;
(2)完成目的相同:二者都是用于選取DataFrame中對應(yīng)行或列中的元素。
2.區(qū)別
loc和iloc索引的行列標(biāo)簽類型不同。
iloc使用順序數(shù)字來索引數(shù)據(jù),而不能使用字符型的標(biāo)簽來索引數(shù)據(jù);注意:這里的順序數(shù)字是指從0開始計數(shù)!
loc使用實(shí)際設(shè)置的索引來索引數(shù)據(jù)。但行列名為數(shù)字時,loc也可以索引數(shù)字,但這里的數(shù)字不一定從0開始編號,是對應(yīng)具體行列名的數(shù)字!
3.用法
下面用代碼來講解兩者的用法。
3.1行列全為從0開始順序編號
import pandas as pd import numpy as np a = np.arange(12).reshape(3,4) #將a轉(zhuǎn)化為DataFrame類型 df = pd.DataFrame(a) #展示df df
由于未給df的行列命名,默認(rèn)從0開始編號,所以這個時候使用loc和iloc結(jié)果是一樣的。
索引為一個數(shù),默認(rèn)輸出行 print(df.loc[0])#輸出第0行元素 print(df.iloc[0])#輸出第0行元素
兩者輸出結(jié)果都為:
0 0
1 1
2 2
3 3
Name: 0, dtype: int32
輸出結(jié)果為df第0行元素,結(jié)果中第一列表示列名,第二列表示具體的值。如果只需要輸出某一列,輸入df.loc[:,0]表示輸出第0列。
如果需要輸出第0到2列的數(shù)據(jù)。
#方式1 df.loc[:,0:2]#可把loc理解為遍歷字符串類型,0:2則表示標(biāo)簽為0,1,2三列 #方式2 df.iloc[:,0:3]#iloc遍歷的數(shù)數(shù)字,python中0:3對應(yīng)0,1,和2
輸出結(jié)果均為:
3.2有一行或列不是從0順序編號
#把行標(biāo)簽換成其他數(shù)字編號 df.index=[2,5,7] df.loc[2]
此時df變?yōu)椋?/p>
輸出結(jié)果為:
0 0
1 1
2 2
3 3
Name: 2, dtype: int32
輸出結(jié)果對應(yīng)的是列標(biāo)簽為“2”所在的行。
我們繼續(xù)用df.iloc[2]輸出結(jié)果:
0 8
1 9
2 10
3 11
Name: 7, dtype: int32
可見輸出的是第2行的數(shù)據(jù)。
在這里我們能大概對loc和iloc的用法有了一定的了解。
3.3行或者列為非數(shù)字標(biāo)簽
#把行標(biāo)簽轉(zhuǎn)化為非數(shù)字類型 df.index=['a','b','c'] #輸出第a、b行,第0到2列的數(shù)據(jù) #方式1 df.loc[['a','b'],0:2]#可把loc理解為遍歷字符串類型,0:2則表示標(biāo)簽為0,1,2三列 #方式2 df.iloc[0:2,0:3]#iloc遍歷的是數(shù)字,0:2表示的是0和1,0:3表示0,1,2。
兩者輸出結(jié)果均為:
3.4 其他用法
一般情況下,表的行為從0編號的數(shù)字類型,列為具體的字符串類型。行的數(shù)字容易確定,列的列名容易確定。
#將行換成0 1 2編號 df.index=[0,1,2] #列標(biāo)簽換成A B C D df.columns=['A','B','C','D'] df.iloc[1]['A']#實(shí)現(xiàn)輸出第1行第A列的數(shù)據(jù)
輸出結(jié)果為4。
如果要輸出第1行,第AB列,使用df.iloc[1][['A','B']],這里一定要注意'A','B'是作為一個列表輸入的,右側(cè)一共有兩個中括號。
輸出結(jié)果:
A 4
B 5
Name: 1, dtype: int32
df.iloc[1][['A','B']]等價于df.iloc[1,0:2],但是很多情況下我們不知道具體列名對應(yīng)的數(shù)字,所以采用第一種方法可以提高編程效率。
總結(jié)
到此這篇關(guān)于Python學(xué)習(xí)之.iloc與.loc的區(qū)別、聯(lián)系和用法的文章就介紹到這了,更多相關(guān)Python .iloc與.loc用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyTorch中的C++擴(kuò)展實(shí)現(xiàn)
這篇文章主要介紹了PyTorch中的C++擴(kuò)展實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04聊聊python在linux下與windows下導(dǎo)入模塊的區(qū)別說明
這篇文章主要介紹了聊聊python在linux下與windows下導(dǎo)入模塊的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python列表(list)、字典(dict)、字符串(string)基本操作小結(jié)
這篇文章主要介紹了Python列表(list)、字典(dict)、字符串(string)基本操作小結(jié),本文總結(jié)了最基本最常用的一些操作,需要的朋友可以參考下2014-11-11selenium學(xué)習(xí)教程之定位以及切換frame(iframe)
這篇文章主要給大家介紹了關(guān)于selenium學(xué)習(xí)教程之定位以及切換frame(iframe)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01pytorch實(shí)現(xiàn)focal loss的兩種方式小結(jié)
今天小編就為大家分享一篇pytorch實(shí)現(xiàn)focal loss的兩種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python?Pytorch學(xué)習(xí)之圖像檢索實(shí)踐
隨著電子商務(wù)和在線網(wǎng)站的出現(xiàn),圖像檢索在我們的日常生活中的應(yīng)用一直在增加。圖像檢索的基本本質(zhì)是根據(jù)查詢圖像的特征從集合或數(shù)據(jù)庫中查找圖像。本文將利用Pytorch實(shí)現(xiàn)圖像檢索,需要的可以參考一下2022-04-04