pandas学习笔记-Series

Series是一种类似于一维数组的对象,它由一组数据(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生最简单的Series:

import pandas as pd
import numpy as np
s= pd.Series([1,2,3,4,5])
print s
结果:
0    1
1    2
2    3
3    4
4    5

Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表示形式和索引对象:

print s.values
输出结果
[1 2 3 4 5]
print s.index
输出结果
RangeIndex(start=0, stop=5, step=1)

对创建的Series加索引

s = pd.Series([4,7,-5,3],index=['d','b','a','c'])
print s
结果
d    4
b    7
a   -5
c    3
print s.index
结果
Index([u'd', u'b', u'a', u'c'], dtype='object')

与普通的numpy数组相比,你可以通过索引的方式选取Series中的单个或一组值:

print s['a']
结果
-5
s['d'] = 6
print s[['c','a','d']]
结果
c    3
a   -5
d    6

数组运算都会保留索引和值之间的链接:

print s[s>0]
输出结果
d    6
b    7
c    3
print s*2
输出结果
d    12
b    14
a   -10
c     6
print np.exp(s)
输出结果
d     403.428793
b    1096.633158
a       0.006738
c      20.085537

可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。它可以用在许多原本需要字典参数的函数中:

print 'b' in s
结果
True
print 'e' in s
结果
False

如果数据被存放在一个python字典中,也可以直接通过这个字典来创建Series:

sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
s = pd.Series(sdata)
print s
结果
Ohio      35000
Oregon    16000
Texas     71000
Utah       5000

如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。

states = ['California','Ohio','Oregon','Texas']
s = pd.Series(sdata,index=states)
print s
结果
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0

在这个例子中,sdata中跟states索引相匹配的那3个值会被找出来并放到相应的位置上,但由于“California”所对应的sdata值找不到,所以其结果就为NaN(即“非数字”(not a number),在pandas中,它用于表示确实或NA值)。

pandas的isnull和notnull函数可以用于检测缺失数据:

print pd.isnull(s)
输出结果
California     True
Ohio          False
Oregon        False
Texas         False
print pd.notnull(s)
输出结果
California    False
Ohio           True
Oregon         True
Texas          True

Series也有类似的实例方法:

print s.isnull()
输出结果
California     True
Ohio          False
Oregon        False
Texas         False

对于许多应用而言,Series最重要的一个功能是:它在算数运算中会自动对齐不同索引的数据。

print obj1
print obj2
结果
Ohio      35000
Oregon    16000
Texas     71000
Utah       5000
dtype: int64

California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
dtype: float64
print obj1 + obj2
输出结果
California         NaN
Ohio           70000.0
Oregon         32000.0
Texas         142000.0
Utah               NaN

Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切:

obj2.name = 'population'
obj2.index.name = 'state'
print obj2
结果
state
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
Name: population, dtype: float64

Series的索引可以通过赋值的方式就地修改:

obj2.index = ['Bob','Steve','Jeff','Ryan']
print obj2
输出结果
Bob          NaN
Steve    35000.0
Jeff     16000.0
Ryan     71000.0
Name: population, dtype: float64
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值