昌鑫号

pandas教程(pandas教程c语言)

pandas教程, 1. Introduction to Panda:

Pandas是python数据分析的组合缩写,是python中基于numpy和matplotlib的第三方数据分析库,与后两者共同构成了python数据分析的基础工具包。

享三剑客之名。

2.熊猫数据结构:

熊猫的核心数据结构有两种,一维数列和二维dataframe,可以看作是分别在numpy一维数组和二维数组的基础上增加了相应的标签信息。正因为如此,

Series和dataframe可以从两个角度来理解:

Series和dataframe分别是一维和二维数组。因为是数组,所以numpy中数组的用法基本上可以直接应用到这两种数据结构上,包括数据创建、切片访问、通用函数、广播机制等等。

Series是带标签的一维数组,所以也可以看作是类字典结构:标签是键,值是值;Dataframe可以看作是一个嵌套的字典结构,其中列名是键,每列的系列是值。

所以从这个角度来说,创建pandas数据的一个灵活的方式就是通过字典或者嵌套字典,同时自然衍生出适合series和dataframe的类字典接口,也就是通过loc索引访问。

pandas教程c语言

3、数据读写:

Pandas支持读写大多数主流文件格式的数据。常见的格式和接口有:

文本文件主要有csv和txt,对应的接口有read_csv()和to_csv(),分别用来读写数据。

支持Excel文件,包括xls和xlsx格式。底层调用xlwt和xlrd操作Excel文件,对应的接口是read_excel()和to_excel()。

SQL文件,支持大多数主流的关系数据库,比如MySQL,需要相应的数据库模块的支持,相应的接口有read_sql()和to_sql()。

此外,熊猫还支持html、json等文件格式的读写。

4.数据访问:

Series和dataframe具有numpy数组和字典的结构特征,所以数据访问是从这两个方面入手的。同时,还支持bool索引进行数据访问和过滤。

[],这是一种非常方便的访问方式,但有必要区分series和dataframe:

Series:可以使用标签或数字索引访问单个元素,也可以使用相应的切片访问多个值。因为只有一维信息,所以没有悬念。

Dataframe:不能访问单个元素,只能返回一列、多列或多行:单值或多值(多个列名的列表)访问时可以按列查询,单值访问时列名没有歧义时可以用属性符号直接访问。以切片形式访问时,按行查询,

还区分了数字切片和标签切片:输入数字索引切片时,类似于普通列表切片;当输入标签切片时,执行范围查询(即切片的第一个和最后一个值不需要存在于标签列中),并且包括两端标签的结果。如果没有匹配的行,则返回空白。

但是,标签切片类型需要与索引类型一致。例如,当标签列类型(可通过df.index.dtype查看)为时间类型时,如果将不能隐式转换为时间的字符串用作索引片,则会引发错误。

pandas教程c语言

5、数据处理:

熊猫最强大的功能当然是数据处理和分析,可以独立完成数据分析前的大部分数据预处理需求。简单概括起来,可以分为以下几个方面:

数据清理

空值

判断空值,isna或isnull,二者等价,用于判断一个series或dataframe各元素值是否为空的bool结果。需注意对空值的界定:即None或numpy.nan才算空值,

而空字符串、空列表等则不属于空值;类似地,notna和notnull则用于判断是否非空

填充空值,fillna,按一定策略对空值进行填充,如常数填充、向前/向后填充等,也可通过inplace参数确定是否本地更改

删除空值,dropna,删除存在空值的整行或整列,可通过axis设置,也包括inplace参数

重复值

检测重复值,duplicated,检测各行是否重复,返回一个行索引的bool结果,可通过keep参数设置保留第一行/最后一行/无保留,例如keep=first意味着在存在重复的多行时,

首行被认为是合法的而可以保留

删除重复值,drop_duplicates,按行检测并删除重复的记录,也可通过keep参数设置保留项。由于该方法默认是按行进行检测,如果存在某个需要需要按列删除,则可以先转置再执行该方法

异常值,判断异常值的标准依赖具体分析数据,所以这里仅给出两种处理异常值的可选方法

删除,drop,接受参数在特定轴线执行删除一条或多条记录,可通过axis参数设置是按行删除还是按列删除

替换,replace,非常强大的功能,对series或dataframe中每个元素执行按条件替换操作,还可开启正则表达式功能

数值计算

由于pandas是在numpy的基础上实现的,所以numpy的常用数值计算操作在pandas中也适用:

通函数ufunc,即可以像操作标量一样对series或dataframe中的所有元素执行同一操作,这与numpy的特性是一致的,例如前文提到的replace函数,本质上可算作是通函数。

如下实现对数据表中逐元素求平方

广播机制,即当维度或形状不匹配时,会按一定条件广播后计算。由于pandas是带标签的数组,所以在广播过程中会自动按标签匹配进行广播,而非类似numpy那种纯粹按顺序进行广播。例如,

如下示例中执行一个dataframe和series相乘,虽然二者维度不等、大小不等、标签顺序也不一致,但仍能按标签匹配得到预期结果

字符串向量化,即对于数据类型为字符串格式的一列执行向量化的字符串操作,本质上是调用series.str属性的系列接口,完成相应的字符串操作。尤为强大的是,除了常用的字符串操作方法,

str属性接口中还集成了正则表达式的大部分功能,这使得pandas在处理字符串列时,兼具高效和强力。例如如下代码可用于统计每个句子中单词的个数

时间类型向量化操作,如字符串一样,在pandas中另一个得到优待的数据类型是时间类型,正如字符串列可用str属性调用字符串接口一样,时间类型列可用dt属性调用相应接口,这在处理时间类型时会十分有效。

pandas教程c语言

数据转换

pandas还提供了更为强大的数据转换方法

map,适用于series对pandas教程c语言象,功能与python中的普通map函数类似,即对给定序列中的每个值执行相同的映射操作,

不同的是series中的map接口的映射方式既可以是一个函数,也可以是一个字典

apply,既适用于series对象也适用于dataframe对象,

但对二者处理的粒度是不一样的:apply应用于series时是逐元素执行函数操作;apply应用于dataframe时是逐行或者逐列执行函数操作(通过axis参数设置对行还是对列,默认是行),

仅接收函数作为参数

applymap,仅适用于dataframe对象,且是对dataframe中的每个元素执行函数操作,从这个角度讲,与replace类似,applymap可看作是dataframe对象的通函数。

合并与拼接

pandas中又一个重量级数据处理功能是对多个dataframe进行合并与拼接,对应SQL中两个非常重要的操作:union和join。pandas完成这两个功能主要依赖以下函数:

concat,与numpy中的concatenate类似,但功能更为强大,可通过一个axis参数设置是横向或者拼接,要求非拼接轴向标签唯一(例如沿着行进行拼接时,要求每个df内部列名是唯一的,

但两个df间可以重复,毕竟有相同列才有拼接的实际意义)

merge,完全类似于SQL中的join语法,仅支持横向拼接,通过设置连接字段,实现对同一记录的不同列信息连接,支持inner、left、right和outer4种连接方式,

但只能实现SQL中的等值连接

join,语法和功能与merge一致,不同的是merge既可以用pandas接口调用,也可以用dataframe对象接口调用,而join则只适用于dataframe对象接口

append,concat执行axis=0时的一个简化接口,类似列表的append函数一样

实际上,concat通过设置axis=1也可实现与merge类似的效果,二者的区别在于:merge允许连接字段重复,类似一对多或者多对一连接,此时将产生笛卡尔积结果;而concat则不允许重复,

仅能一对一拼接。

pandas教程,以上就是本文为您收集整理的pandas教程最新内容,希望能帮到您!更多相关内容欢迎关注。

      
上一篇