pandas 基本数据结构
一、pandas 基本数据结构
1、pandas 中主要有两种数据结构,分别是:Series 和 DataFrame。
2、Series:一种类似于一维数据的对象,是由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的 Series 对象。注意:Series 中的索引值是可以重复的。
3、DataFrame:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。
二、Series
1、创建 Series
(1) 通过一维数组创建:
可以指定 Series 的索引以及 数据类型:
(2)、通过字典的方式创健:
通过字典创建 Series 时,字典中的 key 组成 Series 中的索引,字典中的 values 组成 Series 中的 values。
2、常见 Series 属性
Series 对象本身以及索引都具有一个 name 属性,默认为空,根据需要可以进行赋值操作。
编号 | 属性或方法 | 描述 |
---|---|---|
1 | axes | 返回行轴标签列表 |
2 | dtype | 返回对象的数据类型(dtype) |
3 | empty | 如果系列为空,则返回True |
4 | ndim | 返回底层数据的维数,默认定义:1 |
5 | size | 返回基础数据中的元素数 |
6 | values | 将系列作为 ndarray 返回 |
7 | head() | 返回前 n 行 |
8 | tail() | 返回最后 n 行 |
(1) axies 返回行轴标签列表:
(2) dtype 返回对象的数据类型(dtype)
(3) empty 如果系列为空,则返回 True。
(4) ndim 返回底层数据的维数,默认定义:1。
(5) size 返回基础数据中的元数据。
(6) values 将系列作为 ndarray 返回。
(7) head() 返回前 n 行。
(8) tail() 返回最后 n 行。
3、Series 值的获取
(1) Series 值的获取主要有两种方式:
a、通过 方括号 + 索引 的方式读取对应索引的数据,有可能返回多条数据。
b、通过 方括号 + 下标值 的方式读取对应下标值的数据,下标值的取值范围为:[0, len(Series.values)];另外下标值也可以是负数,表示从右往左获取数据。
(2) Series 获取多个值的方式类似 NumPy 中的 ndarray 的切片操作,通过 方括号 + 下标值 / 索引值 + 冒号(:) 的形式来截取 series 对象中的一部分数据。
(3) 花式索引:
4、Series 的运算
(1) NumPy 中的数组运算,在 Series 中都保留了,均可以使用,并且 Series 进行数组运算的时候,索引与值之间的映射关系不会发生改变。
(2) 注意:其实在操作 Series 的时候,基本上可以把 Series 看成 NumPy 中的 ndarray 数组来进行操作。ndarray 数组的绝大多数操作都可以应用到 Series 上。
5、Series 自动对齐
当多个 series 对象之间进行运算的时候,如果不同 series 之间具有不同的索引值,那么运算会自动对齐相同索引值的数据,如果某个 series 没有某个索引值,那么最终结果会赋值为 NaN。
6、Series 缺失值检测
(1) NaN(Not a Number) 在 pandas 中用于表示一个缺失值或者NAN值。
(2) pandas 中的 isnull 和 notnull 两个函数可以用于在 Series 中检测缺失值,这两个函数的返回是一个布尔类型的 Series。
a、isnull:
b、notnull:
c、设置指定值:
三、DataFrame
1、DataFrame 创建
(1) 通过二维数组创建
数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列。
数据帧(DataFrame)的功能特点:
潜在的列是不同的类型
大小可变
可以对行和列执行算术运算
pandas 中的 DataFrame 可以使用以下构造函数创建:
pandas.DataFrame(data, index, columns, dtype, copy)
编号 | 参数 | 描述 |
---|---|---|
1 | data | 数据采取各种形式,如:ndarray,series,map,lists,dict,constant和另一个 DataFrame。 |
2 | index | 对于行标签,要用于结果帧的索引是可选缺省值np.arrange(n),如果没有传递索引值。 |
3 | columns | 对于列标签,可选的默认语法是--np.arrange(n)。这只有在没有索引传递的情况下才是这样。 |
4 | dtype | 每列的数据类型。 |
5 | copy | 如果默认值为False,则此命令(或任何它)用于复制数据。 |
(2) 通过字典的方式创建
2、DataFrame 数据获取:
(1) 可以直接通过列索引获取指定列的数据,eg:df[column_name]
a、列选择:
b、列添加:
c、列修改:
d、列删除:df.pop()、del()
(2) 如果需要获取指定行的的数据的话,需要通过 ix 方法来获取对应行索引的行数据,eg:df.ix[index_name]、loc、iloc
a、行选择:
b、选择多行:
c、选择某行某列:
d、通过数字下标选择:
e、行切片:
f、行添加:
g、行修改:
h、行删除:
四、索引对象
1、不管是 Series 还是 DataFrame 对象,都有索引对象。
2、索引对象负责管理轴标签和其他元数据(eg:轴名称等等)。
3、通过索引可以从 Series、DataFrame 中获取值或者对某个索引值进行重新赋值。
4、Series 或者 DataFrame 的自动对齐功能是通过索引实现的。