Pandas中Series索引用法

这是一篇最基础的Pandas用法总结,也方便自己日后进行复习与查询。
上一篇文章总结了Series和DataFrame的创建方法,却忽略了索引这一重要的概念。今天在这篇文章中先来盘点一下Series索引问题。

1. 索引是什么

1.1 认识索引

先用上一篇博文中的方法来创建一个简单的Series。

s1 = pd.Series(['a', 'b', 'c', 'd'])
print(s1)
-----------------------------
[out]: 
0    a
1    b
2    c
3    d
dtype: object

我们说过,s1最左侧从0开始的那一列数字就叫索引(index)。每一个索引的右侧对应着一个值(value)。让我们先看看怎样输出所有的index和所有的value。

print(s1.index)     # 由于是默认生成的索引,输出就是这个样子
[out]: 
RangeIndex(start=0, stop=4, step=1)
-----------------------------------------
print(s1.values)    # 输出为Numpy中的数组类型
[out]: 
array(['a', 'b', 'c', 'd'], dtype=object)      

1.2 自定义索引

当然,我们在创建Series的时候也可以使用index这个参数自己指定索引长什么样子。

s2 = pd.Series(['a', 'b', 'c', 'd'], index = ['one', 'two', 'three', 'four'])
print(s2)
-----------------------------
[out]:
one      a
two      b
three    c
four     d
dtype: object

如果此时输出index和value的值:

print(s1.index)      # 此时就会输出我们自定义的索引
[out]: 
Index(['one', 'two', 'three', 'four'], dtype='object')
-----------------------------
print(s2.values)
[out]:
array(['a', 'b', 'c', 'd'], dtype=object)

2. 索引怎么用

2.1 使用位置索引

整个Series是存在一定位置顺序的,第一个数的位置用0标记,第二个数用1标记,以此类推。因此我们就可以利用这个位置索引来取数。

# 对于s2,输出是一毛一样的
print(s1[2])     # 取一个值
[out]: 'c'
-------------------------------------------
print(s1[[0, 3]])   # 取多个值,用列表括起来
[out]: 
0    a
3    d
dtype: object

2.2 使用标签索引

对于s2,我们不仅有位置顺序,还有我们自定义的索引值啊(也可以叫做标签),因此也就诞生了利用标签的索引。

s2['two']      # 取一个值
[out]: 'b'
-----------------------------------------------
s2[['one', 'three']]    # 取多个值,用列表括起来
[out]:
one      a
three    c
dtype: object

2.3 使用切片索引

之前的例子都是使用单个的索引值(即使使用索引列表取多个值,也是对于列表中的index一个一个的找对应的value)。这就像一整个面包,这揪一块吃,那揪一块吃。
但是面包也可以直接切下来一整片吃呀,这就用到了切片的概念,也即直接将Series中一整块连续的数据取出来。

# 对位置索引进行切片
print(s2[1:3])      # 使用位置索引,是不包含最后一个位置3对应的值滴
-----------------------------
[out]: 
two      b
three    c

# 对标签索引进行切片
print(s2['two':'four'])    # 使用标签索引,却可以包含最后一个标签对应的值
-----------------------------
[out]: 
two      b
three    c
four     d
dtype: object

2.3 使用布尔值索引

s3 = pd.Series([89, 92, 70, 95], index = ['小明', '小红', '小兰', '小花'])
-----------------------------
[out]: 
小明    89
小红    92
小兰    70
小花    95
dtype: int64

我们要选出成绩大于90的人。首先需要判断每个人的成绩是否大于90:

print(s3 > 90)
-----------------------------
[out]: 
小明    False
小红     True
小兰    False
小花     True
dtype: bool

然后利用得到的这个布尔series就可以提取出所有判断结果为True的部分:

print(s3[s3 > 90])
-----------------------------
[out]: 
小红    92
小花    95
dtype: int64
发布了4 篇原创文章 · 获赞 30 · 访问量 4465

猜你喜欢

转载自blog.csdn.net/Fantine_Deng/article/details/104724589