第5章 Pandas入门

  • 格式:docx
  • 大小:481.49 KB
  • 文档页数:16

Pandas是Python的核心数据分析支持库,它提供了大量能使我们快速便捷地处理表格数据的函数和方法。本章开始Pandas入门内容,从安装开始,逐步介绍Pandas相关的入门知识,主要包括Pandas的两大数据结构,即Series对象和DataFrame对象,还有索引的相关知识。

5 第 章

Pandas入门

第5章 Pandas入门

2 5.1 一分钟入门Pandas

在正式学习Pandas之前,先花一分钟时间来认识一下Pandas。本节通过一个小示例帮助新手快速上手了解Pandas。更多知识和实例可以参考后面的内容。

首先运行PyCharm,导入Pandas与NumPy模块,代码如下:

import numpy as np

import pandas as pd

然后生成数据,代码如下:

01 s = pd.Series([1, 3, 5,7,9,np.nan, 2,4,6])

02

print(s)

图5.1 一列数据

以上就是通过Pandas生成的一列浮点型的数据,左侧数据是Pandas默认自动生成整数索引。np.nan表示生成空值数据。

5.2 Pandas家族成员

Pandas家族主要由两大核心成员Series对象和DataFrame对象组成。

 Series对象:带索引的一维数组结构,也就是一列数据。

 DataFrame对象:带索引的二维数组结构,表格型数据,也就是包括行和列的数据,像Excel一样。 第5章 Pandas入门

3 举个简单的例子,以“学生成绩表”为例,Series对象和DataFrame对象如图5.2所示。

图5.2 Series对象和DataFrame对象

Series对象包含一些属性和函数,主要用来对每一列数据中的字符串数据进行操作,包括查找、替换、切分等等

而DataFrame对象主要对表格数据进行操作,如底层数据和属性(行数、列数、数据维数等等),数据的输入输出、数据类型转换、缺失数据检测和处理、索引设置、数据选择筛选、数据计算、数据分组统计、数据重塑排序与转换、数据增加与合并,日期时间数据的处理、以及通过DataFrame实现绘制图表等。

5.2.1 Series对象

Series对象是Pandas库中的一种数据结构,它类似一维数组,由一组数据以及与这组数据相关的索引组成,或者仅有一组数据没有索引也可以创建一个简单的Series对象。Series对象可以存储整数、浮点数、字符串、Python对象等多种类型的数据。

Series对象可以通过Pandas的Series类来创建,也可以是DataFrame对象的一些方法的返回值,具体要看API文档对于该方法返回值的描述。

创建Series对象也就是创建一列数据,主要使用Pandas的Series类,语法如下:

pandas.Series(data,index=index)

参数说明:

 data:表示数据,支持Python列表、字典、numpy数组、标量值(即只有大小,没有方向的量。也就是说,只是一个数值。如s=pd.Series(5))。

 index:表示行标签(索引)。

说明:当data参数是多维数组时,index长度必须与data长度一致。如果没有指定index参数,自动创建数值型索引(从0~data数据长度-1)。

【例5.1】 创建一列数据(实例位置:资源包\Code\05\01)

下面分别使用列表和字典创建Series对象,也就是一列数据。程序代码如下: 第5章 Pandas入门

4 03 import pandas as pd

04 # 使用列表创建Series对象

05 s1=pd.Series([1,2,3])

06 print(s1)

07 # 使用字典创建Series对象

08 s2 = pd.Series({"A":1,"B":2,"C":3})

09 print(s2)

运行程序,输出结果为:

0 1

1 2

2 3

dtype: int64

A 1

B 2

C 3

dtype: int64

【例5.2】 创建一列“物理”成绩(实例位置:资源包\Code\05\02)

下面创建一列“物理”成绩。程序代码如下:

01 import pandas as pd

02 wl=pd.Series([88,60,75])

03 print(wl)

运行程序,输出结果为:

0 88

1 60

2 75

dtype: int64

上述举例,如果通过pandas模块引入Series对象,那么就可以直接在程序中使用Series对象了。关键代码如下:

01 from pandas import Series

02 wl=Series([88,60,75])

5.2.2 DataFrame对象

DataFrame对象也是Pandas库中的一种数据结构,它是由多种类型的列组成的二维数组结构,类似于Excel、SQL或Series对象构成的字典。DataFrame是Pandas最常用的一个对象,它与Series对象一样支持多种类型的数据。 第5章 Pandas入门

5 DataFrame对象是一个二维表数据结构,是由行列数据组成的表格数据。DataFrame对象既有行索引也有列索引,它可以看作是由Series对象组成的字典,不过这些Series对象共用一个索引,如图5.3所示。

图5.3 DataFrame对象(成绩表)

说明:关于索引我们将在5.3节进行介绍。

创建DataFrame对象也就是创建表格数据,主要使用Pandas的DataFrame类,语法如下:

pandas.DataFrame(data,index,columns,dtype,copy)

参数说明:

 data:表示数据,可以是ndarray数组、series对象、列表、字典等。

 index:表示行标签(索引)。

 columns:列标签(索引)。

 dtype:每一列数据的数据类型,其与Python数据类型有所不同,如object数据类型对应的是Python的字符型。如表5.2所示是Pandas数据类型与Python数据类型的对应。

表5.2 数据类型对应表

Pandas dtype Python type

object str

int64 int

float64 float

bool bool

datetime64 datetime64[ns]

timedelta[ns] NA

category NA

 copy:用于复制数据。

下面分别使用列表和字典创建DataFrame对象。 第5章 Pandas入门

6 (1)通过列表创建DataFrame对象

【例5.3】 通过列表创建成绩表(实例位置:资源包\Code\05\03)

通过列表创建成绩表,包括语文、数学和英语,程序代码如下:

01 import pandas as pd

02 # 解决数据输出时列名不对齐的问题

03 pd.set_option('display.unicode.east_asian_width', True)

04 # 创建数据

05 data = [['甲',110,105,99],

06 ['乙',105,88,115],

07 ['丙',109,120,130]]

08 # 指定列名

09 columns = ['姓名','语文','数学','英语']

10 # 创建DataFrame数据

11 df = pd.DataFrame(data=data,columns=columns)

12 print(df)

运行程序,输出结果为:

姓名 语文 数学 英语

0 甲 110 105 99

1 乙 105 88 115

2 丙 109 120 130

(2)通过字典创建DataFrame对象

通过字典创建DataFrame,需要注意:字典中的value值只能是一维数组或单个的简单数据类型,如果是数组,要求所有数组长度一致;如果是单个数据,则每行都添加相同数据。

【例5.4】 通过字典创建成绩表(实例位置:资源包\Code\05\04)

通过字典创建成绩表,包括语文、数学、英语和班级,程序代码如下:

01 import pandas as pd

02 #解决数据输出时列不对齐的问题

03 pd.set_option('display.unicode.east_asian_width', True)

04 df = pd.DataFrame({

05 '姓名':['甲','乙','丙'],

06 '语文':[110,105,109],

07 '数学':[105,88,120],

08 '英语':[99,115,130]})

09 print(df)

运行程序,输出结果为:

姓名 语文 数学 英语

0 甲 110 105 99 第5章 Pandas入门

7 1 乙 105 88 115

2 丙 109 120 130

通过以上两种方法的对比,使用字典创建DataFrame对象代码看上去更直观。

5.3 索引

5.3.1 什么是索引

前面学习了如何创建Series对象(一列数据)和创建DataFrame对象(表格数据),细心的同学可能发现了在运行结果中,最左边出现了一列编号0、1、2,如图5.4所示,而在我们的代码中并没有这样的数据,因为它是自动生成的,这个就是索引,索引也可以自己设置。那么,索引的好处是什么呢?它能够帮助我们快速定位数据从而找到数据。

【例5.5】 设置索引(实例位置:资源包\Code\05\05)

例如,设置“姓名”为索引。

01 df=df.set_index('姓名')

02

print(df)

运行程序,设置索引后“姓名”从原来位置变到了最左边,如图5.5所示,此时“姓名”就不是一个普通的列了,而是一个索引列。

索引列 索引

图5.4 索引 图5.5 设置“姓名”为索引

索引主要用于定位数据,它分为隐式索引和显示索引。

 隐式索引:默认的索引,也可以叫作“位置索引”,它是系统自动生成的索引,其值为0、1、2…依次类推。

 显示索引:手动设置的索引,也可以叫作“标签索引”,主要通过index参数或者set_index()方法设置。(例如“甲”、“乙”、“丙”)