python数据分析(10)——数据结构Series基本技巧

本文介绍了Python数据分析中Series数据结构的基本技巧,包括数据查看、重新索引、对齐、增删改数据。使用.head()和.tail()查看数据;reindex()用于排序和填充缺失值;对齐操作中相同索引相加,空值不变;drop()删除指定索引的数据,append()添加新数据。

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

数据结构Series基本技巧——数据查看/ 重新索引/ 对齐/ 增、删、改数据
数据查看:

s=pd.Series(np.random.rand(20))
s=pd.Series(np.random.rand(20))

print(s.head(10))
0    0.129709
1    0.512601
2    0.314574
3    0.880346
4    0.842414
5    0.644624
6    0.459001
7    0.303956
8    0.895811
9    0.575024
dtype: float64

print(s.tail())
15    0.805485
16    0.198437
17    0.063945
18    0.481985
19    0.509790
dtype: float64

.head()查看头部数据
.tail()查看末尾数据
默认查看五行。

重新索引 reindex:

s=pd.Series(np.random.rand(5),index=['a','b','c','d','e'])
print(s)
a    0.408040
b    0.404898
c    0.463164
d    0.575219
e    0.613857
dtype: float64
s1=s.reindex(['c','d','e','f'])
print(s1)
c    0.463164
d    0.575219
e    0.613857
f         NaN
dtype: float64

可以看到,reindex()保留了已有的索引和值,按照新的索引排序,新增的索引对应没有值,为NaN。
注意:reindex()并不是改变index名称的方法。

可以对上面的缺失值进行填充
增加一个fill_value参数即可:

s1=s.reindex(['c','d','e','f'],fill_value=0)
print(s1)
c    0.463164
d    0.575219
e    0.613857
f    0.000000
dtype: float64

或者用常用的fillna()方法:

s1=s.reindex(['c','d','e','f'])
print(s1.fillna(0))
c    0.463164
d    0.575219
e    0.613857
f    0.000000
dtype: float64

缺失值就会被替换为0。

对齐:

s1=pd.Series(np.random.rand(3),index=['jack','marry','tom'])
s2=pd.Series(np.random.rand(3),index=['lily','jack','marry'])
#构造两个series:s1,s2
print(s1)
print(s2)
print(s1+s2)
jack     0.371053
marry    0.299164
tom      0.156420
dtype: float64
lily     0.290775
jack     0.065207
marry    0.189824
dtype: float64
jack     0.436260
lily          NaN
marry    0.488989
tom           NaN
dtype: float64

结果可以看到,相同索引对应的值相加,空值和常数相加仍是空值。
另外,索引本身可以不唯一:

s1=pd.Series(np.random.rand(4),index=['jack','jack','marry','tom'])
print(s1)
jack     0.254610
jack     0.849757
marry    0.324048
tom      0.032261
dtype: float64

print(s1['jack'])
jack    0.254610
jack    0.849757
dtype: float64

但是,一般实际操作中都避免索引不唯一的情况。

删除 drop:
用标签作为索引即可删除对应的值。

s1=pd.Series(np.random.rand(3),index=['jack','marry','tom'])
print(s1)
print(s1.drop('tom'))
jack     0.536403
marry    0.260268
tom      0.116374
dtype: float64
jack     0.536403
marry    0.260268
dtype: float64

print(s1)
jack     0.536403
marry    0.260268
tom      0.116374
dtype: float64

drop()返回的是副本,如果要删除原数据,要设置参数inplace=Ture。

s1=pd.Series(np.random.rand(3),index=['jack','marry','tom'])
print(s1)
s1.drop('tom',inplace=True)
print(s1)
jack     0.932132
marry    0.249401
tom      0.471216
dtype: float64
jack     0.932132
marry    0.249401
dtype: float64

添加 :
直接通过下标索引/标签index的方法添加新值或修改原有值:

s=pd.Series(np.random.rand(5),index=['a','b','c','d','e'])
print(s)
s[4]=100
s['f']=100
print(s)
a    0.252079
b    0.172969
c    0.269010
d    0.073992
e    0.077431
dtype: float64
a      0.252079
b      0.172969
c      0.269010
d      0.073992
e    100.000000
f    100.000000
dtype: float64

通过append()方法,直接添加一个数组。

s2=pd.Series(np.random.rand(3),index=['jack','marry','tom'])
s3=s1.append(s2)
print(s3)
a        0.990982
b        0.212248
c        0.305338
d        0.338942
e        0.249876
jack     0.885162
marry    0.818943
tom      0.428572
dtype: float64

append()也是返回副本,不改变原数组。

s1.append(s2)
print(s1)
a    0.990982
b    0.212248
c    0.305338
d    0.338942
e    0.249876
dtype: float64

以上就是Series的一些基本技巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值