Pandas是在NumPy基础上建立的新程序库,提供了一种高效的DataFrame数据结构
![]()
1、Pandas对象类型
import numpy as np
import pandas as pd
1.1 Series对象
- Series可以理解为有名字属性的一维数组。
- 所以本质还是一维的向量,不过向量里的每个元素都有自己的名字/id
关于显式索引与隐式索引
(1) 隐式索引:对于一个列表/数组而言,隐式索引就是表征顺序位置的信息。第一个元素的隐式索引永远是0、第二个元素的隐式索引永远是1......
(2) 显式索引:对于Pandas里的Series对象的每个元素,除了自然就有的隐式索引信息,还有自己的名字id充当显示索引,可供方便调用对象子集。
(3)不要将Series对象想的太复杂,对应R语言,就是一个有名字的字符串~~
- Series的名字属性称之为
index
属性
(1)创建series对象
pd.Series(data, index = index)
,其中data与index可以是list/array,本身可以是多种数据类型,但各自内部要保持一致,且二者长度相同。

如果不设置
index
参数,则默认与隐式索引的值相同。此外还可以设置name=""
的参数,增加Series对象的name属性。

(2)series对象取子集
-
按隐式索引取
-
按显式索引取
按照显示索引的切片方法取子集时,为左闭右闭(起始均包括),如下示例
- 当series对象的index也是整数类型时,就容易与隐式索引混淆,这里我们可以使用索引器
.loc()
:只按显式索引取;.iloc()
:只按隐式索引取
1.2 DataFrame对象
- pandas的DataFrame对象就可以类比于R语言的data.frame对象(numpy的二维数组则可类比于R里的matrix对象)
- 从构成角度来看,DataFrame可视为由多个等长,且index属性相同的Series组成;每个Series视为一列~
- DataFrame的行名(column)和列名(index)可作为显示索引调用
(1)创建DataFrame对象
-
pd.DataFrame({"col1" : s1, "col2" : s2, ...})
(2)DataFrame对象取子集
-
建议使用索引器的方法
.loc
:显式索引、.iloc
:隐式索引
-
如果只是想取DataFrame对象的列,下面的操作更简单~
2、 Series与DataFrame的简单运算
- 由于Series与DataFrame有index(以及column)属性,所以它们之间的运算需要考虑这些属性配对~
2.1 Series运算
-
简单运算
2.2 Series间的运算
- 按照索引配对的元素进行计算,没有配对的,则返回NA值(可在使用
numpy
运算函数时设置fill_value
参数以填充NA值)
DataFrame对象的简单运算以及DataFrame对象之间的运算与上面类似就不展开了
2.2 DataFrame与Series的运算
-
简单来说,就是DataFrame按行/列进行与Series对象的运算
示例数据
-
对于python的内置运算符,默认按照DataFrame的每行(column属性)进行与目标Series(index属性)的配对计算,如果不匹配则返回NA值
- 对于numpy提供的运算函数,可通过设置
axis
参数交代是按照DataFrame的行/列进行计算
3、 关于NaN值,以及相关函数
-
NaN(Not a Number):表示缺失值,可能因各种原因而为收集到数据;pd
- 如上笔记,NaN值参与的任何运算返回的都将是
NaN
值。因此十分有必要对其进行下处理,pandas提供了如下四种方法
isnull()
:判断是否为NaN
notnull
:判断是否不是NaN
dropna
:去除数据里的缺失值
fillna
:对数据里的NaN值进行填充
网友评论