Python Pandas - 統計函式



在資料分析中,瞭解資料中的模式和關係至關重要。Pandas 中的統計方法有助於從資料中提取有意義的資訊、模式和關係,使您能夠做出決策並分析資料的行為。

在本教程中,我們將探討 Pandas 中提供的一些關鍵統計函式。這些函式旨在幫助您以不同的方式總結和理解您的資料。無論您是想衡量隨時間的變化、評估變數之間的關係還是對資料進行排名,Pandas 都提供了您所需的工具。

分析分數變化

Pandas 中的 pct_change() 函式計算當前元素和先前元素之間的分數變化。它是瞭解資料如何隨時間演變的寶貴工具,通常用於金融資料分析。

示例

以下是使用 pct_change() 方法計算 Pandas Series 和 DataFrame 的當前元素和先前元素之間分數變化的示例。

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  -15.151902   0.174730
2  -0.746374   -1.449088
3  -3.582229   -3.165836
4   15.601150  -1.860434

預設情況下,pct_change() 對列進行操作;如果您想按行應用相同操作,則使用 axis=1() 引數。

瞭解協方差

協方差衡量兩個變數如何一起變化。在 Pandas 中,cov() 方法計算兩個 Series 物件之間的協方差或 DataFrame 中所有列對之間的協方差。

示例

以下是使用 Series.cov() 方法計算兩個 Series 物件之間協方差的示例。

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.02429227824398636

示例

當對 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.58312921152741437

           a           b           c           d            e
a   1.780628   -0.583129   -0.185575    0.003679    -0.136558
b  -0.583129    1.297011    0.136530   -0.523719     0.251064
c  -0.185575    0.136530    0.915227   -0.053881    -0.058926
d   0.003679   -0.523719   -0.053881    1.521426    -0.487694
e  -0.136558    0.251064   -0.058926   -0.487694     0.960761

注意:觀察第一個語句中ab列之間的cov,它與 DataFrame 上 cov 返回的值相同。

測量相關性

相關性顯示任何兩個值陣列(序列)之間的線性關係。Pandas corr() 函式支援不同的相關方法,包括 Pearson(預設)、Spearman 和 Kendall。

示例

此示例使用 corr() 函式計算 DataFrame 的兩列之間的相關性。

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.383712785514

           a          b          c          d           e
a   1.000000  -0.383713  -0.145368   0.002235   -0.104405
b  -0.383713   1.000000   0.125311  -0.372821    0.224908
c  -0.145368   0.125311   1.000000  -0.045661   -0.062840
d   0.002235  -0.372821  -0.045661   1.000000   -0.403380
e  -0.104405   0.224908  -0.062840  -0.403380    1.000000

如果 DataFrame 中存在任何非數值列,則會自動將其排除。

排名資料

rank() 函式為 Series 或 DataFrame 中的元素分配排名。在多個元素具有相同值的情況下,它預設分配平均排名,但此行為可以調整。

示例

以下是使用 rank() 方法計算 Series 元素的數值資料排名的示例。

import pandas as pd
import numpy as np

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

輸出如下所示:

a  1.0
b  3.5
c  2.0
d  3.5
e  5.0
dtype: float64

Rank 可選地接受一個引數 ascending,預設值為 true;當為 false 時,資料會反向排名,較大的值分配較小的排名。它支援不同的係數分解方法,由 method 引數指定:

  • average: 係數組的平均排名

  • min: 組中的最低排名

  • max: 組中的最高排名

  • first: 按其在陣列中出現的順序分配排名

廣告