Pandas

pandas是一个流行的开源Python项目,其名称取panel data(面板数据)与Python data analysis(Python 数据分析)之意。

pandas有两个重要的数据结构:DataFrame和Series

pandas数据结构之DataFrame

pandas的DataFrame数据结构是一种带标签的二维对象,与Excel的电子表格或者关系型数据表非常相似。

可以用下列方式来创建DataFrame:

1.从另一个DataFrame创建DataFrame

2.从具有二维形状的Numpy数组或者数组的复合结构来生成DataFrame

3.类似地,可以用pandas的另一种数据结构Series来创建DataFrame.关于Series,后文介绍

4.DataFrame也可以从类似CSV之类的文件来生成

考察pandas的DataFrame及其各种属性

(1)首先,将数据文件载入DataFrame,并显示其内容:

(2)DataFrame有一个属性,以元组的形式来存放DataFrame的形状数据,这与ndarray非常相似,我们可以查询一个DataFrame的行数

(3)下面通过其他属性来考察各列的标题与数据类型

(4)pandas的DataFrame带有一个索引,类似于关系型数据库中数据表的主键(primary key)。对于这个索引,我们既可以手动规定,也可以让pandas自动创建。访问索引时,使用相应的属性即可

(5)有时我们希望遍历DataFrame的基础数据,如果使用pandas的迭代器,遍历列值的效率可能会很低。更好的解决方案是从基础的Numpy数组中提取这些数值,然后进行相应的处理。不过,pandas的DataFrame的某一个属性可以在这方面为我们提供帮助

Pandas数据结构之Series

pandas的Series数据结构是由不同类型的元素组成的一维数组,该数据结构也具有标签。可以通过下列方式来创建pandas的Series数据结构。

1.由Python的字典来创建Series

2.由Numpy数组来创建Series

3.由单个标量来创建

创建Series数据结构时,可以向构造函数递交一组轴标签,这些标签通常称为索引,是一个可选参数。默认情况下,如果使用Numpy数组作为输入数据,那么pandas会将索引值从0开始递增。如果传递给构造函数的数据是一个Python字典,那么这个字典的键会经排序后变成相应的索引;如果输入数据是一个标量值,那么就需要由我们来提供相应的索引。索引中的每一个新值都要输入一个标量值。pandas的Series和DataFrame数据类型接口的特征和行为是从Numpy数组和Python字典那里借用来的

(1)首先,选中输入文件中的第一列,即Country列;然后显示这个对象在局部作用域中的类型

(2)pandas的Series数据结构不仅共享了DataFrame的一些属性,还另外提供了与名称有关的一个属性。

(3)为了演示Series的切片功能,这里以截取Series变量Country中的最后两个国家为例进行说明

(4)Numpy的函数同样适用于pandas的DataFrame和Series数据结构

可以在DataFrame、Series和Numpy数组之间进行各种类型的数值运算。

利用pandas查询数据:

(1)head()和tail()这两个函数的作用类似于UNIX系统中同名的两个命令,即选取DataFrame的前n和后n个数据记录,其中n是一个整型参数:

(3)下面用最近的日期来查询最近一年太阳黑子的相关数据:

(4)下面介绍如何通过YYYYMMDD格式的日期字符串来查询日期,具体如下所示:

(5)索引列表也可用于查询

(6)要想选择标量值,有两种方法,这里给出的是速度明显占优势的第二种方法。它们需要两个整数作为参数,其中第一个整数表示行,第二个整数表示列:

(7)查询布尔型变量的方法与SQL的Where子句非常接近

利用pandas的DataFrame进行统计计算

pandas的DataFrame数据结构为我们提供了若干统计函数。

describe:这个方法将返回描述性统计信息

count:这个方法将返回非NaN数据项的数量

mad:这个方法用于计算平均绝对偏差,即类似于标准差的一个有力统计工具

median:这个方法用于返回中位数

min:这个方法将返回最小值

max:这个方法将返回最大值

mode:这个方法将返回众数

std:这个方法将返回标准差

var:这个方法将返回方差

skew:这个方法用来返回偏态系数,该系数表示的是数据分布的对称程度

kurt:这个方法将返回峰态系数,该系数用来反映数据分布曲线顶端尖峭或扁平程度

利用pandas的DataFrame实现数据聚合

(1)为Numpy的随机数生成器指定种子,以确保重复运行程序时生成的数据不会走样

(2)通过Weather 列为数据分组,然后遍历各组数据

(3)变量Weather_group是一种特殊的pandas对象,可由groupby()生成。这个对象为我们提供了聚合函数,下面展示它的使用方法:

(4)恰如利用数据库的查询操作那样,也可以针对多列进行分组

(5)通过agg()方法,可以对数据组施加一系列的Numpy函数

DataFrame的串联与附加操作

数据库的数据表有内部连接和外部连接两种连接操作类型。实际上,pandas的DataFrame也有类似的操作,因此我们也可以对数据行进行串联和附加。我们将使用前面章节中的DataFrame来练习数据行的串联和附加操作

函数concat()的作用是串联DataFrame,如可以把一个由3行数据组成的DataFrame与其他数据行串接,以便重建原DataFrame:

为了追加数据行,可以使用append()函数:

连接DataFrames

pandas提供的merge()函数或DataFrame的join()实例方法都能实现类似数据库的连接操作功能。默认情况下,join()实例方法会按照索引进行连接,不过,有时不符合我们的要求

虽然,pandas支持所有的这些连接类型(内部连接、左外连接、右外连接与完全外部连接等操作)

(1)用merge()函数按照员工编号进行连接处理

(2)用join()方法执行连接操作时,需要使用后缀来指示左操作对象和右操作对象:

这个方法会连接索引值,因此得到的结果与SQL内部连接会有所不同

(3)用merge()执行内部连接时,更显式的方法如下所示:

只要稍作修改,就可以变成完全外部连接:

处理缺失数据问题

对于pandas来说,它会把缺失的数值标为NaN,表示None;还有一个类似的符号是NaT,不过它代表的是datetime64型对象。对NaN这个数值进行算数运算时,得到的结果还是NaN。

pandas的isnull()函数可以帮我们检查缺失的数据,使用方法如下。

类似地,可以用DataFrame的notnull()方法来考察非缺失数据:

通过fillna()方法,可以用一个标量(如0)来替换缺失数据,尽管有时可以用0替换缺失数据,但是事情并不总是如此

数据透视表

数据透视表可以从一个平面文件中指定的行和列中聚合数据,这种聚合操作可以是求和、求平均值、求标准差等运算

由于pandas API已经为我们提供了顶级pivot_table()函数以及相应的DataFrame方法,所以,只要设置好aggfunc参数,就可以让这个聚合函数来执行Numpy中诸如sum()之类的函数。参数cols用来告诉pandas要对哪些列进行聚合运算。

转载于:https://www.cnblogs.com/yifdu25/p/8411673.html

《Python 数据分析》笔记——pandas相关推荐

  1. python常用命令汇总-python数据分析之pandas常用命令整理

    原标题:python数据分析之pandas常用命令整理 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型 ,提供了高效地 ...

  2. python 数据分析day4 Pandas 之 DataFrame

    DataFrame 一. 创建DataFrame 1. 二维数组创建 2. 字典创建 3. JSON创建 4. 读取Excel或CSV文件创建 5. 读数据库(MySQL)创建 二. 常用属性 三. ...

  3. Python数据分析之Pandas库

    Python数据分析之Pandas库 一.Pandas简介 二.Pandas库的安装 三.Pandas的数据结构 四.Series 和 DataFrame 数据结构的使用 五.其他可以参考的网站 一. ...

  4. Python数据分析笔记——Numpy、Pandas库

    Python数据分析--Numpy.Pandas库 总第48篇 ▼ 利用Python进行数据分析中有两个重要的库是Numpy和Pandas,本章将围绕这两个库进行展开介绍. Numpy库 Numpy最 ...

  5. pandas 排序 给excel_懂Excel轻松入门Python数据分析包pandas(二十五):循环序列分组...

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...

  6. pandas 排序_懂Excel就能轻松入门Python数据分析包pandas(六):排序

    转发本文并私信我"python",即可获得Python资料以及各种心得(持续更新的) 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来 ...

  7. (转载)Python数据分析之pandas学习

    转载地址:http://www.cnblogs.com/nxld/p/6058591.html Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容: 1.数据 ...

  8. python数据分析笔记——数据加载与整理

    Python数据分析--数据加载与整理 总第47篇 ▼ (本文框架) 数据加载 导入文本数据 1.导入文本格式数据(CSV)的方法: 方法一:使用pd.read_csv(),默认打开csv文件. 9. ...

  9. c++控制台应用每一列数据如何对齐_懂Excel就能轻松入门Python数据分析包pandas(十六):合并数据...

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...

  10. pandas 更改单元格的值_懂Excel轻松入门Python数据分析包pandas(二十四):连续区域...

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...

最新文章

  1. step如何打开服务器项目,STEP7项目打开及删除
  2. python3-泊松分布
  3. 使用ActionBar实现Tab导航(快速生成Tab样式)
  4. redhat enterprise 5 在 VMware 6.5 中中文显示乱码的解决办法
  5. .NET多线程编程(7)——C#多线程编程传递参数解决方案
  6. 网络语言不c,哪些网络用语不文明?
  7. Mendix将升级低代码软件开发平台,发布全新数字化生态系统、行业云
  8. 公司 MyEclipse设置和SVN安装设置
  9. 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)转载
  10. uniapp使用阿里巴巴在线图标库
  11. 在 Cocos Creator 中使用缓动系统(cc.tween)
  12. 如何培养员工的团队合作精神
  13. 广告拦截软件测试简历,ADSafe广告拦截效果测试
  14. 逃离一线城市程序员的Plan B
  15. Elasticsearch教程(4) High Level REST Client API 查询 聚合 分组
  16. SparkSQL 创建 DataFrame 的方式
  17. java与MySQL做购物系统_java Swing mysql实现简单的购物系统项目源码附带指导运行视频教程...
  18. linux中用户组和用户,linux中用户和用户组
  19. jquery中append、prepend, before和after方法的区别
  20. PHP汉字转拼音带声调

热门文章

  1. 【收藏】QGIS加载xyz格式地图(以高德影像图和路网为例)
  2. IDEA 2021.1.2中scala生成变量自动勾选specify type
  3. linux cut列截取工具使用示例
  4. Scala 语言输出的三种方式
  5. @EnableDiscoveryClient和@EnableEurekaClient的区别
  6. final修饰的是引用还是引用的对象
  7. GridFS读文件代码示例
  8. 解决IDEA项目中文件夹层级显示(小数点形式与文件夹层级形式)
  9. redis持久化(2)
  10. Qt QGraphics体系及刷新机制介绍