pandas 入门(pandas 数据结构介绍)

                                         pandas 数据结构介绍

 

一、pandas 基础数据结构

    1、pandas 中主要有两种数据结构:Series 和 DataFrame。

    2、Series:一种一维的数组型对象,它包含了一个值序列(与 NumPy 中的类型相似),并且包含了数据标签,称为索引(index)。最简单的序列可以仅仅由一个数组组成。注意:Series 中的索引值是可以重复的。

    3、DataFrame:表示矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame 既有行索引也有列索引,它可以被视为一个共享相同索引的 Series 的字典。在 DataFrame 中,数据被存储为一个以上的二维块,而不是列表、字典或其他 一维数组的集合。

二、Series

    1、由一个数组数据产生简单的 Series 对象

        pandas 入门(pandas 数据结构介绍)_第1张图片

        交互式环境中 Series 的字符串表示,索引在左边,值在右边。由于我们不为数据指定索引,默认生成的索引是从 0 到 N-1(N是数据的长度)。

        通过 values 属性和 index 属性分别获得 Series 对象的值和索引:

            pandas 入门(pandas 数据结构介绍)_第2张图片

    2、创建一个索引序列,用标签标识每个数据点

        pandas 入门(pandas 数据结构介绍)_第3张图片

        与 NumPy 的数组相比,我们可以使用标签来进行索引从数据中选择数据:

            pandas 入门(pandas 数据结构介绍)_第4张图片

            ["c", "a", "d"] 包含的不是数字,而是字符串,作为索引列表。

        使用 NumPy 的函数或 NumPy 风格的操作,比如使用布尔值数组进行过滤,与标量相乘,或是应用数学函数,这些操作将保存索引值连接:

            pandas 入门(pandas 数据结构介绍)_第5张图片

        从另一个角度考虑 Series,可以认为它是一个长度固定且有序的字典,因为它将索引值和数据值按位置配对。在我们可能会使用字典的上下文中,也可以使用 Series:

            pandas 入门(pandas 数据结构介绍)_第6张图片

    3、使用字典生成 Series

        pandas 入门(pandas 数据结构介绍)_第7张图片

        当我们把字典传递给 Series 构造函数时,产生的 Series 的索引将是排序好的字典键。

        我们可以将字典键按照我们想要的顺序传递给构造函数,从而生成的 Series 的索引顺序符合我们的预期:

            pandas 入门(pandas 数据结构介绍)_第8张图片

            sdata 中的三个值被放置在正确的位置,但是因为 "California" 没有出现在 sdata 的键中,它对应的值是 NaN(not a number),这是 pandas 中标记缺失值 或 NA 值的方式。因为 “Utah” 并不在 states 中,它被排除在结果对象外。

        pandas 中使用 isnull 和 notnull 函数来检查缺失数据:

            pandas 入门(pandas 数据结构介绍)_第9张图片

            pandas 入门(pandas 数据结构介绍)_第10张图片

            pandas 入门(pandas 数据结构介绍)_第11张图片

            注意:isnull 和 notnull 也是 Series 的实例方法。

            pandas 入门(pandas 数据结构介绍)_第12张图片

    4、自动对齐索引

        对于很多应用来说,在数学操作中自动对齐索引是 Series 的一个非常有用的特性:

            

            pandas 入门(pandas 数据结构介绍)_第13张图片

            pandas 入门(pandas 数据结构介绍)_第14张图片

            

    5、Series 对象自身 及其 索引 的 name 属性

        Series 对象自身和其索引都有 name 属性,这个特性与 pandas 其他重要功能集成在一起:

            pandas 入门(pandas 数据结构介绍)_第15张图片

    6、修改 Series 的索引

        Series 的索引可以通过按位置赋值的防守进行改变。

        

        pandas 入门(pandas 数据结构介绍)_第16张图片

 

三、DataFrame

    1、利用包含等长度列表或 NumPy 数组的字典来创建 DataFrame

        pandas 入门(pandas 数据结构介绍)_第17张图片

        产生的 DataFrame 会自动为 Series 分配索引,并且列会按照排序的顺序排列:

            pandas 入门(pandas 数据结构介绍)_第18张图片

        对于大型 DataFrame,head 方法将会只选出头部的 5 行:

            pandas 入门(pandas 数据结构介绍)_第19张图片

    2、指定列的顺序,DataFrame 的列将会按照指定顺序排列

        pandas 入门(pandas 数据结构介绍)_第20张图片

    3、如果传的列不包含在字典中,将会在结果中出现缺失值

        pandas 入门(pandas 数据结构介绍)_第21张图片    

        DataFrame 中的一列,可以按字典型标记或属性那样检索为 Series:

            pandas 入门(pandas 数据结构介绍)_第22张图片

            返回的 Series 与原 DataFrame 有相同的索引,且 Series 的 name 属性也会被合理地设置。

        通过位置或特殊属性 loc 进行选取:

            pandas 入门(pandas 数据结构介绍)_第23张图片

        修改列的索引。例如:空的 “dept” 列可以赋值为标量值或值数组:

            pandas 入门(pandas 数据结构介绍)_第24张图片

            将列表或数组赋值给一个列时,值的长度必须和 DataFrame 的长度匹配。

        将 Series 赋值给一列时,Series 的索引将会按照 DataFrame 的索引重新排列,并在空缺的地方填充缺失值:

            pandas 入门(pandas 数据结构介绍)_第25张图片

        将 Series 赋值给一列,如果被赋值的列不存在,则会生成一个新的列:

            pandas 入门(pandas 数据结构介绍)_第26张图片

    4、del 关键字对 DataFrame 删除列

        pandas 入门(pandas 数据结构介绍)_第27张图片

        在 del 的例子中,我们首先增加一列,这一列是布尔值,判断条件是 state 列是否为 “Ohio”:

            pandas 入门(pandas 数据结构介绍)_第28张图片

        del 方法可以用于移除之前新建的列:

            pandas 入门(pandas 数据结构介绍)_第29张图片

    5、包含字典的嵌套字典创建 DataFrame

        

        嵌套字典被赋值给 DataFrame,pandas 会将字典的键作为列,将内部字典的键作为行索引:

            pandas 入门(pandas 数据结构介绍)_第30张图片

        使用类似 NumPy 的语法对 DataFrame 进行转置操作:

            

            内部字典的键被联合、排序后形成了结果的索引。

        显式的指明索引,内部字典的键将不会被排序:

            pandas 入门(pandas 数据结构介绍)_第31张图片

    6、使用包含 Series 的字典构造 DataFrame

        pandas 入门(pandas 数据结构介绍)_第32张图片

        pandas 入门(pandas 数据结构介绍)_第33张图片

    7、DataFrame 属性

        (1) name 属性:

            pandas 入门(pandas 数据结构介绍)_第34张图片

        (2) values 属性:

            

            如果 DataFrame 的列是不同的 dtypes,则 values 的 dtype 会自动选择适合所有列的类型:

                pandas 入门(pandas 数据结构介绍)_第35张图片

    8、可以向 DataFrame 构造函数传递的对象列表

        构造函数的有效输入:       

类型 注释
2D ndarray 数据的矩阵,行和列的标签是可选参数。
数组、列表和元组构成的字典 每个序列成为 DataFrame 的一列,所有的序列必须长度相等。
NumPy 结构化 / 记录化数组 与数组构成的字典一致。
Series 构成的字典 每个值成为一列,每个 Series 的索引联合起来形成结果的行索引,也可以显式的传递索引。
字典构成的字典 每一个内部字典成为一列,键联合起来形成结果的行索引。
字典 或 Series 构成的列表

列表中的一个元素形成 DataFrame 的一行。

字典键 或 Series索引 联合起来形成 DataFrame 的列标签。

列表或元组构成的列表 与 2D ndarray 的情况一致。
其他 DataFrame 如果不显式传递索引,则会使用原 DataFrame 的索引。
NumPy MaskedArray 与 2D ndarray 的情况类似,但隐蔽值会在结果 DataFrame 中成为 NA / 缺失值。

     注释:从 DataFrame 中选取的列是数据的视图,而不是拷贝。因此,对 Series 的修改会映射到 DataFrame 中。如果需要复制,则应当显式地使用 Series 的 copy 方法。

 

四、索引对象

    pandas 中的索引对象是用于存储轴标签和其他元数据的(例如轴名称或标签)。

    1、在构造 Series 和 DataFrame 时,我们所使用的任意数组或标签序列都可以在内部转换为索引对象:

        pandas 入门(pandas 数据结构介绍)_第36张图片

        索引对象是不可变的,我们无法修改索引对象:

            pandas 入门(pandas 数据结构介绍)_第37张图片

        不变性使得在多种数据结构中分享索引对象更为安全:

            pandas 入门(pandas 数据结构介绍)_第38张图片

    2、除了类似数组,索引对象也像一个固定大小的集合

        

        pandas 入门(pandas 数据结构介绍)_第39张图片

        pandas 入门(pandas 数据结构介绍)_第40张图片

    3、pandas 索引对象可以包含重复标签

        

        

        根据重复标签进行筛选,会选取所有重复标签对应的数据:

        pandas 入门(pandas 数据结构介绍)_第41张图片

    4、一些索引对象的方法和属性

方法 描述
append 将额外的索引对象粘贴到原索引后,产生一个新的索引
difference 计算两个索引的差集
intersection 计算两个索引的交集
union 计算两个索引的并集
isin 计算表示每一个值是否在传值容器中的布尔数组
delete 将位置 i 的元素删除,并产生新的索引
drop 根据传参删除指定索引值,并产生新的索引
insert 在位置 i 插入元素,并产生新的索引
is_monotonic 如果索引顺序递增则返回 True
is_unique 如果索引序列唯一则返回 True
unique 计算索引的唯一值序列

 

你可能感兴趣的:(python)