前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据可视化:认识Pandas

数据可视化:认识Pandas

作者头像
马拉松程序员
发布2023-09-02 08:05:53
2360
发布2023-09-02 08:05:53
举报

Pandas是一个强大的分析结构化数据的工具集,它的使用基础是Numpy,用于数据挖掘和数据分析,同时也具有数据清洗功能。

Pandas简介

Pandas也是Python数据分析和实战的必备工具包之一,它提供了快速灵活的数据结构,简单的直观的处理关系型数据。可以方便的处理像Excel或者数据库中这样的结构化的数据。Pandas是基于NumPy开发,并且是开源的分析工具。从0.25.x系列版本开始,Pandas仅支持Python 3.5.3及更高版本。未来的版本中将提高到3.6,在不管什么时候开始学习,可以选择使用最新版的Python和Pandas。

Panda的官网是https://pandas.pydata.org/ 同样也是纯英文的网站,有能力的读者在学习使用Pandas时,可以查阅官网的第一手资料。

开始正式介绍Pandas之前,先来举一个简单的例子。假设一个数学老师需要统计班级上期末考试的分数情况,一般的都是会看下班上最高分,最低分,平均分,中位分数等等各种数据指标,那么Pandas就可以一步到位处理。

Pandas中describe()方法可以快速的描述一组数据的概况。基本内容是:count为元素个数,mean为平均数,std为标准差,min是最小值,max是最大值,25%、50%、75%表示的此分位数值。

当然在教学组长眼中,并不仅仅局限一个班的情况,可能是需要统计10个班甚至20个班的成绩情况,可以直接比较那个班级的分数情况高低。

当然Pandas的功能并不止于此,接下来将我们了解Pandas的基础知识点。

Pandas数据结构

Series

在Pandas中,最常用的就是数据结构就是Series和DataFrame。Series是带标签的一维数组,可以储存的数字、字符串等常见对象。调用pd.Series()即可创建Series

当打印Series对象a的时候左边会默认带着index,也就是索引,index也可以显式的指定,长度必须跟data长度一致,否则会报错:ValueError。当然即便是指定索引,也还是可以使用原来默认的索引查询数据。

注意:在Pandas 中,索引值可以重复。

另外还可以使用字典对象创建Series,key会成为index值,Value会成为data值

如果字典对象中指定上index后,会根据指定的index值重排序。如果值缺少,Pandas会使用NaN(Not a Number)代替。

Series 操作与 ndarray 类似,支持大多数 NumPy 中的函数,并且也支持索引切片。

另外在Series的初始化中还有一些其他属性:

除了data,index,上面见到过,dtype跟NumPy中的一样的,还有name属性,就是可以给当前的Series对象赋值一个名字。Copy是布尔值,如果为True,则拷贝输入数据。

DataFrame

DataFrame是由多种类型的列构成的二维标签数据结构,可以理解做为Excel表格或者数据库中的表。DataFrame 是最常用的 Pandas 对象,与 Series 一样,DataFrame 支持多种类型的输入数据。

DataFrame的结构可以比作excel表格的内容,当然也可以直接使用一个二维数组来生成DataFrame,比如:

还可以是用列表字典来创建DataFrame

由此可以看出,DataFrame也是 Series 的容器,Series 则是标量的容器。DataFrame处理表格数据的时候,虽然也是二维数据,但是使用index(行)或 columns(列)比 axis 0(0轴) 和 axis 1 (1轴)更直观。用这种方式迭代 DataFrame 的列,可以使代码更整洁易读。

两者的数据结构差别如表所示

名称

维度

描述

Series

1

带标签的一维同构数组

DataFrame

2

带标签的大小可变的二维异构表格

Pandas 所有数据结构的值都是可变的,数据结构的大小不都是可变的,Series 的长度不可改变,但是DataFrame里就可以插入新的列。

Pandas常用操作

查看数据

在更多的时候,做数据分析,往往会从外部读取数据,常用的读取从excel表格数据,DataFrame可以便捷的去读excel数据。我们在5.1.4中已经抓取到了豆瓣TOP250的电影信息,并且将信息保存为movie.xlsx。以下示例中均是采用movie.xlsx文件的内容,读者可以先按照5.1.4小节的方法将数据抓取到本地。

使用head()和tail()方法可以查看头部和尾部的数,默认是5条,可以自定义设置条数。参数几为查看的条数。

在本小节开头的位置,提到了一个方法就是describe(),这是一个非常简洁的方法,可以快速的描述出数据的大体情况。因为dateframe默认会使用科学计数法,如果数据比较大,得出来数据不是很美观,所以可以设置pandas的参数,

选择数据

选择单列,产生一个Series,使用[]切片选择行。

除了使用[] 直接访问,还可以使用Pandas 优化过的数据访问方法,比如loc()和iloc()等,loc意思为location,是功能强大的选择方法。iloc中i的意思是指integer,所以它只接受整数作为参数。数值都是index的值,从0开始,即0表示第一行。

除了loc()和iloc(),还可以使用at()和iat(),作用是获取某个位置的值。

在选择或者查询数据的时候,肯定会带又一些条件,这时候我们可以直接选择某一个列,进行条件筛选,得到想要的数据,比如说,我们想查一下最近10年上映的评分高于9分的电影。

这样可以通过设置条件选择出来我们想要的数据,或者统计出来简单的数据结果,比如说分别统计一下从20世纪30年代到21世纪20年代,这100年中的高质量影片数量分布情况,看下哪个10年的电影文化产业发展的更好,还可以结合当时的历史背景等等得出一些结论。这就是做了一次简单的数据分析,感兴趣的读者可以尝试一下。

转置数据

排序数据

Pandas中排序使用的是sort_values(),详细方法和主要使用的参数如下:

by:依照排序的列

ascending:bool型,True为升序,False为倒叙。默认为升序

kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, 默认是使用‘quicksort’。

通过对TOP250高分电影的上映年代排序,可见排名前三的都是美国出品的,而且时间都是在19世纪40年代,可见美国的电影事业起步还是比较早,当时中国还是处于动乱时代,对于电影这种文化产业的发展根本没有基础。

如果设置ascending为False,则是倒叙排列,如果将by设置为“评价分数”,则是以分数排序,同样可以设置两个排序维度。下面演示一下,根据上映年份和评价分数两个维度来进行排序。

得到的结果是先按照上映年份升序排序,在按照评价分数升序排序。当然可以反过来,只不过需要在by参数列表中,更换下排序列的顺序。

6.2.4 Pandas缺失值处理

有时候我们拿到的原始数据的质量并不好,有很多缺失值,这是很正常的情况。通常,有两个处理方法,第一个是去掉缺失值,如果某一条数据中是NaN,那么就去掉这一条,使用dropna()方法。另外一个就是将缺失值按照默认值填充,使用filln()方法。这两种方法都可以按照具体的情况来处理。

Pandas数据统计和整合

数据统计

在Series中有一个很常用的方法就是value_counts(),它的作用就是统计Series中每个元素出现的次数。比如,在movie.xlsx中已经是250 部高分电影的数据,我们想知道这些电影都是哪些国家制作的,哪些年份上映的,我们就可以通过value_counts()方法来统计。

通过对年份统计结果,可以粗略的看出来2010年、2004年和1994年上映电影的质量都很高。而通过对制作国家的统计,看出来TOP250部高分电影中,有111部是美国制作。数量远高于第二名日本的34部。可见在电影文化产业,美国发展起步早,制作水平是世界领先水平。

这是通过value_counts()方法可以统计出来的原始数据,如果作为数据分析的结果呈现出来,稍微有点生涩,后面我们可以使用matlab来绘制更直观的图表。

数据整合

前面说过可以把dateframe看出是SQL表数据,那么在SQL中常用的连接、聚合等操作在Pandas中也是可以实现的。

可以简单的看为,A表中字段名为a和b,有两行数据。B表中同样字段名为a和b也有两行数据,接下来我们做一个连接操作,就是SQL语句中的join操作。

结果跟SQL中的连接操作是一致的。内连接得到两个对象中都有的数据,对象A中a列和对象B中的a列都有1。左连接以对象A的a列为准,对象B中a列中没有的值,则取空。右连接则以对象B的a列为准。外连接则查询出全部的数据。

同样除了连接操作还有聚合操作,与SQL中的使用groupby对列进行聚合操作一样。

熟悉SQL查询的读者对这个操作并不会很陌生,操作等价于下面使用SQL语句查询的结果。可以直观的看出,count()按照a列的值计数,值为1的有2个,值为2,3的有1个。Sum()操作在实际应用场景中通过会用于按照月份或者年度统计销售额等等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马拉松程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pandas简介
  • Pandas数据结构
  • Pandas常用操作
  • 6.2.4 Pandas缺失值处理
  • Pandas数据统计和整合
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档