购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 Pandas数据结构

在数据分析中,Pandas最为常见,是医学、金融学、统计学等领域处理数据的最主要工具。它的主要数据结构为series(一维数据)和DataFrame(二维数据),其中DataFrame与Excel数据结构、R中的dataframe相似。

3.2.1 Series(一维数据)

Pandas的Series是一种类似一维数组的对象,由一组数据(可以保存任何数据类型)以及一组与之相关的数据标签(即索引)组成。Series构造方法为:Pandas.Series(data= None ,index= None , dtype= None , name= None , copy= False , fastpath= False )。其中各参数说明见表3-3。

表3-3 构建Series常见参数说明

创建一个简单的Series,如代码清单3-8所示。

代码清单3-8 Series示例

代码运行结果如下:

Series的表现形式为:索引在左,值在右。如果没有指定索引,则自动创建一个0到N-1(N为数据长度)的整数型索引。可以通过Series的values和index属性获取其数组表示形式(值)和索引对象,如代码清单3-9所示。

代码清单3-9 Series的values和index属性

代码运行结果如下:

3.2.2 DataFrame(二维数据)

Pandas的DataFrame是一个表格型数据结构,含有一组有序的列,每列可以有不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,可以被看作由Series组成的字典(共同使用一个索引),也可以理解为一个二维数组结构,类似二维数组,如图3-2所示。

图3-2 DadaFrame的数据结构

DataFrame的构造方法为:Pandas.DataFrame(data= None , index= None , columns= None , dtype= None , copy= None )。其中各参数说明见表3-4。

构建DataFrame的方法有很多,比较常用的有由列表或NumPy组成的字典、Series等方法构建。

(1)通过列表组成的字典构建DataFrame:任何元素是字典的列表都可以构建DataFrame,如代码清单3-10所示。

表3-4 DataFrame构造方法常见参数说明

代码清单3-10 通过列表组成的字典构建DataFrame示例

代码运行结果如下:

(2)通过NumPy数组构建DataFrame:详见代码清单3-11。

代码清单3-11 通过NumPy数组构建DataFrame示例

代码运行结果如下:

在代码清单3-11中,首先定义了数组各列的数据类型对象patients,其中“S5”表示长度为5的字符串类型,然后将数组转换成DataFrame,结果中“Patient”列字符串前面的字符“b”表示该字符串是按照字节类型存储的,各种存放类型说明见表3-5。

表3-5 DataFrame中数据存放类型说明

在Python3中,bytes类型和Unicode编码str类型的互相转换方式是使用str.encode('utf-8')将字符串类型编码为bytes类型,使用bytes.decode('utf-8')将字节类型转换为Unicode编码字符串str。

(3)通过单个Series对象构建DataFrame,如代码清单3-12所示。

代码清单3-12 通过单个Series对象构建DataFrame示例

代码运行结果如下:

3.2.3 NumPy与Pandas转换

NumPy与Pandas是大数据分析中比较常用的两个数据分析库,在实际分析中,经常会遇到NumPy的ndarray数据结构与Pandas的Series和DataFrame数据结构之间的互相转换问题。使用rand函数生成一个ndarray,并与DataFrame数据结构进行相互转换,见代码清单3-13。

代码清单3-13 NumPy与Pandas的DataFrame转换示例

代码清单3-13中,用Numpy的随机函数生成随机数组,用rand函数根据给定维度生成[0,1)之间的数据(包含0但不包含1)。代码运行结果如下所示: G4ZnyGWNhegW4R2JVgrwfFhs3Z3lWEPvquyrqR/vD/KX9C9/Sj4M1y2g/IaILR66

点击中间区域
呼出菜单
上一章
目录
下一章
×