看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Series 是一个一维的带有标签的数组,这个数据可以由任何类型数据构成,包括整型、浮点、字符、Python 对象等。它的轴标签被称为「索引」,它是 Pandas 最基础的数据结构。
学习提示
本文内容需要一些背景知识,如果是初学者可以跳过,在学习过程中可以再来查看。
Series 的创建方式如下:
s = pd.Series(data, index=index)
其中:
data
可以是 python 对象、numpy 的 ndarray 、一个标量(定值,如 8)index
索引是轴上的一个列表,必须和 data 的长度相同,如果没有指定则自动从 0 开始,[0, ..., len(data) - 1]
更多关于 Series 构造、行为特征等内容可访问:创建 Series pd.Series()。
上文中的 data
可以取以下方法的值:
列表和元组可以直接放入 pd.Series()
:
pd.Series(['a', 'b', 'c', 'd', 'e'])
pd.Series(('a', 'b', 'c', 'd', 'e'))
可以是 numpy 的 ndarray:
# 由索引为 a、b.. , 五个随机浮点数数组组成
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
s.index # 查看索引
s = pd.Series(np.random.randn(5)) # 未指定索引
使用字典来生成后,key 为索引,value 为内容,顺序为字典内容的顺序:
d = {'b': 1, 'a': 0, 'c': 2}
s = pd.Series(d)
[out]:
b 1
a 0
c 2
dtype: int64
# 如果指定索引,则会按索引顺序,如无法与索引对应的会产生缺失值
pd.Series(d, index=['b', 'c', 'd', 'a'])
Out:
b 1.0
c 2.0
d NaN
a 0.0
dtype: float64
一个具体的值,如果不指定索引长度为 1,指定索引后长度为索引的数量,每个索引的值都是它。
pd.Series(5.)
Out:
0 5.0
dtype: float64
# 指定索引
pd.Series(5., index=['a', 'b', 'c', 'd', 'e'])
Out:
a 5.0
b 5.0
c 5.0
d 5.0
e 5.0
dtype: float64
Series 的操作非常灵活,以下介绍的操作方法是对照类似的其他数据类型,可以应用在所有 Series 上,不管 Series 是从何种方式定义生成的。
Series 操作与 ndarray 类似,支持切片。
s = pd.Series([1,2,3,4,5,6,7,8])
s[3] # 类似列表切片
s[2:]
s.median() # 平均值,包括其他的数学函数
s[s > s.median()] # 筛选大于平均值的内容
s[[1, 2, 1]] # 指定索引的内容,括号的列表是索引
s.dtype # 数据类型
s.array # 返回值的数列
s.to_numpy() # 转为 numpy 的 ndarray
3 in s # 逻辑运算,检测索引
s = pd.Series([14.22, 21.34, 5.18],
index=['中国', '美国', '日本'],
name='人口')
s['中国'] # 14.22 # 根 key 进行取值,如果没有报 KeyError
s['印度'] = 13.54 # 类似字典一样增加一个数据
'法国' in s # False 逻辑运算,检测索引
s = pd.Series([1,2,3,4])
s + s # 同索引相加,无索引位用 NaN 补齐
s * 2 # 同索引相乘
s[1:] + s[:-1] # 选取部分进行计算
np.exp(s) # 求e的幂次方
Series 可以指定一个名称,如无名称不返回内容(NoneType)。
s = pd.Series([1,2,3,4], name='数字')
s.name # '数字'
s = s.rename("number") # 修改名称
s2 = s.rename("number") # 修改名称并赋值给一个新变量
s = pd.Series([1,2,3,4], name='数字')
s.add(1) # 每个元素加1 abs()
s.add_prefix(3) # 给索引前加个3,升位
s.add_suffix(4) # 同上,在后增加
s.sum() # 总和
s.count() # 数量,长度
s.agg('std') # 聚合,仅返回标准差, 与 s.std() 相同
s.agg(['min', 'max']) # 聚合,返回最大最小值
s.align(s2) # 联接
s.any() # 是否有为假的
s.all() # 是否全是真
# 2.0 版本已经取消,用 pd.concat(s1, s2)
s.append(s2) # 追加另外一个 Series
s.apply(lambda x:x+1) # 应用方法
s.empty # 是否为空
s3 = s.copy() # 深拷贝
# 等等,以上是常用的,方法非常多
更新时间:2024-05-25 17:22:34 标签:pandas series