Python 【Series: 一维数据对象】

Series: 一维数据对象

    今天简单介绍一下series这种数据对象。
    Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成,Series比较像列表(数组)和字典的结合体。

1. 准备过程

    由于series更适合在ipython的环境进行操作,所以以下代码均是在ipython的环境下进行操作的。如果还没安装ipython的读者,可以参照我前面安装pandas的方法(Python安装pandas模块),pip install ipython安装一下。安装后直接输入ipython启动就好了。启动后,import pandas as pd!

2. 创建方式
# 三种方法
# 法一
In [5]: pd.Series([4,7,-5,3])
Out[5]:
0    4
1    7
2   -5
3    3
dtype: int64

# 法二
In [6]: pd.Series([4, 7, -5, 3], index=['a', 'b', 'c', 'd'])
Out[6]:
a    4
b    7
c   -5
d    3
dtype: int64

# 法三
In [7]: pd.Series({'a':1,'b':2})
Out[7]:
a    1
b    2
dtype: int64

# 获取值数组和索引数组:values属性和index属性
In [8]: sr = pd.Series([4, 7, -5, 3], index=['a', 'b', 'c', 'd'])

In [9]: sr.values
Out[9]: array([ 4,  7, -5,  3], dtype=int64)

In [10]: sr.index
Out[10]: Index(['a', 'b', 'c', 'd'], dtype='object')
3. Series-使用特性:
1. series支持array的特性(下标)∶
   1. 从ndarray创建Series: Series(arr)
   2. 与标量运算:sr*2
   3. 两个Series运算: sr1+sr2
   4. 索引: sr[0], sr[[1,2,4]
   5. 切片: sr[O:2]
   6. 通用函数: np.abs(sri)
   7. 布尔值过滤sr[sr>o]
2. Series支持字典的特性(标签)∶
   1. 从字典创建Series: Series(dic) 
   2. in运算: 'a'in sr
   3. 键索引: sr['a'], sr[['a','b','d']]
4. Series-数据对齐:

举个series相加的例子吧:

In [16]: sr1 = pd.Series([12,23,34],index=['c','a','d'])

In [17]: sr2 = pd.Series([11,20,10],index=['d','c','a'])

In [18]: sr1+sr2
Out[18]:
a    33
c    32
d    45
dtype: int64

    pandas在进行两个Series对象的运算时,会按索引(标签)进行对齐然后计算,比如上面这个栗子,得到的结果中,索引a的值=sr1[‘a’] + sr2[‘a’] =33,其他两个值也是同样道理。
    但是当两个series对象中,其中一个对象中有的索引,而另一个对象没有,相加的时候,该索引的值为NAN如下:

In [19]:  sr1 = pd.Series([12,23,34],index=['c','a','g'])

In [20]: sr2 = pd.Series([11,20,10],index=['d','c','a'])

In [21]: sr1 + sr2
Out[21]:
a    33.0
c    32.0
d     NaN
g     NaN
dtype: float64
5. 常用函数和方法:
  1. add函数

     # 如果直接用的话,那么add是和sr1+sr2效果一样的
     In [22]: sr1.add(sr2)
     Out[22]:
     a    33.0
     c    32.0
     d     NaN
     g     NaN
     dtype: float64
     
     # 设置一下参数后, 则会被有的那一个值填充:
     In [23]: sr1.add(sr2, fill_value=0)
     Out[23]:
     a    33.0
     c    32.0
     d    11.0
     g    34.0
     dtype: float64
    
  2. 缺失数据处理:

    1. 法一: 直接删除
      首先判断一下是否有缺失值:
    sr.isnull()  缺失值的地方返回True,反正返回False
    sr.notnull()  缺失值的地方返回False,反正返回True
    
    In [24]: sr = sr1.add(sr2)
    
    In [25]: sr
    Out[25]:
    a    33.0
    c    32.0
    d     NaN
    g     NaN
    dtype: float64
    
    In [26]: sr.isnull()
    Out[26]:
    a    False
    c    False
    d     True
    g     True
    dtype: bool
    
    In [27]: sr.notnull()
    Out[27]:
    a     True
    c     True
    d    False
    g    False
    dtype: bool
    

    再把缺失值行给删掉:

    # 法一: 用布尔索引
    In [28]: sr[sr.notnull()]
    Out[28]:
    a    33.0
    c    32.0
    dtype: float64
    
    # 法二: 用sr.dropna()方法
    In [30]: sr.dropna()
    Out[30]:
    a    33.0
    c    32.0
    dtype: float64
    
    1. 用值填充:
    # 用0填充
    In [31]: sr.fillna(0)
    Out[31]:
    a    33.0
    c    32.0
    d     0.0
    g     0.0
    dtype: float64
     
    # 用平均值填充
    In [32]: sr.fillna(sr.mean())
    Out[32]:
    a    33.0
    c    32.0
    d    32.5
    g    32.5
    dtype: float64
    

就简单介绍到这里吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值