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...