美文网首页
数据的初步处理之常用的数学和统计方法

数据的初步处理之常用的数学和统计方法

作者: 5f2a6061653d | 来源:发表于2018-12-06 15:51 被阅读75次

Pandas拥有一组常用的数学和统计方法,这些方法大部分属于约简和汇总统计,主要用于从Series对象或DataFrame对象中提取数据。这些方法都是基于对没有缺失数据的假设而构建的,例如,sum和mean方法,具体示例如下所示:

In [54]: import numpy as np
In [55]: from pandas import Series,DataFrame
In [56]: f = DataFrame([[2.4,3.6,np.nan],[np.nan,np.nan,np.nan],
    ...: [1.3,3.7,4.9],[0.5,6.6,8.8]],index = ['a','b','c','d'],
    ...: columns = ['one','two','three'])
In [57]: f_sum = f.sum()
In [58]: f_sum1 = f.sum(axis = 1)
In [59]: f_m = f.mean()
In [60]: f_m1 = f.mean(axis = 1)

上述代码是使用DataFrame对象的sum和mean方法,其中In [57]是对DataFrame对象按列求和,并将求和后的结果赋值给变量f_sum;In [58]是对DataFrame对象按行求和,并将求和后的结果赋值给变量f_sum1;In [59]是对DataFrame对象按列求平均值,并将求平均值后的结果赋值给变量f_mean;In [60]是对DataFrame对象按行求平均值,并将求平均值后的结果赋值给变量f_mean1。各变量的运行结果如下所示:

In [61]: f
Out[61]:
   one  two  three
a  2.4  3.6    NaN
b  NaN  NaN    NaN
c  1.3  3.7    4.9
d  0.5  6.6    8.8
In [62]: f_sum
Out[62]:
one       4.2
two      13.9
three    13.7
dtype: float64
In [63]: f_sum1
Out[63]:
a     6.0
b     0.0
c     9.9
d    15.9
dtype: float64
In [64]: f_m
Out[64]:
one      1.400000
two      4.633333
three    6.850000
dtype: float64
In [65]: f_m1
Out[65]:
a    3.0
b    NaN
c    3.3
d    5.3
dtype: float64

从上述运行结果可看出,无论是对DataFrame对象的行或列求和,还是对其求平均数,都是默认自动排除NaN值,但通过skipna属性可禁用上述功能,具体示例如下:

In [66]: f_mean = f.mean(axis = 1,skipna = False)

上述代码是使用skipna属性禁用自动排除NaN值的功能,运行结果如下所示:

In [67]: f_mean
Out[67]:
a    NaN
b    NaN
c    3.3
d    5.3
dtype: float64

从上述运行结果可以看出,禁用自动排除NaN值功能后,只要计算的内容中含有NaN值,计算结果就都为NaN值。约简方法中提供了很多选项,具体如表4.8所示。

选项 说明
axis 约简的轴,取值一般为0(行)或1(列)
skipna 过滤缺失值(NaN值),默认值为True
level 若轴是层次化索引的(即MultiIndex),则根据level分组约简

上述方法返回的是直接统计,还有一些方法返回的是间接统计,例如,idxmin和idxmax方法,具体示例如下所示:

In [73]: import numpy as np
In [74]: from pandas import Series,DataFrame
In [75]: f = DataFrame([[2.4,3.6,np.nan],[np.nan,np.nan,np.nan],
    ...: [1.3,3.7,4.9],[0.5,6.6,8.8]],index = ['a','b','c','d'],
    ...: columns = ['one','two','three' ])
In [76]: f1 = f.idxmin()
In [77]: f2 = f.idxmax()

上述代码是使用DataFrame对象的idxmin和idxmax方法,其中In [76]是获取达到最小值的索引,并将返回结果赋值给变量f1;In [77]是获取达到最大值的索引,并将返回结果赋值给变量f2。各变量的运行结果如下所示:

In [78]: f
Out[78]:
   one  two  three
a  2.4  3.6    NaN
b  NaN  NaN    NaN
c  1.3  3.7    4.9
d  0.5  6.6    8.8
In [79]: f1
Out[79]:
one      d
two      a
three    c
dtype: object
In [80]: f2
Out[80]:
one      a
two      d
three    d
dtype: object

从上述运行结果可以看出,idxmin或idxmax方法返回的是最小值或最大值的索引,而并非是直接的数据。与描述统计相关的方法有很多,可以实现不同的需求,例如,约简、间接统计、累计统计等,具体如表4.9所示。

方法 说明
count 非NA值的数量
describe 针对Series或DataFrame各列计算汇总统计
min、max 计算最小值和最大值
argmin、argmax 计算能够获取到的最小值和最大值的索引位置(整数)
idxmin、idxmax 计算能够获取到最小值和最大值的索引值
quantile 计算样本的分位数(0到1)
sum 指的总和
mean 指的平均数
median 值的算术中位数(50%分位数)
mad 根据平均值计算平均绝对离差
var 样本值的方差
std 样本值的标准差
skew 样本值的偏度(三阶矩)
kurt 样本值的峰度(四阶矩)
cumsum 样本值的累计和
cummax、cummin 样本值的累计最大值和累计最小值
cumprod 样本值的累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化

相关文章

网友评论

      本文标题:数据的初步处理之常用的数学和统计方法

      本文链接:https://www.haomeiwen.com/subject/blsbgftx.html