数据结构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的一些基本技巧。