Pandas | 14 统计函数

爱⌒轻易说出口 提交于 2019-12-03 07:32:40

统计方法有助于理解和分析数据的行为。可以将这些统计函数应用到Pandas的对象上。

pct_change()函数

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

import pandas as pd
import numpy as np

s = pd.Series([1,2,3,4,5])
print(s)
print (s.pct_change())
print('\n')

df = pd.DataFrame(np.random.randn(5, 2))
print(df)
print (df.pct_change())

输出结果:

0    11    22    33    44    5dtype: int640         NaN1    1.0000002    0.5000003    0.3333334    0.250000dtype: float64          0         10  1.055808  1.3510571  1.458762  0.2293092  0.392842 -0.0432683  0.700352  0.8842584  0.120823 -0.329024          0          10       NaN        NaN1  0.381654  -0.8302742 -0.730702  -1.1886863  0.782782 -21.4369894 -0.827482  -1.372090
 

默认情况下,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
 

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

相关性

相关性显示了任何两个数值(系列)之间的线性关系。有多种方法来计算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)
print('\n')

print (frame.corr())
print('\n')

print (frame['a'].corr(frame['b']))

输出结果:

          a         b         c         d         e0 -1.101841 -0.074431  0.339134  1.259472 -0.3710681  0.360877  0.604059  0.276935 -2.151471 -0.1727152 -0.194507 -1.678110 -1.276085  0.810856 -0.0569593  0.937636  1.128184  0.284501 -0.455708  0.9130374 -0.316602  1.252087 -1.790787 -0.103062  0.0966545  0.796188 -0.771702 -0.921695 -0.403666  0.8489576  1.842859  0.015955  0.555579  0.166412 -0.1067797 -2.449436 -0.326649  0.023417 -1.440740 -1.0856058  0.716881  0.898661  1.880689  1.306625 -0.9088179 -0.312834  1.490284 -0.485538  0.176377 -1.153862          a         b         c         d         ea  1.000000  0.147945  0.226588  0.142235  0.523855b  0.147945  1.000000  0.244468 -0.096112 -0.177812c  0.226588  0.244468  1.000000  0.149294 -0.330628d  0.142235 -0.096112  0.149294  1.000000 -0.128328e  0.523855 -0.177812 -0.330628 -0.128328  1.0000000.14794498240798468

 

-0.613999376618

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

数据排名

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

import pandas as pd
import numpy as np

s = pd.Series(np.random.randn(5), index=list('abcde'))
print(s)
print('\n')
print (s.rank())          # 正常安装数值大小排名
print('\n')

s['d'] = s['b']                 # so there's a tie
print(s)
print('\n')
print (s.rank())

输出结果:

a   -1.076208b    0.869269c   -1.302216d   -0.772624e   -0.290900dtype: float64a    2.0b    5.0c    1.0d    3.0e    4.0dtype: float64a   -1.076208b    0.869269c   -1.302216d    0.869269e   -0.290900dtype: float64a    2.0b    4.5c    1.0d    4.5e    3.0dtype: float64

 


Rank可选地使用一个默认为true的升序参数; 当错误时,数据被反向排序,也就是较大的值被分配较小的排序。

Rank支持不同的tie-breaking方法,用方法参数指定 -

  • average - 并列组平均排序等级
  • min - 组中最低的排序等级
  • max - 组中最高的排序等级
  • first - 按照它们出现在数组中的顺序分配队列




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!