pandas中loc iloc ix的區別和使用

2021-08-19 03:47:36 字數 2332 閱讀 5809

在利用pandas處理資料時loc、iloc、ix對資料的操作很頻繁,所以這裡簡單的介紹一下它們之間的區別和各自的使用。

pandas的索引可歸納為3種

.loc,標籤索引             (location)

.iloc,位置索引            (int-localtion)

.ix,標籤與位置混合索引

對於ix先按標籤索引嘗試操作,然後再按照位置索引嘗試操作

注意dataframe索引時可將其看作ndarray操作

標籤的切片索引是包含末尾位置的

data = pd.dataframe()
a  b

0 6 a

1 7 b

2 7 a

3 4 c

4 3 d

in [5]: data['a']

out[5]:

0 6

1 7

2 7

3 4

4 3

name: a, dtype: int32

可以看出pandas的列是優先索引的。

in [8]: data[0:2]

out[8]:

a b

0 6 a

1 7 b

如果我們直接使用切片來選擇,可以看出它是對行的位置索引選擇,並且不包含末尾位置。

in [6]: data.loc[0:2,'a']

out[6]:

0 6

1 7

2 7

使用loc來標籤索引,這裡可以看出使用標籤索引是包含切片末尾位置的,這是因為它將0:2中的0、1、2都當作了行標籤,而不是數字。

in [10]: data.iloc[1:3]

out[10]:

a b

1 7 b

2 7 a

剛才我們說了,iloc它是按照位置來索引的,所以1:3是行的位置索引,並且不包含末為位置

如果我們使用loc標籤索引來選擇不存在的行標籤會怎麼樣?

in [11]: data2 = pd.dataframe(,index=list('abcde'))

in [12]: data2

out[12]:

x y

a 5 1

b 4 2

c 3 3

d 2 4

e 1 5

我們使用loc來選擇不存在的行標籤:

data2.loc[1:3]
typeerror: cannot do slice indexing on with these indexers [1] of
很明顯的報錯資訊,它找不到1、2、3這三個標籤。

同樣再使用iloc會如何:

in [13]: data2.iloc[1:3]

out[13]:

x y

b 4 2

c 3 3

可以正確選出結果。

in [15]: data2.ix[1:3]

out[15]:

x y

b 4 2

c 3 3

ix前面我們說了它是混合索引,並且先按照標籤進行索引,這裡它沒有找到對應標籤,於是以位置進行索引,所以不包含末為位置。

in [16]: data2.ix['b':'c']

out[16]:

x y

b 4 2

c 3 3

看,直接我們使用標籤索引也能找到對應值,並且標籤包含末為位置!

好了以上就是loc、iloc以及ix的簡單使用和區別。

利用它們我們還可以在對行選擇的同時對列進行選擇,達到對資料的篩選目的.。

in [18]: data.loc[1:3,'a']

out[18]:

1 7

2 7

3 4

name: a, dtype: int32

df.loc[df['gender'] == 'male', 'label'] = 0

表示增加'label'列,且當df的'gender'為'male'時,其值賦為0。這在資料分析中將某些列轉換為數值型的常用處理。

pandas中DataFrame mean函式用法

mean 平均數 pandas中的df.mean 函式預設是等價於df.mean 0 即按軸方向求平均,得到每列資料的平均值。相反的df.mean 1 則代表按行方向求平均,得到每行資料的平均值。舉例 我們 首先匯入pandas包 import pandas as pd建立矩陣 首先使用預設方法 會...

Pandas中的分類

一 分類變數的結構 乙個分類變數包括三個部分,元素值 values 分類類別 categories 是否有序 order 從上面可以看出,使用cut函式建立的分類變數預設為有序分類變數 一 獲取分類屬性 a describe方法 該方法描述了乙個分類序列的情況,包括非缺失值個數 元素值類別數 不是分...

Pandas中resample方法詳解

pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。方法的格式是 dataframe.resample rule how none axis 0 fill method none closed none label non...