第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()方法设置。(例如“甲”、“乙”、“丙”)