最小值索引idxmin
返回最小值所在的索引
In [20]:
df["age"].idxmin()
Out[20]:
0
In [21]:
df["math"].idxmin()
Out[21]:
3
In [22]:
df["sex"].idxmin()
不能字符类型的字段使用该函数,Pandas不支持:
方差var
计算一组数据的方差,需要注意的是:numpy中的方差叫总体方差,pandas中的方差叫样本方差
标准差(或方差)分为 总体标准差(方差)和 样本标准差(方差)
- 前者分母为n,右偏的;后者分母为n-1,是无偏的
- pandas里是算无偏的;numpy里是有偏的
In [23]:
df.var()
Out[23]:
age2.200000 chinese130.000000 math291.666667#pandas计算结果 english370.000000 dtype:float64
In [24]:
df["math"].var()
Out[24]:
291.6666666666667
In [25]:
np.var(df["math"])#numpy计算结果
Out[25]:
218.75
In [26]:
np.var(df["age"])
Out[26]:
1.7600000000000002
In [27]:
np.var(df["english"])
Out[27]:
296.0
标准差std
返回的是一组数据的标准差
In [28]:
df.std()
Out[28]:
age1.483240 chinese11.401754 math17.078251 english19.235384 dtype:float64
In [29]:
np.std(df["math"])
Out[29]:
14.79019945774904
In [30]:
np.std(df["english"])
Out[30]:
17.204650534085253
In [31]:
np.std(df["age"])
Out[31]:
1.32664991614216
如何理解pandas和numpy两种方法对方差的求解不同:
平均绝对偏差mad
In [32]:
df.mad()
Out[32]:
age1.04 chinese8.80 math12.50 english13.60 dtype:float64
以字段age为例:
In [33]:
df["age"].mad()
Out[33]:
1.0399999999999998
In [34]:
df["age"].tolist()
Out[34]:
[22,24,25,26,24]
In [35]:
age_mean=df["age"].mean() age_mean
Out[35]:
24.2
In [36]:
(abs(22-age_mean)+abs(24-age_mean)+abs(25-age_mean) +abs(26-age_mean)+abs(24-age_mean))/5
Out[36]:
1.0399999999999998
偏度-skew
介绍峰度和偏度的好文章:https://www.cnblogs.com/wyy1480/p/10474046.html
偏度(skewness),是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征。
偏度(Skewness)亦称偏态、偏态系数,表征概率分布密度曲线相对于平均值不对称程度的特征数。
直观看来就是密度函数曲线尾部的相对长度。定义上偏度是样本的三阶标准化矩:
In [37]:
df.skew()
Out[37]:
age-0.551618 chinese0.404796 math0.752837 english1.517474 dtype:float64
In [38]:
df["age"].skew()
Out[38]:
-0.5516180692881046
峰度-kurt
返回的是峰度值
In [39]:
df.kurt()
Out[39]:
age0.867769 chinese-0.177515 math0.342857 english2.607743 dtype:float64
In [40]:
df["age"].kurt()
Out[40]:
0.8677685950413174
In [41]:
df["math"].kurt()
Out[41]:
0.3428571428571434
绝对值abs
返回数据的绝对值:
In [45]:
df["age"].abs()
Out[45]:
022 124 225 326 424 Name:age,dtype:int64
如果存在缺失值,绝对值函数求解后仍是NaN:
In [46]:
df["math"].abs()
Out[46]:
090.0 1NaN 2100.0 380.0 4120.0 Name:math,dtype:float64
绝对值函数是针对数值型的字段,不能对字符类型的字段求绝对值:
In [47]:
#字符类型的数据报错 df["sex"].abs()
元素乘积prod
In [48]:
df.prod()
Out[48]:
age8.236800e+06 chinese1.188000e+10 math8.640000e+07 english8.424000e+09 dtype:float64
In [49]:
df["age"].tolist()
Out[49]:
[22,24,25,26,24]
In [50]:
22*24*25*26*24
Out[50]:
8236800
累计求和cumsum
In [51]:
df.cumsum()
累计乘积cumprod
In [52]:
df["age"].cumprod()
Out[52]:
022 1528 213200 3343200 48236800 Name:age,dtype:int64
In [53]:
df["math"].cumprod()
Out[53]:
090.0 1NaN 29000.0 3720000.0 486400000.0 Name:math,dtype:float64
In [54]:
#字符类型字段报错 df["sex"].cumprod()
20个统计函数
最后再总结下Pandas中常用来描述统计信息的函数: