手把手教你学Python之Pandas(一文掌握数据分析与处理库-Pandas)

目录

基本结构之Series

Series对象的创建

Index对象介绍

Series中数据的访问

Series中常用方法

基本结构之DataFrame

DataFrame的创建

​DataFrame中数据访问

DataFrame 常见属性

DataFrame 常见方法

​DataFrame的合并操作

Pandas中常用方法

加载数据的方法 

数据显示的方法及关键属性

缺失值处理方法

 Pandas中的分组操作

Pandas中的数据合并操作


       Pandas 是一种基于 NumPy 开源的数据分析和处理工具包,提供了高性能简单易用的数据结构和数据分析函数。Pandas提供了方便的类表格类SQL的操作,同时提供了强大的缺失值处理方法,通过Pandas可以方便的进行数据导入选取清洗处理合并统计分析等操作。

Python标准库中默认不包含 Pandas,需要自己下载安装:

  • 命令行安装 pip  install pandas;

  • 借助于第三方包管理软件,例如Anaconda

基本结构之Series

       Pandas 中的 Series 对象可以理解为带有标签数据的一维数组,标签在Pandas中有对应的数据类型“Index”,Series类似于一维数组与字典的结合

Series对象的创建

创建Series时,可通过index参数指定索引,未指定索引时,采用默认索引,从0开始,不断递增;创建Series的主要方式如下:

  • 通过列表、元组创建索引大小必须和列表大小一致

  • 通过numpy的ndarray创建:必须是一维数组,且数组大小和索引大小要一致

  • 通过字典创建:默认索引为字典的关键字,指定索引时,会以索引为键获取值,没有值时,默认为NaN

  • 通过标量创建 :重复填充标量到每个索引上

    创建好Series对象后,可通过values 属性获取具体值,类型为一维ndarray;可通过index属性获取相应索引,类型为Index

Index对象介绍

       Pandas 的 Index 对象可以看作是一个不可变数组Index 对象中可以包含重复值。可直接通过Pandas中的Index类创建Index对象,也可以通过Series或DataFrame中的 index属性获取对应的Index对象。Index对象可以在多个数据间共享。例如:

      Index对象的很多操作都与numpy 中的数组类似,例如支持索引和切片操作支持Numpy中的一些常见函数,拥有sizeshapendim 等属性。不同的是Index 对象的值是不可变的。Index 对象的不可变特征使得多个数据之间进行索引共享时更加安全,可避免因修改索引时而导致的副作用。

Index对象也支持集合操作,例如如并集 交集、 差集等,这些操作也可以通过调用对象方法来实现。不同的是操作结果中可能会存在重复的元素

Series中数据的访问

           Series 对象与 numpy 中的一维数组 和 字典 dict在很多方面都类似。Series 对象中数据访问可与它们进行类比学习

(1)将Series看作字典

  • 字典中的键不允许重复,但Series中的索引允许有重复值

  • 以索引为键,可访问对应的值,如果有多个,则结果为Series类型

  • 可调用字典的一些常见方法,如keys()、items()等,可判断是否包含指定索引;

  • 用字典类似语法更新数据,对已有的索引进行赋值,会修改索引对应的值,对一个不存在的索引进行赋值,会添加一个索引

       系统一般会为Series对象默认分配一个从0开始不断增大的索引,称为隐式索引;用户通过index指定的索引称为显式索引。如果显式索引为整数,容易冲突,通过键访问采用的是显式索引,通过切片访问采用的是隐式索引尽量不要使用整数作为显式索引。其他情况下,两种方式可以共存。

(2)将Series看作一维数组

  • 可以通过索引、切片、布尔表达式访问数据;

  • 通过切片访问时,显式索引结果包含最后一个索引,隐式索引结果不包含最后一个索引

(3)索引器:loc、iloc

  • loc显式索引访问,即根据用户指定的索引访问;

  • iloc隐式索引访问,即根据位置序号访问。

Series中常用方法

  • sort_index():对Series按照索引排序生成一个新的Series对象

  • sort_values():对Series按照值排序,生成一个新的Series对象

  • rank()对值进行排名,从1开始,对于相同的值默认采用平均排名

  • reindex()重新设置索引生成一个新的Series对象。新的索引长度和原始索引长度可以不相同,如果新的索引不在原始数据中,则对应的值为NaN,如果在原始数据中,则值保持不变,可通过method参数指定值填充的方案(要求原始索引是递增的),还可通过fill_value参数指定填充值

  • Series对象也可执行numpy中的一些运算,此时只对值进行操作,索引和值之间的对应关系不变;

  • Series对象之间执行运算时,会自动进行对齐相同索引之间执行相应运算,不同索引对应的值为NaN

基本结构之DataFrame

       DataFrame可以看作是一种既有行索引, 又有列索引的二维数组,类似于Excel表或关系型数据库中的二维表,是Pandas中最常用的基本结构。前面介绍的Series只有一列数值,DataFrame中往往有多列数值,一列可以看成是一个Series组成

DataFrame的创建

       可通过值为一维ndarray,list, dict或者Series的字典或列表二维的ndarray单个Series、列表、一维数组,此时DataFrame中只有一列其他的DataFrame等创建;

       创建DataFrame时,可通过indexcolumns参数指定行索引 和 列索引,若没有指定索引,则系统会提供默认索引从0开始不断增大

       通过多个Series创建DataFrame时,多个Series对象会自动对齐,即多个Series对象会根据行索引自动匹配,行索引相同的放在同一行若指定了index ,则会以指定的索引为准,去匹配已有的值丢弃所有未和 index匹配的数据 ,如果指定的索引没有提供对应的值,则表示该值缺失,使用NaN

DataFrame中数据访问

       DataFrame对象与二维 numpy 数组和 共享索引的若干个Series对象构成的字典有很多相似之处,DataFrame中数据的访问可与它们进行类比学习

(1)将 DataFrame 看作字典

  • 列的索引为关键字,获取某一列数据,例如d_1[列索引],结果为Series对象,可进一步获取某个数据,例如d_1[列索引][行索引],需要使用两个中括号,不能合并

  •  如果列的索引为字符串,则可以列名为属性名,获取某一列数据,例如d_1.属性名前提是列名符合标识符的命名规范。如果列名不符合规范或与 DataFrame 中属性相同,例如shape、index等,则不能用属性形式。

    与Series类似,DataFrame中也存在隐式索引显式索引。显式索引主要是根据用户指定的索引访问数据,而隐式索引主要是根据系统生成的索引即位置序号访问数据。DataFrame也支持索引器访问数据,其中loc[行索引, 列索引]通过显示索引访问数据, iloc[行索引, 列索引]通过隐式索引访问数据。

(2)将DataFrame看作二维数组

  • 支持行列转置布尔表达式等;

  • 支持行切片操作不支持列切片。若想访问多列数据,可将多个列索引放在一个列表中,例如d_1[[列1,列2]];

DataFrame 常见属性

  • shape获取形状信息,结果为一个元组

  • dtypes获取各字段的数据类型,结果为Series

  • values获取数据内容,结果通常为二维数组

  • columns获取列索引,即字段名称,结果为Index

  • index获取行索引,即行的标签,结果为Index

  • axes同时获取行和列索引,结果为Index的列表

DataFrame 常见方法

       DataFrame中提供了大量的实用方法,例如按照某一列或多列的值进行排序、将DataFrame中的数据保存到文件中、进行抽样、分组、统计、去重等等。详细方法介绍如下:

DataFrame的合并操作

        DataFrame中提供了一个join()方法用于将其他DataFrame中的列合并到当前DataFrame中,类似于数据库中的连接,支持内连接(只保留两个对象中都存在的行索引对应的数据)、外连接(保留两个对象中,只要有一方存在的行索引对应的数据,如果另一方不存在则相应值为NaN)、左连接(只保留左边对象中的所有行索引对应的数据)和右连接(只保留左边对象中的所有行索引对应的数据)等,默认情况采用左连接。join()方法合并数据时,默认根据两个对象的行索引进行匹配连接,如果有相同列名,则需指定后缀以区分,否则会出错,也可通过on参数指定合并时参考的列,此时需将该列作为其他对象的行索引,也就是说让另一个对象的行索引和当前对象的on进行匹配。

Pandas中常用方法

加载数据的方法 

     Pandas中提供了大量的从不同格式文件中加载数据的方法,例如读取Excel文件CSV文件Json格式文本HTML网页等等,大家可以根据实际需求,选择相应的方法,每个方法根据文件特征需要传递的参数不同,可关联源代码查看详情。主要的方法如下:

  • read_excel():从excel文件中读取数据;

  • read_csv()从csv文件中读取数据;

  • read_clipboard():从剪切板中数据;

  • read_html():从网页中读取数据;

  • read_json():从 json 格式文本中读取数据;

  • read_pickle():从pickle文件中读取数据;    

  • ……

在此,以实际应用中使用比较广泛的Excel文件读取为例,介绍一些核心的参数含义。

  • io文件路径,可以是本地文件也可以是网络文件,支持xlsxlsxxlsm等格式;

  • sheet_name表单序号或名称,可以是一个列表,表示同时读取多个表单,默认为第一个表单;

  • hearder表头,可以是整数或整数列表,默认为第一行;

  • names指定列名,默认为表头;

  • index_col索引列,可以是整数或整数列表;

  • usecols使用到的列,默认加载所有列,如果需要加载某些列可指定这些列的序号;

  • dtype指定每一列的数据类型

  • skiprows跳过多少行,常用于表的最开始几行为说明性文档的情景;

  • nrows解析多少行

  • na_values指定哪些值被看做是缺失值

  • ……

数据显示的方法及关键属性

       Pandas中提供了数据显示的一些默认设置,例如默认显示60行,超过60行只显示前5行、后5行其他都用省略号表示等。可通过一些方法更改设置,相应方法如下:

  • get_option(属性名)获取相应的属性值;

  • set_option(属性名,值)设置相应的属性值;

  • reset_option(属性名)重置相应的属性值,恢复成默认值;

  • describe_option(属性名):获取相应的属性描述信息,包括默认值,当前值等信息;

  • option_context(属性名):设置临时的属性值,主要用于上下文管理器中;

显示设置中经常使用到的一些属性如下:

  • display.max_rows显示的最大行数,默认为60行,超过60行时,只显示前5行、后5行,其他行用省略号表示,None表示不限制,显示所有行

  • display.max_columns显示的最大列数,默认为0,根据宽度自动确定,显示不下时,中间列用省略号表示,None表示不限制,显示所有; 

  • display.expand_frame_repr是否换行打印超过宽度的数据,默认为True,当不限制列的数量,同时一行又放不下那么多列信息时,默认会自动换行,可设置为False,这样会添加水平滚动条,在一行显示;  

  • display_max_colwidth显示的最大列宽,默认为50个字符,超出以省略号表示,None表示不限制; 

  • display.precision设置小数显示精度,默认为6位

缺失值处理方法

缺失值是指数据集中的某些值为空。常见的处理方法有:删除法替换法插补法

  • 删除法直接将包含缺失值的记录删除,常用于缺失值比例非常低,如5%以内;

  • 替换法用某种值直接替换缺失值,例如连续变量的均值或中位数,离散变量的众数等;

  • 插补法根据其他已观测值进行预测,例如K近邻、回归插补法等;

Pandas中提供了强大的缺失值处理,相关方法如下:

  • dropna()删除包含缺失值的行,可通过axis参数设置删除所在列,通过thresh参数指定阈值,只有非空值大于该阈值的行或列才保留

  • fillna()用指定值填充缺失值,可为不同的列指定不同的填充值,此时传递一个字典,键为列名,值为该列缺失值的填充值,可通过method参数指定填充方式;通过limit参数限定填充的数量

  • isna()isnull()判断元素是否为缺失值,如果元素为缺失值,则对应位置为True,否则为False。

 Pandas中的分组操作

       分组操作主要是根据某个或某些特征对原始数据进行分割,然后可以在子集上应用一些函数,例如聚合转换过滤等,Pandas中的分组通过groupby函数实现。Series DataFrame 都支持分组操作。分组后将得到一个分组对象,通过groups属性可查看分组信息,通过get_group()可获取某个组详情,通过agg()可对组执行聚合函数,通过transform()方法可对组进行转换,通过filter()方法对某些组进行过滤。

Pandas中的数据合并操作

       数据合并是指将多个数据按照一定的规则合并到一起。在实际应用中,常常涉及多个数据的联合操作,而这些数据又保存在不同的文件中,此时需要先进行合并,再执行相关操作。Pandas中提供了一些数据合并的方法,例如merge()contact()等。

(1)merge()方法,按照某列或某些列将两个数据对象进行合并,与前面介绍的DataFrame中的join()方法非常相似。

  • left:左边的数据对象;

  •  right右边的数据对象; 

  • how连接方式,默认为inner,此外还有leftrightouter等;

  • on连接的列名称,必须在两个对象中,默认以两个对象的列名的交集作为连接键

  • left_on:左边对象中用于连接的键的列名

  • right_on:右边对象中用于连接的键的列

  • left_index:使用左边的行索引作为连接键

  • right_index:使用右边的行索引作为连接键

  • sort:是否将合并的数据排序,默认为False;

  • suffixes列名相同时,指定的后缀。

(2)contact()方法,沿着一条轴,将多个对象堆叠起来,关键参数如下:

  • objs:需合并的对象序列;

  • axis指定合并的轴,0/‘index’, 1/‘columns’,默认为0;

  • join连接方式,只有inner和outer,默认为outer

  • ignore_index是否忽略索引,默认为False;

  • verify_integrity:验证完整性,较为耗时,默认为False;

  •  ……

  更多关于手把手教你学Python的文章请关注微信公众号:Python资源分享。详细的视频讲解可查看 CSDN学院 里的手把手教你学Python系列视频:https://edu.csdn.net/lecturer/5686。    

完整的课件下载网址如下:

Pandas入门与实践(课件)_pandas课件,pandas教程ppt-Python文档类资源-CSDN下载详细介绍Python中数据分析与处理的第三方库Pandas的使用,包括基本结构Series、Datapandas课件更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/Dream_Gao1989/13624886?spm=1001.2014.3001.5503 

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高成珍

前行路上与你相伴!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值