學習筆記 Pandas索引 切片

2021-09-29 02:02:14 字數 4956 閱讀 6075

dataframe物件操作

上回說到series可以看做是帶索引的一維陣列,也可以看做是字典,下面來分別說不同看法下的series物件可以有哪些操作。

#建立乙個series物件

data=pd.series(np.linspace(

0.25,1

,4),index=

['a'

,'b'

,'c'

,'d'])

print

(data)

print

('檢視索引'

,data.keys())

print

('檢視鍵值'

,list

(data.items())

)print

('檢查鍵'

,'a'

in data)

data[

'e']

=1.25

#增加值

print

('增加值'

,'\n'

,data,sep='')

'''執行結果

a 0.25

b 0.50

c 0.75

d 1.00

dtype: float64

檢視索引 index(['a', 'b', 'c', 'd'], dtype='object')

檢視鍵值 [('a', 0.25), ('b', 0.5), ('c', 0.75), ('d', 1.0)]

檢查鍵 true

增加值a 0.25

b 0.50

c 0.75

d 1.00

e 1.25

dtype: float64

dtype: float64

'''

print

('顯式索引切片'

,'\n'

,data[

'a':

'c']

,sep='')

print

('隱式索引切片'

,'\n'

,data[:2

],sep='')

print

('複雜索引'

,'\n'

,data[

['a'

,'c']]

,sep='')

print

('掩碼索引'

,'\n'

,data[

(data>

0.3)

&(data<

0.8)

],sep='')

'''執行結果

顯式索引切片

a 0.25

b 0.50

c 0.75

dtype: float64

隱式索引切片

a 0.25

b 0.50

dtype: float64

複雜索引

a 0.25

c 0.75

dtype: float64

掩碼索引

b 0.50

c 0.75

dtype: float64

'''

data=pd.series(

['a'

,'b'

,'c'

,'d'

],index=[3

,2,1

,0])

print

(data)

print

('取值為顯式'

,'\n'

,data[1]

,sep='')

print

('切片為隱式'

,'\n'

,data[1:

3],sep='')

'''執行結果

3 a

2 b

1 c

0 d

dtype: object

取值為顯式

c切片為隱式

2 b

1 c

dtype: object

'''

data=pd.series(

['a'

,'b'

,'c'

,'d'

],index=[3

,2,1

,0])

print

(data)

print

('取值為顯式'

,'\n'

,data[1]

,sep='')

print

('切片為隱式'

,'\n'

,data[1:

3],sep='')

print

(data.loc[0]

)#loc切片取值都顯式

print

(data.iloc[0]

)#iloc切片取值都隱式

'''執行結果

3 a

2 b

1 c

0 d

dtype: object

取值為顯式

c切片為隱式

2 b

1 c

dtype: objectda

'''

dataframe物件類似二維陣列和結構化陣列,有時像若干series物件構成的字典。

類字典操作中可以用data['column']取列的值(column為列名)

也可以用data.column屬性方式取值,且二者結果相同data.column is data['column']返回值為true

注意:屬性方式在列名與方法重名時失效,因此減少屬性方式的使用是穩妥的。

檢視陣列值data.values

行列轉置data.t

獲取一行資料data.values[0]

獲取一列資料data['column']

對於單個標籤取值時,為操作

但當使用標籤切片時,為操作

與series相同,也可以使用掩碼過濾

a=np.array([[

90,92,

93],[

60,75,

87],[

33,67,

26],[

86,34,

90]])

data=pd.dataframe(a,index=

['zhangfei'

,'guanyu'

,'zhaoyun'

,'machao'],

columns=

['english'

,'chinese'

,'math'])

print

(data)

print

(data[

'english'])

print

(data[

'zhangfei'

:'machao'])

print

(data[data[

'english'

]>80]

)'''

執行結果

english chinese math

zhangfei 90 92 93

guanyu 60 75 87

zhaoyun 33 67 26

machao 86 34 90

zhangfei 90

guanyu 60

zhaoyun 33

machao 86

name: english, dtype: int32

english chinese math

zhangfei 90 92 93

guanyu 60 75 87

zhaoyun 33 67 26

machao 86 34 90

english chinese math

zhangfei 90 92 93

machao 86 34 90

'''

同理,loc全為顯式操作,iloc全為隱式操作

注意:顯式切片時,左右皆包含,而隱式切片操作時,左含右不含

print

(data.loc[

:'zhaoyun',:

'chinese'])

print

(data.iloc[:3

,:2]

)'''

執行結果

english chinese

zhangfei 90 92

guanyu 60 75

zhaoyun 33 67

english chinese

zhangfei 90 92

guanyu 60 75

zhaoyun 33 67

'''

ix索引器可以混合索引,但是犧牲了**可讀性,強烈不建議使用

pandas 索引切片

ser1 pd.series range 10,15 index list abcde print ser1 普通索引 print ser1 a print ser1 0 print 注意通過自定義索引的左閉右閉的,用預設索引 下標 是左閉右開的 print ser1 a c print ser1 ...

pandas切片學習

1 建立dataframe df pd.dataframe 2 列印dataframe一些屬性 df.dtypes age int64 grade float64 object dtype object df.value array型 10 100.0 female 20 90.0 male 30 ...

Pandas學習筆記 03 索引

第三章 索引 總結 目錄4 索引運算 5 索引切片 5.2 多級索引切片 列選擇 loc 基於元素 iloc 基於位置 query 減少 長度 行索引和列索引都是multiindex型別,索引中的元素是元組。索引的名字和值屬性可以通過names和values獲得。通過get level values...