Pandas库入门
基本介绍
提供高性能易用数据类型和分析工具
Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用
1 |
|
Series,DataFrame
像对待单一数据一样对待
基于这两种数据类型有各类操作:基本操作、运算操作、特征类操作、关联类操作
对比NumPy与Pandas
基础数据类型与扩展数据类型
NumPy的基础数据类型ndarray可以表达n维数组,Pandas提供两种基于ndarray的扩展数据类型
数据结构表达与数据应用表达
NumPy关注数据的结构表达,数据的结构表达即数据构成的维度,即你给我一些数据,我关注要用什么维度将数据存储起来并表示出来,数据通过n维方式存储至一个变量中
Pandas关注数据的应用表达,使用数据的时候,怎么更有效地提取数据,以及对这些数据进行运算
我们把数据维度简历好,可以将数据结构表达清楚,但是在使用数据的时候,过于紧密的维度关系并不利于数据的实际应用,因此Pandas并没过分关注数据的结构表达,而是关注数据的应用表达,应用表达体现在数据与索引的关系
维度(数据间关系)、数据与索引间关系
Series与DataFrame都非常明确有效的索引,通过索引可以对数据进行相关分析与提取,通过数据与索引的关系可以使得数据的应用非常方便
Series类型
- Series是一维带“标签”数组
- Pandas的一维数据类型
- Series基本操作类似ndarray和字典,根据索引对齐,不根据维度
- 由一组数据及与之相关的数据索引组成
1 |
|
1 |
|
1 |
|
创建
可以由如下类型创建
Python列表 标量值 Python字典 ndarray 其他函数
标量类型创建
index表达Series类型的尺寸
1 |
|
字典类型创建
键值对中“键”是索引,index从字典中进行选择操作
1 |
|
ndarray创建
Python列表的话index与列表元素个数一致
ndarray中索引和数据都可以通过ndarray类型创建
1 |
|
其他函数创建
range()函数等
基本操作
Series类型包括index和values两部分,操作类似ndarray类型与Python字典类型。
1 |
|
ndarray类似方法
- 索引方法相同,采用[]
- NumPy中运算和操作可用于Series类型
- 可以通过自定义索引的列表进行切片
- 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
1 |
|
Python字典类似方法
- 通过自定义索引访问
- 保留字in操作
- 使用.get()方法
1 |
|
对齐操作
Series类型在运算中会自动对齐不同索引的数据
1 |
|
Name属性
Series对象和索引都可以有一个名字,存储在属性.name中
1 |
|
类型修改
Series对象可以随时修改并即刻生效
1 |
|
DataFrame类型
- Data是二维带”标签”数组
- Pandas的二维数据类型,由共用相同索引的一组列组成
- DataFrame是一个表格型的数据类型,每列值类型可以不同
- DataFrame既有行索引、也有列索引,基本操作类似Series
- DataFrame常用于表达二维数据,但可以表达多维数据
1 |
|
创建
可以由如下类型创建
- 二维ndarray对象
- 由一维ndarray、列表、字典、元组或Series构成的字典
- Series类型
- 其他的DataFrame类型
二维ndarry对象创建
1 |
|
一维ndarray对象字典创建
1 |
|
列表类型的字典创建
1 |
|
举例(查询索引等)
1 |
|
数据类型操作
如何改变Series和DataFrame对象
改变指的是增加或重排Series或DataFrame的索引,或者删掉其中的部分值
索引类型及其常用方法
Series和DataFrame的索引是Index类型
Index对象是不可修改类型
1 |
|
方法 | 说明 |
---|---|
.append(idx) | 连接另一个Index对象,产生新的Index对象 |
.diff(idx) | 计算差集,产生新的Index对象 |
.intersection(idx) | 计算交集 |
.union(idx) | 计算并集 |
.delete(loc) | 删除loc位置处的元素 |
.insert(loc,e) | 在loc位置增加一个元素e |
1 |
|
增加或重排:重新索引
.reindex()能够改变或重排Series和DataFrame索引
1 |
|
.reindex(index=None,columns=None,…)的参数
参数 | 说明 |
---|---|
index,columns | 新的行列自定义索引 |
fill_value | 重新索引中,用于填充缺失位置的值 |
method | 填充方法,ffill当前值向前填充,bfill向后填充 |
limit | 最大填充量 |
copy | 默认True,生成新的对象,False时,新旧相等不复制 |
1 |
|
删除:drop
.drop()能够删除Series和DataFrame指定行或列索引
1 |
|
1 |
|
数据类型运算
算数运算法则
- 算数运算根据行列索引,补齐后运算,运算默认产生浮点数
- 补齐时缺项填充NaN(空值)
- 二维和一维、一维和零维间为广播运算
- 采用+-*/符号进行的二元运算产生新的对象
1 |
|
1 |
|
方法形式运算
好处:增加可选参数
方法 | 说明 |
---|---|
.add(d,**argws) | 类型间加法运算,可选参数 |
.sub(d,**argws) | 类型间减法运算,可选参数 |
.mul(d,**argws) | 类型间乘法运算,可选参数 |
.div(d,**argws) | 类型间除法运算,可选参数 |
1 |
|
1 |
|
比较运算法则
- 比较运算只能比较相同索引的元素,不进行补齐
- 二维和一维、一维和零维间为广播运算
- 采用> < >= <= == !=等符号进行的二元运算产生布尔对象
1 |
|
1 |
|
数据的排序
一组数据表达一个或多个含义,通过摘要,我们有损地提取数据特征,获得:
基本统计(含排序)
分布/累计统计
数据特征
相关性、周期性等
数据挖掘(形成知识)
.sort_index()
在指定轴上根据索引进行排序,默认升序
- .sort_index(axis=0,ascending=True)
1 |
|
.sort_values()
在指定轴上根据数值进行排序,默认升序
- .sort_values(axis=0,ascendinng=True)
- DataFrame.sort_values(by,axis=0,ascending=True) #by:axis轴上的某个索引或索引列表
1 |
|
NaN统一放到排序末尾

数据的基本统计分析
适用于Series和DataFrame类型
方法 | 说明 |
---|---|
.sum() | 计算数据的总和,按0轴计算,下同 |
.count() | 非NaN值的数量 |
.mean() .median() | 计算数据的算数平均值、算数中位值 |
.var() .std() | 计算数据的方差、标准差 |
.min() .max() | 计算数据的最小值、最大值 |
.describe() | 针对0轴(各列)的统计汇总 |
1 |
|
1 |
|
适用于Series类型
自动索引容易获得元素区间部分(做切片),自定义索引很难得到一个序列,不易做切片
方法 | 说明 |
---|---|
.argmin() .argmax() | 计算数据最大值、最小值所在位置的索引位置(自动索引) |
.idxmin() .idxmax() | 计算数据最大值、最小值所在位置的索引(自定义索引) |
数据的累计统计分析
- 减少for循环使用,数据运算更加灵活
- 适用于Series和DataFrame类型
普通计算
方法 | 说明 |
---|---|
.cumsum() | 依次给出前1、2、…、n个数的和 |
.cumprod() | 依次给出前1、2、…、n个数的积 |
.cummax() | 依次给出前1、2、…、n个数的最大值 |
.cummin() | 依次给出前1、2、…、n个数的最小值 |
1 |
|
滚动计算(窗口计算)
方法 | 说明 |
---|---|
.rolling(w).sum() | 依次计算相邻w个元素的和 |
.rolling(w).mean() | 依次计算相邻w个元素的算术平均值 |
.rolling(w).var() | 依次计算相邻w个元素的方差 |
.rolling(w).std() | 依次计算相邻w个元素的标准差 |
.rolling(w).min() .max() | 依次计算相邻w个元素的最小值和最大值 |
1 |
|
数据的相关分析
两个事物,表示为X和Y,如何判断他们之间的存在相关性?
- X增大,Y增大,两个变量正相关
- X增大,Y减小,两个变量负相关
- X增大,Y无视,两个变量不相关
协方差
- 协方差>0,X和Y正相关
- 协方差<0,X和Y负相关
- 协方差=0,X和Y独立无关
Pearson相关系数
- r的取值范围[-1,1]
- 0.8-1.0 极强相关
- 0.6-0.8 强相关
- 0.4-0.6 中等程度相关
- 0.2-0.4 弱相关
- 0.0-0.2 极弱相关或无相关
函数
方法 | 说明 |
---|---|
.cov() | 计算协方差矩阵 |
.corr() | 计算相关系数矩阵,Pearson、Spearman、Kendall等系数 |
1 |
|