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

这篇博客介绍了pandas的基础数据结构,包括Series和DataFrame。Series是一种一维数组型对象,具有数据标签(索引),可以视为长度固定的有序字典。DataFrame是二维数据表,包含多种数据类型的列集合,具有行和列索引。博客详细讲解了如何创建、操作Series和DataFrame,以及它们的索引对象特性。
摘要由CSDN通过智能技术生成

                                         pandas 数据结构介绍

 

一、pandas 基础数据结构

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

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

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

二、Series

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

        

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

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

            

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

        

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

            

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

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

            

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

            

    3、使用字典生成 Series

        

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

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

            

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

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

            

            

            

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

            

    4、自动对齐索引

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

            

            

            

            

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

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

            

    6、修改 Series 的索引

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

        

        

 

三、DataFrame

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

        

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

            

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

            

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

        

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

            

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

            

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

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

            

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

            

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

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

            

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

            

    4、del 关键字对 DataFrame 删除列

        

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

            

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

            

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

        

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

            

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

            

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

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

            

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

        

        

    7、DataFrame 属性

        (1) name 属性:

            

        (2) values 属性:

            

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

                

    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 时,我们所使用的任意数组或标签序列都可以在内部转换为索引对象:

        

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

            

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

            

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

        

        

        

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

        

        

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

        

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值