统计方法有助于理解和分析数据的行为。现在我们将学习一些统计函数,可以将这些函数应用到Pandas的对象上。
系列,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.000000 0.500000 0.333333 0.250000 -0.200000 dtype: float64 NaN NaN -15.151902 0.174730 -0.746374 -1.449088 -3.582229 -3.165836 15.601150 -1.860434
默认情况下,pct_change()
对列进行操作; 如果想应用到行上,那么可使用axis = 1
参数。
协方差适用于系列数据。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.0667296739178
当应用于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.406796939839 a b c d e a 0.784886 -0.406797 0.181312 0.513549 -0.597385 b -0.406797 0.987106 -0.662898 -0.492781 0.388693 c 0.181312 -0.662898 1.450012 0.484724 -0.476961 d 0.513549 -0.492781 0.484724 1.571194 -0.365274 e -0.597385 0.388693 -0.476961 -0.365274 0.785044
注 - 观察第一个语句中
a
和b
列之间的cov
结果值,与由DataFrame上的cov
返回的值相同。
相关性显示了任何两个数值(系列)之间的线性关系。有多种方法来计算pearson
(默认),spearman
和kendall
之间的相关性。
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())
执行上面示例代码,得到以下结果 -
-0.613999376618 a b c d e a 1.000000 -0.613999 -0.040741 -0.227761 -0.192171 b -0.613999 1.000000 0.012303 0.273584 0.591826 c -0.040741 0.012303 1.000000 -0.391736 -0.470765 d -0.227761 0.273584 -0.391736 1.000000 0.364946 e -0.192171 0.591826 -0.470765 0.364946 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 4.0 b 1.5 c 3.0 d 1.5 e 5.0 dtype: float64
Rank
可选地使用一个默认为true
的升序参数; 当错误时,数据被反向排序,也就是较大的值被分配较小的排序。
Rank
支持不同的tie-breaking
方法,用方法参数指定 -
average
- 并列组平均排序等级min
- 组中最低的排序等级max
- 组中最高的排序等级first
- 按照它们出现在数组中的顺序分配队列