【学习笔记】Pandas索引、切片

本文详细介绍了Pandas中的Series和DataFrame对象的索引与切片操作。针对Series,从字典和一维数组的角度讨论了属性查看、切片和索引器的使用。对于DataFrame,它被视作二维数组和结构化数组,可以按字典方式或二维数组方式操作,包括取值、行列转置和使用loc、iloc进行索引。特别指出,显式和隐式切片的区别以及ix索引器的不推荐使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Series对象操作

上回说到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: object
d
a
'''

DataFrame对象操作

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

同理,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索引器可以混合索引,但是牺牲了代码可读性,强烈不建议使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值