前面已经提到,Pandas的DataFrame本质上其实就是一个表。对应Excel,我们通常会用到各种统计方法。那么这篇教程就简单叙述一下Pandas中基本的统计方法以及通用的调用规则。
1、DataFrame的方法使用举例
DataFrame
中封装了许多方便查看的方法,比如:
- 查看首尾
df.head()
月份 姓名 性别 应发工资 实发工资 职位
0 1 张三 男 2000 1500 主犯
1 2 张三 男 None 1000 主犯
2 3 张三 女 2000 15000 主犯
3 4 张三 女 2000 1500 主犯
4 5 张三 女 2000 1500 主犯
df.tail()
月份 姓名 性别 应发工资 实发工资 职位
8 5 李四 男 1800 1300 从犯
9 1 王五 女 1800 1300 龙套
10 2 王五 女 1800 1300 龙套
11 3 王五 女 1800 1300 龙套
12 4 王五 女 1800 1300 龙套
当然还可以在方法中输入数字,表示查看前几行和后几行。
2、DataFrame的方法调用通用方式
从上面的例子可以看到,DataFrame
在调用方法时就是在最后加入.
+方法名
即可。另外也注意到,这种方式返回的类型仍然是一个DataFrame
。事实上在调用这些方法时,这些方法的作用域通常是对每一列进行作用,比如:
df.max()
月份 5
姓名 王五
性别 男
应发工资 2000
实发工资 15000
职位 龙套
dtype: object
df.min()
月份 1
姓名 张三
性别 女
应发工资 1800
实发工资 1000
职位 主犯
dtype: object
结合原表,很容易看到实际上返回的值是对每一例取最大或者最小再返回的。而此时返回的值是一个Series
,原来的表头变成了Index
。
那么对应的,我们其实也可以猜到一些用法,比如求平均、中位数等等:
df.mean()
月份 3.000000
应发工资 1866.666667
实发工资 2376.923077
dtype: float64
df.median()
月份 3.0
应发工资 1800.0
实发工资 1300.0
dtype: float64
并且有意思的是,这些方法会自动选择可以进行操作的列。比如这里就只返回了数值列的平均和中位数。
类似的方法还有很多,这里就不一一列举,具体使用时可以参考:Pandas中DataFrame的属性及方法大全
3、DataFrame直接调用其它方法
这里再重点介绍一个方法apply
,该方法是将函数直接传入DataFrame
并沿指定的方向进行计算,比如
df.apply(np.max)
月份 5
姓名 王五
性别 男
应发工资 2000
实发工资 15000
职位 龙套
dtype: object
这里默认是按列操作,如果要换成按行操作则可以设置参数axis=1
。
不过对这们这组数据,直接按行操作会出现样的问题:
df.apply(np.max,axis=1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-186-956304eff83f> in <module>
----> 1 df.apply(np.max,axis=1)
TypeError: '>=' not supported between instances of 'int' and 'str'
错误说大于等于比较不能作用于整数和字符串。所以在使用时要注意事先检查该函数是否能应用于想作用的区域。