Pandas模块之Series:03-操作技巧

本文主要介绍Series结构数据的基本操作,包括以下几个方面:

  • 数据查看
  • 重新索引
  • 数据对齐
  • 数据增删改
数据查看

.head()方法和.tail()方法可以默认查看Series中的前、后5组数据,括号内也可以指定具体数据量。

s = pd.Series(np.random.rand(50))
print(s.head())
print("-"*10)
print(s.tail())
=========================
0    0.220782
1    0.983910
2    0.865307
3    0.091070
4    0.120625
dtype: float64
----------
45    0.707706
46    0.407068
47    0.011391
48    0.413022
49    0.202933
dtype: float64
重新索引

.reindex将会根据索引重新排序,如果当前索引不存在,则引入缺失值。

s = pd.Series(np.random.rand(3),index = ['a','b','c'])
print(s)
print('-'*10)
s1 = s.reindex(['c','b','a','d'])
print(s1)
=================================
a    0.515032
b    0.500950
c    0.572870
dtype: float64
----------
c    0.572870
b    0.500950
a    0.515032
d         NaN
dtype: float64

从结果中可以看出,经过reindex操作,改变了索引顺序,但是原索引和值的对应关系在新的数据结构中保持不变,而新索引‘d’对应的值以缺失值代替。
当然,也可以在reindex方法中指定缺失值的填充值。

s2 = s.reindex(['c','b','a','d'], fill_value = 0)
print(s2)
===================
c    0.572870
b    0.500950
a    0.515032
d    0.000000
dtype: float64
数据对齐

Series数据结构的对齐的作用场景为两个Series数据进行运算,示例如下:

s1 = pd.Series(np.random.randint(10,size = 3),index = ['a','b','c'])
s2 = pd.Series(np.random.randint(10,size = 3),index = ['b','d','c'])
print(s1)
print(s2)
print(s1+s2)
==================
a    0
b    2
c    4
dtype: int32
b    6
d    9
c    5
dtype: int32
a    NaN
b    8.0
c    9.0
d    NaN
dtype: float64

从结果可以看出,Series的对齐操作是将两个Series结构数据中,索引值相同的数据进行运算,且不受顺序影响。如果两个Series数据中存在不同的索引,则用NaN作为最终结果。

数据增删改

数据的增加或修改,可以通过指定的下标索引或者标签对应的值完成,示例如下:

# 原始数据
s1 = pd.Series(np.random.rand(5))
s2 = pd.Series(np.random.rand(5), index = list('ngjur'))
print(s1)
print(s2)
# 指定数据
s1[5] = 100
s2['a'] = 100
print(s1)
print(s2)
============原始数据=============
0    0.578177
1    0.927243
2    0.345562
3    0.567035
4    0.216635
dtype: float64
n    0.873200
g    0.794130
j    0.016395
u    0.444403
r    0.002486
dtype: float64
============修改数据=============
0      0.578177
1      0.927243
2      0.345562
3      0.567035
4      0.216635
5    100.000000
dtype: float64
n      0.873200
g      0.794130
j      0.016395
u      0.444403
r      0.002486
a    100.000000
dtype: float64

也可以通过append方法,将两个Series数据合并起来,此方法不改变原数据

s3 = s1.append(s2)
print(s3)
print(s1)
================
0      0.578177
1      0.927243
2      0.345562
3      0.567035
4      0.216635
5    100.000000
n      0.873200
g      0.794130
j      0.016395
u      0.444403
r      0.002486
a    100.000000
dtype: float64
0      0.578177
1      0.927243
2      0.345562
3      0.567035
4      0.216635
5    100.000000
dtype: float64

Series数据的删除操作用drop()方法,通过指定标签来完成相应操作。同时,该方法中的inplace参数,默认为false,即返回的是结果副本,不改变源数据。

s.drop(labels=None,axis=0, index=None, columns=None, level=None, inplace=False,
    errors='raise',)
s = pd.Series(np.random.rand(5), index = list('ngjur'))
print(s)
s1 = s.drop('n')
s2 = s.drop(['g','j'])
print(s1)
print(s2)
==================================
n    0.352701
g    0.227147
j    0.020439
u    0.018626
r    0.449618
dtype: float64
g    0.227147
j    0.020439
u    0.018626
r    0.449618
dtype: float64
n    0.352701
u    0.018626
r    0.449618
dtype: float64
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值