炫意html5
最早CSS3和HTML5移动技术网站之一

Pandas教程 – 统计函数

本章介绍Pandas 统计函数,和Numpy统计函数类似,统计方法有助于理解和分析数据的行为,现在我们将学习一些统计函数,可以将这些函数应用到Pandas的对象上。下面着重介绍pct_change(),协方差(cov()),相关系数(corr()),数据排名(rank())。

计算变化百分数

Series,DatFrames和Panel都有pct_change()函数,此函数将每个元素与其前一个元素进行比较,并计算变化百分比。

import pandas as pd
import numpy as np
s = pd.Series([1,2,3,4,5,4])
print (s.pct_change())
df = pd.DataFrame(np.random.randn(5, 2))
print (df.pct_change())

执行上面示例代码,得到以下结果 –

0         NaN
1    1.000000
2    0.500000
3    0.333333
4    0.250000
5   -0.200000
dtype: float64
0           1
0       NaN         NaN
1  0.384032   -0.996141
2 -1.736876  679.793981
3  1.063848   -0.441469
4 -1.060066   -1.576158

默认情况下,pct_change()对列进行操作; 如果想应用到行上,那么可使用axis = 1参数。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3))
print (df.pct_change(axis = 1))

执行上面示例代码,得到以下结果 –

    0          1          2
0 NaN  -0.599407  -1.738091
1 NaN   5.394569  -0.862050
2 NaN   1.020426   0.336214
3 NaN -10.247115  -0.156959
4 NaN  -1.018125  74.084838

协方差

协方差适用于Series数据。Series对象有一个方法cov用来计算序列对象之间的协方差。NA将被自动排除。
Cov系列示例

import pandas as pd
import numpy as np
s1 = pd.Series(np.random.randn(10))
s2 = pd.Series(np.random.randn(10))
print (s1.cov(s2))

执行上面示例代码,得到以下结果 –

0.529569917929239

当应用于DataFrame时,协方差方法计算所有列之间的协方差(cov)值。

import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
print (frame['a'].cov(frame['b']))
print (frame.cov())

执行上面示例代码,得到以下结果 –

-0.45404986040872625
a         b         c         d         e
a  1.097219 -0.454050  0.220000 -0.042623  0.512828
b -0.454050  0.486687 -0.142435 -0.049252 -0.214837
c  0.220000 -0.142435  0.259743  0.085890  0.450370
d -0.042623 -0.049252  0.085890  0.702702 -0.028761
e  0.512828 -0.214837  0.450370 -0.028761  0.992702

注 – 观察第一个语句中ab列之间的cov结果值,与由DataFrame上的cov返回的值相同。

相关系数

相关系数显示了任何两个数值(Series)之间的线性关系。有多种方法来计算pearson(默认),spearmankendall之间的相关性。

import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
print (frame['a'].corr(frame['b']))
print (frame.corr()) # 默认method='pearson'

执行上面示例代码,得到以下结果 –

-0.18659310507001042
a         b         c         d         e
a  1.000000 -0.186593 -0.305414  0.321063 -0.138488
b -0.186593  1.000000  0.255518 -0.347755 -0.371529
c -0.305414  0.255518  1.000000 -0.167094  0.568831
d  0.321063 -0.347755 -0.167094  1.000000  0.186296
e -0.138488 -0.371529  0.568831  0.186296  1.000000

如果DataFrame中存在任何非数字列,则会自动排除。

数据排名

数据排名为元素数组中的每个元素生成排名。在相同的情况下,分配平均等级。

import pandas as pd
import numpy as np
s = pd.Series(np.random.np.random.randn(5), index=list('abcde'))
s['d'] = s['b'] # so there's a tie
print (s.rank())

执行上面示例代码,得到以下结果 –

a    5.0
b    1.5
c    4.0
d    1.5
e    3.0
dtype: float64

rank 使用默认为true的升序参数(ascending=True), 当设置为false(ascending=True)时,数据按照降序排序。

rank支持不同的tie-breaking方法:

  • average – 默认值,相同数据分配平均数
  • min – 相同数据分配最小等级
  • max – 相同数据分配最大等级
  • first – 相同数据根据出现在数组的顺序分配等级

示例如下:

import pandas as pd
import numpy as np
s = pd.Series(np.random.np.random.randn(5), index=list('abcde'))
s['d'] = s['b'] # so there's a tie
print (s.rank(method='first'))

执行上面示例代码,得到以下结果 –

a    3.0
b    4.0
c    1.0
d    5.0
e    2.0
dtype: float64

学习笔记

更多统计函数参考如下表格:

函数描述
count非空数据的个数
sum数据之和
mean算术平均值
mad平均绝对方差
median中位数
min最小值
max最大值
mode众数
abs绝对值
prod数组元素的乘积
std标准差
var方差
sem标准误差
skew偏差
kurt样本值峰度
quantile分位数
cumsum累加
cumprod累乘
cummax累计最大值
cummin累计最小值
cov()协方差
corr()相关系数
rank()数据排名
pct_change()计算百分数变化

炫意HTML5 » Pandas教程 – 统计函数

Java基础教程Android基础教程