>>> from env_helper import info; info()
页面更新时间: 2020-07-05 19:42:15
操作系统/OS: Linux-4.19.0-9-amd64-x86_64-with-debian-10.4 ;Python: 3.7.3
6.5. Pandas统计函数¶
统计方法有助于理解和分析数据的行为。现在我们将学习一些统计函数,可以将这些函数应用到Pandas的对象上。
pct_change()函数¶
系列,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 1.715647 -0.782998
2 -1.036604 -3.946877
3 5.822339 -0.319222
4 -1.642254 0.651260
默认情况下,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.11455098112976062
当应用于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.08799454145708029
a b c d e
a 0.505805 0.087995 -0.395936 -0.002622 0.385068
b 0.087995 0.674307 -0.096464 -0.410428 -0.151635
c -0.395936 -0.096464 0.989045 0.030377 -0.437175
d -0.002622 -0.410428 0.030377 1.201569 -0.439404
e 0.385068 -0.151635 -0.437175 -0.439404 1.258176
注 - 观察第一个语句中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.0678453446172776
a b c d e
a 1.000000 -0.067845 -0.326843 0.000984 -0.227762
b -0.067845 1.000000 0.439217 -0.219488 0.078177
c -0.326843 0.439217 1.000000 0.138069 -0.297560
d 0.000984 -0.219488 0.138069 1.000000 0.002307
e -0.227762 0.078177 -0.297560 0.002307 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 3.5
c 2.0
d 3.5
e 1.0
dtype: float64
Rank可选地使用一个默认为true的升序参数; 当错误时,数据被反向排序,也就是较大的值被分配较小的排序。
Rank支持不同的tie-breaking方法,用方法参数指定 -
average - 并列组平均排序等级
min - 组中最低的排序等级
max - 组中最高的排序等级
first - 按照它们出现在数组中的顺序分配队列