Pandas | 14 統計函數

統計方法有助於理解和分析數據的行爲。能夠將這些統計函數應用到Pandas的對象上。python

pct_change()函數

系列,DatFrames和Panel都有pct_change()函數。此函數將每一個元素與其前一個元素進行比較,並計算變化百分比。shell

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    1
1 2
2 3
3 4
4 5
dtype: int64
0 NaN
1 1.000000
2 0.500000
3 0.333333
4 0.250000
dtype: float64


0 1
0 1.055808 1.351057
1 1.458762 0.229309
2 0.392842 -0.043268
3 0.700352 0.884258
4 0.120823 -0.329024
0 1
0 NaN NaN
1 0.381654 -0.830274
2 -0.730702 -1.188686
3 0.782782 -21.436989
4 -0.827482 -1.372090
 

默認狀況下,pct_change()對列進行操做; 若是想應用到行上,那麼可以使用axis = 1參數。dom

協方差

協方差適用於系列數據。Series對象有一個方法cov用來計算序列對象之間的協方差。NA將被自動排除。函數

Cov系列示例spa

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))

輸出結果:code

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())

輸出結果:blog

-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         e
0 -1.101841 -0.074431 0.339134 1.259472 -0.371068
1 0.360877 0.604059 0.276935 -2.151471 -0.172715
2 -0.194507 -1.678110 -1.276085 0.810856 -0.056959
3 0.937636 1.128184 0.284501 -0.455708 0.913037
4 -0.316602 1.252087 -1.790787 -0.103062 0.096654
5 0.796188 -0.771702 -0.921695 -0.403666 0.848957
6 1.842859 0.015955 0.555579 0.166412 -0.106779
7 -2.449436 -0.326649 0.023417 -1.440740 -1.085605
8 0.716881 0.898661 1.880689 1.306625 -0.908817
9 -0.312834 1.490284 -0.485538 0.176377 -1.153862


a b c d e
a 1.000000 0.147945 0.226588 0.142235 0.523855
b 0.147945 1.000000 0.244468 -0.096112 -0.177812
c 0.226588 0.244468 1.000000 0.149294 -0.330628
d 0.142235 -0.096112 0.149294 1.000000 -0.128328
e 0.523855 -0.177812 -0.330628 -0.128328 1.000000


0.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.076208
b 0.869269
c -1.302216
d -0.772624
e -0.290900
dtype: float64


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


a -1.076208
b 0.869269
c -1.302216
d 0.869269
e -0.290900
dtype: float64


a 2.0
b 4.5
c 1.0
d 4.5
e 3.0
dtype: float64

 

 

Rank可選地使用一個默認爲true的升序參數; 當錯誤時,數據被反向排序,也就是較大的值被分配較小的排序。

Rank支持不一樣的tie-breaking方法,用方法參數指定 -

  • average - 並列組平均排序等級
  • min - 組中最低的排序等級
  • max - 組中最高的排序等級
  • first - 按照它們出如今數組中的順序分配隊列
相關文章
相關標籤/搜索