介绍
在Python中,pandas是基于numpy数组构建的.使数据预处理,清洗,分析工作变得更快更简单.pandas是专门为处理表格和混杂数据设计的,而numpy更适合处理统一的数值数组数据.
pandas有两个主要的数据结构:series和dataframe
series
series是一种类似于一维数组的对象,它由一组数据(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成,即index和values两部分,可以通过索引的方式选取series中的单个或一组值.
series的创建
pandas.series(list, index=[]),第二个数组是series中数据的索引,可以省略.
- 第一个参数可以是列表或者ndarray.
- 第一个参数可以是字典,字典的键将作为series的索引
- 第一个参数可以使dataframe中的某一行或一列
series类型的操作
series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字操作,使用.get()方法.
series和ndarray之间的主要区别在于series之间的操作会根据索引自动对齐数据.
dataframe
dataframe是一个表格型的数据类型,每列值类型可以不同,时最常用的pandas对象.
dataframe既有行索引也有列索引,它可以被看作由series组成的字典(共用一个索引).
dataframe中的数据是一个以一个或多个二维块存放的(而不是列表,字典,或别的一维数据结构)
dataframe的创建
pandas.dataframe(data, columns=[], index=[])
columns和index为指定的列,行索引,并按照顺序排列
创建dataframe最常用的是直接传入一个有等长列表或numpy数组组成的字典,会自动加上行索引,字典的键会被当做列索引.
如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值(NaN).
另一种常见的创建dataframe方式是使用嵌套字典,如果嵌套字典传给dataframe,pandas就会被解释为外层字典的键作为列,内层字典键则作为行索引.
可以输入给dataframe构造器的数据
类型 | 说明 |
---|---|
二维ndarray | 数据矩阵,还可以传入行标和列标 |
由数组,列表或元组组成的字典 | 每个序列会被构造成dataframe的一列,所有序列的长度必须相同. |
numpy的结构化/记录数组 | 类似于"由数组组成的字典". |
由series组成的字典 | 每个series会成为一列.如果没有显式指定索引,则各series的索引会被合并成结果的行索引. |
由字典组成的字典 | 各内层字典会称为一列.键会被合并成结果的行索引,跟"由series组成的字典"的情况一样. |
字典或series的列表 | 各项将会成为dataframe的一行.字典键或series索引的并集将会成为dataframe的列标. |
由列表或元组组成的列表 | 类似于"二维ndarray". |
另一个dataframe | 该dataframe的索引将会被沿用.除非显式制定了其他索引. |
numpy的MaskedArray | 类似于"二维ndarray"的情况,只是掩码值在结果dataframe会变成NA/缺失值. |
dataframe对象操作
- dataframe.values:将dataframe转换为ndarray二维数组,是dataframe对象的属性;
- 通过类似字典标记的方式或属性的方式