Pandas对象拥有一组常用的数字和统计方法,这一章就简单的说一下这些方法
sum()
我们就直接来看看示例吧
In [4]: df = pd.DataFrame({"one":[1.4,2.0,np.nan,0.22],"two":[np.nan,-2.4,np.nan
...: ,-3]},index=list("abcd"))
In [5]: df
Out[5]:
one two
a 1.40 NaN
b 2.00 -2.4
c NaN NaN
d 0.22 -3.0
In [6]: df.sum()
Out[6]:
one 3.62
two -5.40
dtype: float64
我们生成了一个DataFrame,SUM会返回一个含有列小计的Series,
我们想求行上的合计就需要添加参数
In [9]: df.sum(axis=1)
Out[9]:
a 1.40
b -0.40
c 0.00
d -2.78
dtype: float64
这里我们注意到index=“c”这一行的求和得到的是0,明明之前是Nan,在sum函数中其实还有一个参数skipna,代表了是否排除缺失值,默认情况是True。
In [11]: df.sum(axis=1,skipna=False)
Out[11]:
a NaN
b -0.40
c NaN
d -2.78
dtype: float64
(有些版本的pandas在使用此类函数时Nan和Nan相加即使在skipna=True时计算结果依旧是Nan,我当前使用的pandas在此情况下两个nan相加则为0)
mean()
mean方法返回平均值
In [12]: df.mean()
Out[12]:
one 1.206667
two -2.700000
dtype: float64
有一些方法(idxmin,idxmax)返回的是间接统计
idxmax()
返回最大值的索引
In [57]: df.idxmax()
Out[57]:
one b
two b
dtype: object
idxmin()
返回最小值的索引
In [58]: df.idxmin()
Out[58]:
one d
two d
dtype: object
cumsum()
返回累计和
In [59]: df.cumsum()
Out[59]:
one two
a 1.40 NaN
b 3.40 -2.4
c NaN NaN
d 3.62 -5.4
descirbe()
返回针对Series或DataFrame列的多种统计
In [60]: df.describe()
Out[60]:
one two
count 3.000000 2.000000
mean 1.206667 -2.700000
std 0.905612 0.424264
min 0.220000 -3.000000
25% 0.810000 -2.850000
50% 1.400000 -2.700000
75% 1.700000 -2.550000
max 2.000000 -2.400000
返回了很多统计值,
对于非数值型的数据,describe()`会产生一种汇总统计
In [68]: obj = pd.Series(['a','a','b','c']*4)
In [69]: obj
Out[69]:
0 a
1 a
2 b
3 c
4 a
5 a
6 b
7 c
8 a
9 a
10 b
11 c
12 a
13 a
14 b
15 c
dtype: object
In [70]: obj.describe()
Out[70]:
count 16
unique 3
top a
freq 8
dtype: object
分别是计数,去重后计数,出现次数做多的元素和其出现次数。
方法 | 说明 |
---|---|
count | 计算非Na值的数量 |
describe | 多种统计描述 |
min | 最小值 |
max | 最大值 |
idxmax | 最大值索引 |
idxmin | 最小值索引 |
quantile | 计算样本的分位数 |
mean | 平均数 |
median | 中位数 |
std | 标准差 |
var | 方差 |
cumsum | 累积和 |
cummax | 累计最大值 |
cummin | 累计最小值 |
cumprod | 累计乘积 |
diff | 一阶差分 |