python數(shù)據(jù)分析基礎(chǔ)之pandas中l(wèi)oc()與iloc()的介紹與區(qū)別介紹
前言
我們經(jīng)常在尋找數(shù)據(jù)的某行或者某列的時(shí)常用到Pandas中的兩種方法iloc和loc,兩種方法都接收兩個(gè)參數(shù),第一個(gè)參數(shù)是行的范圍,第二個(gè)參數(shù)是列的范圍。
一、loc[]函數(shù)
loc:
- 接收的是行、列的名稱或標(biāo)簽。
- 在切片是按閉區(qū)間切片,也就是區(qū)間兩邊都能取到。
二、iloc[]函數(shù)
iloc:
- 接收的是行、列的索引位置(下標(biāo),從0開始)。
- 按傳統(tǒng)的左閉右開的的方式切片。
三、詳細(xì)用法
創(chuàng)建用于測試的數(shù)據(jù)表dataframe:
import pandas as pd data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]} frame=pd.DataFrame(data) frame.index=list('abcde') frame
loc方法
1、單個(gè)行名/列名 或 行名/列名的列表
要求:讀取第2行,行名為’b’。
frame.loc['b']
注意: 上面這種寫法,運(yùn)行"print(type(frame.loc[‘b’]))"可以知道返回的是<class ‘pandas.core.series.Series’>對象,如果要<class ‘pandas.core.frame.DataFrame’>對象可以改成frame.loc[[‘b’]]。
frame.loc[['b']]
要求:取第1、2列的第2與第5行,第1、2列的列名分別為’state’與’year’,第2、5行的行名分別為’b’和’e’。
frame.loc[['b','e'],['state','year']]
2、列名/行名的切片
要求:讀取第2列,列名為’year’。
frame.loc[:,'year'] #返回的是<class 'pandas.core.series.Series'>對象。
frame.loc[:,['year']] #返回的是<class 'pandas.core.frame.DataFrame'>對象。
要求:取第2行第3列,第2行行名為’b’,第3列列名為’pop’。
frame.loc['b','pop']
要求:讀取dataframe某個(gè)區(qū)域,比如第3列的第2到第5行,第3列為"pop"列,第2到第5行即b行到e行。
frame.loc['b':'e','pop'] #返回的是<class 'pandas.core.series.Series'>對象。
frame.loc['b':'e',['pop']] #返回的是<class 'pandas.core.frame.DataFrame'>對象。
要求:取第1、2列的第2到第5行,第1、2列的列名分別為’state’和’yea‘列,第2、5行的行名為’b’和‘e’行。
frame.loc['b':'e','state':'year'] #返回的是<class 'pandas.core.frame.DataFrame'>對象。
3、返回布爾型列表的表達(dá)式(判斷或函數(shù))
要求:根據(jù)判斷條件讀取,取第3列大于2的。
frame.loc[frame['pop']>2,'pop'] #返回的是<class 'pandas.core.series.Series'>對象。
frame.loc[frame['pop']>2,['pop']] #返回的是<class 'pandas.core.frame.DataFrame'>對象。
要求:根據(jù)函數(shù)讀取,取第3列大于2的所有行與列。
frame.loc[lambda x: x['pop']>2]
iloc方法
1、單個(gè)下標(biāo) 或 若干下標(biāo)構(gòu)成的列表,從0開始。
要求:取第2行的值。
frame.iloc[1]
注意: 上面這種寫法,運(yùn)行"print(type(frame.iloc[1]]))"可以知道返回的是<class ‘pandas.core.series.Series’>對象,如果要<class ‘pandas.core.frame.DataFrame’>對象可以改成frame.iloc[[1]]。
frame.iloc[[1]]
要求:取第1、2列的第2與第5行。
frame.iloc[[1,4],[0,1]]
2、下標(biāo)的切片
要求:取第2列的值。
frame.iloc[:,1] #返回的是<class 'pandas.core.series.Series'>對象。
frame.iloc[:,[1]] #返回的是<class 'pandas.core.frame.DataFrame'>對象。
要求:取第2行第3列
frame.iloc[1,2]
要求:讀取dataframe某個(gè)區(qū)域,比如第3列的第2到第5行。
frame.iloc[1:5,2] #返回的是<class 'pandas.core.series.Series'>對象。
frame.iloc[1:5,[2]] #返回的是<class 'pandas.core.frame.DataFrame'>對象。
要求:取第1、2列的第2到第5行。
frame.iloc[1:5,0:2] #因?yàn)槭?iloc[]中用:表示從第幾行/列到第幾行/列是左閉右開的的方式,因此這里下標(biāo)3表示第四行與第四列是取不到的。 frame.iloc[[1,2,3,4],[0,1]] #第二種寫法
3、可以返回合理值的函數(shù)
要求:當(dāng)DataFrame的index是整數(shù),取index為偶數(shù)的記錄。
import pandas as pd data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]} frame=pd.DataFrame(data) frame frame.iloc[lambda x: x.index % 2 == 0]
總結(jié)
共同點(diǎn)
- 兩者都接收兩個(gè)參數(shù),第一個(gè)參數(shù)是行的范圍,第二個(gè)參數(shù)是列的范圍。
- 兩者都可以有行索引值沒有列索引值,但有列索引值前必須得有行索引值,但loc[]行索引值只能為名稱形式來取,不能按下標(biāo)形式來取。iloc[]則相反。
取第三列,無論使用loc[]函數(shù)還是iloc[]函數(shù),如果沒有行索引都會(huì)報(bào)錯(cuò)。
frame.loc['pop'] frame.loc[,'pop'] frame.iloc[,3]
不同點(diǎn)
1、loc[]函數(shù)接收的是行/列的名稱(可以是整數(shù)或者字符),iloc[]函數(shù)接收的是行/列的下標(biāo)(從0開始),不能是字符。
2、loc[]函數(shù)在切片時(shí)是按閉區(qū)間切片的,也就是區(qū)間兩邊都能取到,iloc[]函數(shù)則是按傳統(tǒng)的左閉右開的方式切片的。
參考文章:
https://blog.csdn.net/weixin_43298886/article/details/112632237
https://blog.csdn.net/Leon_Kbl/article/details/97492966
到此這篇關(guān)于python數(shù)據(jù)分析基礎(chǔ)之pandas中l(wèi)oc()與iloc()的介紹與區(qū)別的文章就介紹到這了,更多相關(guān)python pandas中l(wèi)oc()與iloc()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在python中使用requests 模擬瀏覽器發(fā)送請求數(shù)據(jù)的方法
今天小編就為大家分享一篇在python中使用requests 模擬瀏覽器發(fā)送請求數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12pandas中iloc函數(shù)的具體實(shí)現(xiàn)
iloc是Pandas中用于基于整數(shù)位置進(jìn)行索引和切片的方法,本文主要介紹了pandas中iloc函數(shù)的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06python?教程實(shí)現(xiàn)?turtle海龜繪圖
這篇文章主要介紹了python?教程實(shí)現(xiàn)?turtle繪制海龜繪圖,文章基于python的相關(guān)資料展開turtle繪制海龜繪圖的詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-05-05python return實(shí)現(xiàn)匯率轉(zhuǎn)換器教程示例
這篇文章主要為大家介紹了python return實(shí)現(xiàn)匯率轉(zhuǎn)換器教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06深度學(xué)習(xí)入門之Pytorch 數(shù)據(jù)增強(qiáng)的實(shí)現(xiàn)
這篇文章主要介紹了深度學(xué)習(xí)入門之Pytorch 數(shù)據(jù)增強(qiáng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Python中關(guān)于logging模塊的學(xué)習(xí)筆記
在本篇文章里小編給大家整理的是一篇關(guān)于Python中l(wèi)ogging模塊相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。2020-06-06