Pandas 是一个数据分许工具库,主要用于处理,存储,分析,显示数据
有几种常用数据结构,他们之间有共性 也有特殊的地方,分别为 DataFrame Series Panel Panel4D 他们分别是 2 1 3 4维容器
之所以把DataFrame放在第一个是因为它最常用,以及他有一些比较难理解的特殊性。
其他几个数据结构都类似对应的多维数组,其直接进行[]访问时是从高维到低维逐层索引,但是DataFrame不一样,这个下面再说
所有的这几个数据结构,都有几个常用的公共方法和属性,首先最重要的是values,可以看到内部的原始的多维数组,而对每个维度的索引,类似dict的keys(),在这几个数据结构中都是有特定名字的,例如Series就只有一个index属性 表示唯一维度的keys
而DataFrame则是index 和columns 前者是行索引,后者是列索引
我们可以对此4种结构用他们的loc at iloc iat 来访问 其中带i前缀的是直接使用持续访问,而不是使用keys,loc是定位,例如一个Panel4D可以使用p.loc['A']得到一个Panel 但是不能用p.at['A']得到,因为at系列只能得到元素,即如果使用at则只能使用4个key进行访问
对于上述几个方法对容器进行访问,都是严格按照高纬到低维的次序来的,即与直接对values进行多重索引访问即[][][][]这样的连续访问是一样的,但是这里就再次提到了DataFrame的特殊性
按values的结果,DataFrame中行为高维,列为低维,但是直接对DataFrame进行索引访问时,即形如D['key']方式进行访问时,是在对其列进行访问,这里可以看作一个便利措施,方便进行列提取,因为DataFrame是最常用 结构 ,而单独访问一列也是一种极其常用的操作
对其其他容器不存在这个情况,但是要注意的是,此4种结构都可以以层层叠加的形式进行构造,即可以构造一个Series为元素的字典,然后直接以此为参数构造DataFrame 然后再此DataFrame为元素构造字典,再创建Panel,依此类推
Panel中 最高维到最低维依次为items major_axis minor_axis 而Panel4D在items前面加了个labels轴
需要注意的是Panel以上的,即3维以上的容器就不能使用describe mean等统计函数,否则会报错
对于这些容器,除了可以使用字典层叠进行构造外,还可以使用array-like做数据对象,额外提供所需维度的keys列表进行构造,例如Series就可以传入一个一维数组或者一维元组或者一维ndarray什么的进行构造,但是要额外提供一个index参数,类型为一个列表,作为第0维的索引,而DataFrame则需要传入二维数组和index以及columns参数
对于其他容器,也是直接在构造时传入对应名字的参数做不同维度的索引即可
对于索引,不仅可以传入列表之类还可以传入Pandas的内建的array-like类对象,例如RangeIndex就是一个类似数组的可以通过索引访问的类
其他常用函数文档可以查到 这里不再多说,顺带一提就是每个容器都有copy函数用来进行深复制