English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas 統計関数

Pandas統計関数の操作例

統計方法は、データの動作を理解し、分析するのに役立ちます。今から、Pandasオブジェクトに適用できる統計関数を学びます。

パーセンテージ変動

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

デフォルトでは、pct_change()は列に対して操作を行います;同一行に適用したい場合は、axis = 1()パラメータ。

相関

シーケンスデータに協方差を適用します。シーケンスオブジェクトには、シーケンスオブジェクト間の相関を計算するためのcovメソッドがあります。NAは自動的に排除されます。

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

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

第一条文の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.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に非数字の列が存在する場合、自動的に除外されます。

データのランク付け

データのランク付けは、要素配列の各要素に対してランク付けを行います。平局の場合は、平均ランクが割り当てられます。

 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  1.0
b  3.5
c  2.0
d  3.5
e  5.0
dtype: float64

Rankはパラメータを昇順に選択できます。デフォルトではtrueです;falseの場合、データに逆順のランクを割り当て、大きな値を小さいランクに割り当てます。

Rankはmethodパラメータを使用できます:

average − 平行グループの平均レベル。 min − グループ内の最低のランク。 max − グループ内の最高レベル。 first − 配列内で行と列が現れる順序で割り当てられます。