今天我们将一下如何查看Pandas中的各类数据以及对Pandas进行处理的一些方法通过这些方法我们可以更快的掌握Pandas对数据进行处理:
描述与统计 函数应用
修改列/行索引名称 类型的操作 表合并的方式 一、描述与统计
有时会我们在获取到数据之后想要查看一下数据的简单统计指标(比如最大值最小值平均值中位数等等)如想要查看年龄的最大值就可以直接对年龄这一列调用max方法就可以了。
1、查看最大值
查看众英雄中年龄最大的是多少岁三种方式都可以查看
第一种是使用np.max()对info表中的年龄列进行操作 第二种是使用np.max()对info表下的年龄进行操作 第三种是info表下的年龄进行max()查找 2、查看均值
查看众英雄年龄的均值
类似的可以通过调用min、mean、quantile、sum 方法可以实现最小值、平均值、中位数以及求和。可以看到对一个Series调用这几个方法之后,返回的都只是一个聚合结果。 3、按轴求和
下面给大家介绍一个有意思的方法:cumsum()看这个方法的名字就能看出来它跟sum方法有点关系应该是用来求和之类的事实上的确如此cumsum也是用来求和的不过他是用来累加求和的也就是通过它得到的结果与原始的Series或Datafrxxxxame的大小相同。
通过结果可以看到cumsum最后的结果就是将上一次求和的结果与原始当前值求和作为当前值。
当然如果只是这种功能的话也就没有那么有意思了这个方法有意思的是可以对字符串类型的对象进行操作。
4、查看表格信息
虽然说常见的各种统计值都有对应的方法,如果我想要得到多个指标的话,就需要调用多次方法,是不是显得有点麻烦呢?
Pandas 设计者自然也考虑到了这个问题,想要一次性获取多个统计指标,只需调用 describe 方法即可。
可以看到直接调用describe方法后会显示出数字类型的一些统计指标比如:总数平均数标准差最小值最大值四分位数等
如果想要查看非数字类型的列的统计指标的话可以设置include=[obxxxxject]来获得数据。
6、统计某个值出现的次数:value_counts
查看英雄们的城市和性别出现的次数
查看英雄的年龄分布
7、查看最小值或最大值对应的索引
如果想要查看某列最大值或最小值对应的的索引可以使用idxmax或idxmin方法来完成。 如果索引不是数据的话将会返回该行的行数。
查看哪位英雄的年龄最小
查看哪位英雄的年龄最大
8、离散化
有时候我们在处理数据的时候会碰到一些需求比如想要将年龄进行离散化也就是将年龄分成几个区间这里我们想要将年龄分成三个区间段就可以使用pandas的cut方法来完成。
通过这个结果可以看到cut自动生成了等距的离散区间如果自己想定义也是没有问题的。
这里我们将区间定义为3个区间1-30之间属于青少年英雄30-60之间的属于中年英雄60-5000就属于不正常的的地球英雄了。有时候离散化之后想要给每个区间起一个名字那么我们可以指定labels参数
给英雄们添加一列中青年属性 使用loc[]给表添加列
除了可以使用cut进行离散化之外qcut也可以实现离散化。Cut是根据每个值的大小来进行离散化qcut是根据每个值出现的次数进行离散化的。
9、排序功能
在进行数据分析时少不了的就是进行数据排序。Pandas支持两种排序方式:按轴(索引或列)排序和按实际值排序。
9.1、按索引排序
Sort_index()方法默认是按照索引进行正序排列
下面这个是英文索引下的排序
还可以通过sort_values(by=’’)进行排序by的意思是通过什么区排序直接填写也可以。
按性别排序:
按年龄排序:
如果想要进行倒序排列可以设置参数axis=1或则ascending=False
9.2、按值排序
如果想要实现按照实际值来排序例如想要按照年龄排序。 使用sort_values方法参数设置by=age即可
有时候我们可能需要按照多个值来排序,例如:按照年龄和城市来一起排序,可以设置参数 by 为一个 list 即可需要注意的是:list 中每个元素的顺序会影响排序优先级的先分组在排序最后一个为排序标准。
有时候数据量太大的时候我们可能只需要看前几行或者后几行的数据那么这个时候我们就可以用head()和tail()方法查看head()方法默认只打印前5行内容括号内可以填写想要的行数tail()方法同理只不过tail()方法是查看后五行的数据。
一般在排序后,我们可能需要获取最大的n个值或最小值的n个值,我们可以使用 nlargest 和 nsmallest 方法来完成,这比先进行排序,再使用 head(n)方法快得多。
二、函数应用
1.根据现有列生成新的列
生成一列元素为英雄年龄对数的
生成一列身高列
生成一列年龄加一的列
经过了复联4后英雄们通过各种战斗现在都统一长高了10厘米现在再表格中添加一
列英雄们的新身高
现在给英雄表中添加一列性别代码列1代表女士0代表男式
2、常用函数
虽说 Pandas 为我们提供了非常丰富的函数,有时候我们可能需要自己定制一些函数,并将它应用到 Datafrxxxxame 或 Series。常用到的函数有map、apply、applymap。
Map是是 Series 中特有的方法,通过它可以对 Series 中的每个元素实现转换。如果
想通过年龄判断用户是否属于中年人(50岁以上为中年),通过 map 可以轻松搞定它。
又比如我们可以通过城市来判断地球还是外星我们可以这么操作。
Apply方法: apply 方法既支持 Series,也支持 Datafrxxxxame,在对 Series 操作时会
作用到每个值上,在对 Datafrxxxxame 操作时会作用到所有行或所有列(通过 axis参数控制)。
对于series来说apply方法和map方法差别不大
但是对于Datafrxxxxame来说apply方法的作用对象是一行或一列数据
Applymap: applymap方法针对于Datafrxxxxame,它作用于Datafrxxxxame中的每个
元素,它对Datafrxxxxame的效果类似于apply对 Series 的效果。
三、修改列/索引名称
在使用 Datafrxxxxame 的过程中,经常会遇到修改列名,索引名等情况。使用 rename 轻松可以实现。修改列名只需要设置参数 columns 即可。
将钢铁侠和索尔的身高改为170
生成一列字符串格式的身高列
更改索引列名称
修改列标签将年龄改为age城市改为city性别改为sex
类似的修改索引名只需要修改参数index就可以了
四、类型操作
1、get_dtype_counts()
如果想要获取每种类型的列数的话,可以使用 get_dtype_counts 方法
2、 astype()
如果想要转换数据类型的话可以通过astype来完成 2.1、生成一列年龄的对数列并且列元素元素为整数列
首先使用np.log生成一列对数列
使用round()函数将对数列四舍五入
使用astype()将对数列转为整数列
2.2将年龄列改为浮点型
3、其他方法
有时候会涉及到将 obxxxxject 类型转为其他类型,常见的有转为数字、日期、时间差,Pandas 中分别对应 to_numeric、to_datetime、to_timedelta 方法。 五、表合并的方式 1、append()方式
导入两个表
查看两个表的内容
使用append()方法将2表导入到1表中
2、concat()
2.1、纵向合并(axis=0(默认为0))
2.2、横向合并(axis=1)