【基本工具】S02E05 Series数据对象使用方法概述

0.本集概览

1.学习Pandas库的必要性
2.Series可以视作带索引的增强版数组
3.Series的索引基本操作
4.Series的类字典特性

在第二季的前面4集里,我们学习了NumPy库,从这一集开始,我们向Python数据处理的另一个库Pandas进发。Pandas是在Numpy的基础上建立的一个第三方程序库。

1.学习Pandas库的必要性

之所以在掌握了NumPy库之后还要学习和使用Pandas,是因为ndarray数据结构常常作用于那些常见的干净整齐、组织良好的数据,但是我们在实际工作中面对的往往是更灵活、更复杂的任务和略显脏乱的数据,比如数据标签,清理缺失值,以及数据分组和数据透视。光使用NumPy去应对这些工作,就显得有些力不从心了。

但是这些数据清洗的工作,却是我们日常在数据分析过程中不可或缺的环节,而Pandas的Series和DataFrame数据对象就为我们的这种应用需求提供了捷径。

构成Pandas的三大数据结构基石是:Series、DataFrame、Index。Pandas对于数据的任何处理工作,都是由他们来实现,这几集我们学习Pandas的思路是,先快速浏览这三个数据结构,然后再按功能的具体分类,结合这三类数据结构来进行Pandas的学习

2.Series是增强版的数组

那么,我们今天就先来介绍Pandas中的第一个核心对象,Series对象。

Pandas是第三方库,需要单独安装,需要提醒一点的是,由于Pandas是基于NumPy工具库的,所以需要先安装好NumPy,这里我们还是在命令行下使用pip3工具进行安装。

pip3 install Pandas即安装完毕,非常简单

Series对象是一个带索引数据的一维数组,可以视作是增强版的NumPy结构。最简单的,可以用一个数组创建Series对象:
代码片段:

import pandas as pd

data = pd.Series([0.25,0.5,0.75,1])
print(data)

运行结果:

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64

这就是一个最简单的Series对象,它将一组数据和一组索引(这里没有显式指定,因此是默认的从0开始的整数)绑定在一起。

我们具体来看看他的索引和数据:
代码片段:

import pandas as pd

data = pd.Series([0.25,0.5,0.75,1])
print(data.values)
print(type(data.values))
print(data.index)
print(type(data.index))

运行结果:

[ 0.25  0.5   0.75  1.  ]
<class 'numpy.ndarray'>
RangeIndex(start=0, stop=4, step=1)
<class 'pandas.indexes.range.RangeIndex'>

我们从代码的结果可以看到,我们通过values属性获取Series的数据部分,类型是numpy里的ndarray数组,通过index属性返回索引对象,索引对象是一个类数组,就是我们后面要介绍的另一个Index数据类型。
代码片段:

import pandas as pd

data = pd.Series([0.25,0.5,0.75,1])
print(data[1])

运行结果:

0.5

通过这种索引的方法,我们轻松访问到了Series的指定元素。

3.Series的索引操作

通过上面这段代码,看上去Series是不是和NumPy一维数组非常相似?但是显得更高级一些,高级之处就在索引。Series对象用一种显式定义的索引与数值关联,他的索引可以是任意类型:整数(任意顺序)、字符串、日期类型等等。而一维NumPy数组则是隐式定义的整数索引,范围就要窄很多了。

首先:字符串可以作为Series的索引:
代码片段:

import pandas as pd

data = pd.Series([0.25,0.5,0.75,1],
                 index=['aa','bb','cc','dd'])
print(data['bb'])

运行结果:

0.5

这里我们显式定义使用字符串作为Series的索引,并且可以使用实际的字符串‘bb’来索引其对应的数据0.5

甚至可以进行类似的分片操作:
代码片段:

import pandas as pd

data = pd.Series([0.25,0.5,0.75,1],
                 index=['aa','bb','cc','dd'])
print(data['bb':'dd'])
print(type(data['bb':'dd']))

运行结果:
```
bb 0.50

top Created with Sketch.