本节重点是统计运算。通常用pandas做事情,涉及数值运算的少。
一、数值运算
数值运算只对数值列起作用。
1. +,-,x,/,//,%,**
可以直接使用 +
,也可以使用函数add()
DataFrame.add(other, axis='columns', fill_value=None)
- other:另一个DataFrame或Series;
- axis:如果other是Series,指定Series的索引去和DataFrame的行匹配,还是和列匹配(+号是默认和列匹配);
- fill_value:这个参数是指两个DataFrame只有一个值缺失的情况,缺失的值怎么处理。两者都缺失,那么就是NaN。
其余的操作:-, ×, /, //,%, **
相应的函数形式:sub(), mul(), div(), floordiv(), mod(), pow()
。
这几个操作和+
以及add()
完全相同。
此外,还有divmod()
函数作为python的内建函数,支持对Series进行逐个元素操作。
d,r = divmod(s1, 2)
将s1用2做除法,商是d,余数是r
2. 本地一元转换
-
abs()
调用方法很简单:df.abs()
-
cumxxx()
累计运算,从开始到当前数据结束获取一个值。 xxx可以是 max, min, sum, prod(连乘)
DataFrame.cumxxx(axis='index')
其中axis可以使index或者columns -
clip()
DataFrame.clip(lower=None, upper=None)
将数据裁剪到一定范围内 -
rank()
将数据排序,输出为对应值在排序中的序号
DataFrame.rank(axis=0, method='average', ascending=True, pct=False)
- axis:0(‘index’)-按列方向,1(‘columns’)-按行方向
- method:对于值相同的数怎么标记顺序,
- ‘average’: 先排序,值相同的序号统一为平均序号
- ‘min’: 先排序,值相同的序号统一为最小序号
- ‘max’: 先排序,值相同的序号统一为最大序号
- ‘first’:先排序,值相同的序号按照出现次序排
- ‘dense’:值相同为一组,按照组值排序,组内取相同次序,和min不同,中间没有跳跃
- ascending:True or False,升序还是降序;
- pct:percent,按照百分比显示,将显示的次序除以列、或行元素个数。
-
round()
Series.round(decimals=0)
- decimals:控制小数位数,小数点后几位,0意思是只取整数
二、数值统计运算
这些统计操作,只对元素类型为数值型的列有效,返回以列索引或行索引为索引的Series
-
df.sum() 和
-
df.mean() 均值
-
df.std() 标准差
-
df.var() 方差
-
df.min() 最小
-
df.max() 最大
-
df.median() 中值
-
cov() 协方差
-
corr() 相关系数
-
corrwith() 对不同DF进行运算
DataFrame.corrwith(other, axis=0, drop=False, method='pearson')
- other:另一个DataFrame或Series
- axis:‘index or 0’或’columns or 1’,index,计算列相关性。columns,计算行相关性。默认为 index。
- drop:是否丢掉axis对应的索引取交时被过滤的了那些索引
- method:计算相关性的方法
-
count() 查看非NaN元素个数