Pandas入门(1)

引言:Pandas的学习我将写成一个系列帮助新手入门, 暂时我没有给题目加任何明显的标题索引,因为我希望无论是我本人还是读者都只能从头到尾的浏览,没有捷径,祝你好运


Pandas是基于numpy构建的,让以Numpy为中心的应用变得更加简单。

  • 具备按轴自动或者显式数据对齐功能的数据结构。这可以防止许多由于数据未对齐以及来自不同数据源(索引方式不同)的数据而导致的常见错误
  • 集成时间序列功能
  • 既能处理时间序列数据也能处理非时间序列数据的数据结构
  • 数学运算和约简(比如某个轴求和)可以根据不同的元数据(轴编号)执行
  • 灵活处理缺失数据
  • 合并及其他出现在常见数据库(例如基于sql的)中关系型运算

    Pandas的数据结构

    pandas中有两个主要的数据结构:Series和DataFrame。

    Series

      series是一种类似于一维数组的对象,他由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。
      Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,于是会自动创建一个0到N-1(N为数据长度)的整数型索引。可以通过Series的value和index属性获取其数组表示形式和索引对象

    DataFrame

      DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。DataFrame既有行索引也有列索引,他可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比,dataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或者多个二维块村烦的(而不是列表,字典或别的一维数组)。但仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是许多高级数据处理功能的关键因素)

    构建DataFrame,可以直接传入一个由等长列表或Numpy数组组成的字典,也会自动加上索引,且全部列会被有序排列

    如果指定了列序列,则DataFrame的列就会按照指定顺序进行排列

跟Series一样,如果传入的列在数据中找不到,就会产生NA值

通过类似字典标记的方式或属性的方法,可以将DataFrame的列获取为一个Series
返回的Series拥有源DataFrame相同的索引,且其name属性也已经被相应地设置好了。行也可以通过位置或者名称的方式进行获取,比如用索引字典ix

列可以通过赋值的方法进行修改。可以向某一列赋上一个标量值或者一组值

为不存在的列赋值会出现一个新列。关键词del用于删除列。

需要注意的是通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何就地修改的操作全都会反映到源DataFrame上,所以Series的copy的方法即可显式地复制列。

另一种常见的数据形式是嵌套字典(也就是字典中的字典),如果将字典传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引

可以输入给DataFrame构造函数所能接受的各种数据

类型 说明
二维ndarray 数据矩阵,还可以传入行标和列标
由数组,列表或元组组成的字典 每个序列会变成DataFrame的一列。所有序列的长度必须相同
Numpy的结构化/记录数组 类似于“由数组组成的字典”
由Series组成的字典 每个Series会成为一列。如果没有显式指定索引,则各Series的索引会被合并成结果的行索引
由字典组成的字典 各内层字典会成为一列。键会被合并陈结果的行索引,跟“由Series组成的字典”的情况一样
字典或Series的列表 各项将会成为DataFrame的一行。字典键或Series索引的并集将会成为DataFrame的列标
由列表或元组组成的列表 类似于“二维ndarray”
另一个DataFrame 该DataFrame的索引将会被沿用,除非显式指定了其他索引
NumPy的MaskedArray 类似于“二维ndarray”的情况,只是掩码值在结果DataFrame会变成NA/缺失值

如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来

跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据

如果DataFrame个列的数据类型不同,则数值的数据类型就会选用能兼容所有列的数据类型

你可能感兴趣的:(Pandas,pandas,基础)