2-04 Series 操作

2.4 Series 操作

Pandas 主要提供的数据结构为:

  • Series:一维数组,与 Numpy 中的一维数组 (array) 类似,二者与 Python 基本的数据结构列表 (List) 也很相近,其区别是:List 和 Series 中的元素可以是不同的数据类型,而 Array 中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
  • Time - Series:以时间为索引的 Series。
  • DataFrame:二维的表格型数据结构。很多功能与 R 中的 data.frame 类似。可以将 DataFrame 理解为 Series 的容器,可以将 DataFrame 的每一列 (Column) 视为一个 Series,如下图所示。
  • Panel :三维的数组,可以理解为 DataFrame 的容器。

在这里插入图片描述

圖 2-4-1 pandas 表示法

Series 就如同 List 一样,一系列数据,每个数据对应一个索引值。

实例

from pandas import Series
s = Series([1,2,'py','thon'])
print(s)
  
# 输出结果如下:
0       1
1       2
2      py
3    thon
dtype: object

这里,我们实质上创建了一个 Series 对象,这个对象当然就有其属性和方法了。比如,下面的两个属性依次可以显示 Series 对象的数据值和索引,当然,也可以透过 dir() 函数来观察 Series 的属性和方法。

实例

print(s.index)
print(s.values)
dir(s) # 内容很多,所以就不列出来了
  
# 输出结果如下:
RangeIndex(start=0, stop=4, step=1)
[1 2 'py' 'thon']

列表的索引只能是从 0 开始的整数,Series 数据类型在默认情况下,其索引也是如此。不过,区别于列表的是,Series 可以自定义索引 (index),以及给定名称 (name):

实例

from pandas import Series
s = Series(['tsinghua','man',24],index=['name','sex','age'], name="person")
print(s)
  
# 输出结果如下:
name    tsinghua
sex          man
age           24
Name: person, dtype: object 

从上例发现,Series 的结构很像 dict 数据,所以我们也可以透过 dict 数据,直接转换定义为 Series 对象。

实例

from pandas import Series
sd = {'python':9000,'c++':9001,'c#':9002}
s1 = Series(sd)
print(s1)
  
# 输出结果如下:
python    9000
c++       9001
c#        9002
dtype: int64
  

Pandas 的优势在这里体现出来,如果自定义了索引,自定的索引会自动寻找原来的索引,如果一样的,就取原来索引对应的值,这个可以简称为“自动对齐”。

实例

from pandas import Series
s2 = Series(sd,index=['java','c#','c++','python'])
print(s2)
  
# 输出结果如下:
java         NaN
c#        9002.0
c++       9001.0
python    9000.0
dtype: float64

我们在定义索引的顺序为 ‘c#’,‘c++’,‘python’ ,但在 dict 结构中的顺序是 ‘python’,‘c++’,‘c#’,可以发现,并不会因为顺序的不同,而导致值的设定不同,此外,在 Pandas 中,如果没有值,都对齐赋给 NaN。

NumPy 有专门的方法来判断值是否为空,此外,Series 对象也有类似的方法

实例

print(pd.isnull(s2))
print(s2.isnull())
  
# 输出结果如下:
java       True
c#        False
c++       False
python    False
dtype: bool
  
java       True
c#        False
c++       False
python    False
dtype: bool

对索引的名字,是可以重新定义的。

实例

s2.index = ['MySQL','Oracle','SQL Server', 'Redis']
print(s2)
  
# 输出结果如下:
MySQL            NaN
Oracle        9002.0
SQL Server    9001.0
Redis         9000.0
dtype: float64

对于 Series 数据,也可以做算术运算或布尔运算:

实例

print(s2 + 10)
print(s2[s2 > 9000])
  
# 输出结果如下:
MySQL            NaN
Oracle        9012.0
SQL Server    9011.0
Redis         9010.0
dtype: float64
  
Oracle        9002.0
SQL Server    9001.0
dtype: float64
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值