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

Fonctions statistiques Pandas

Pandas 统计函数的操作实例

统计方法有助于理解和分析数据的行为。现在,我们将学习一些统计函数,可以将它们应用于Pandas对象。

百分比变化

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

Résultat de l'exécution :

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

Résultat de l'exécution :

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

Résultat de l'exécution :

 -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

Observons la valeur cov entre les colonnes a et b de la première instruction, ce qui est le même que la valeur cov retournée par DataFrame.

Corrélation

La corrélation montre la relation linéaire entre deux valeurs d'un tableau de valeurs (séquence). Il existe plusieurs méthodes pour calculer la corrélation, telles que pearson (par défaut), spearman et 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())

Résultat de l'exécution :

 -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

Si le DataFrame contient des colonnes non numériques, elles seront automatiquement exclues.

Classement des données

Le classement des données place un rang à chaque élément de l'array d'éléments. Si il y a un match, un rang moyen est attribué.

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

Résultat de l'exécution :

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

Rank peut choisir de trier les paramètres en ordre croissant, par défaut il est true ; si false, le classement des données est inversé, les valeurs plus grandes sont attribuées aux rangs plus petits.

Rank prend en charge l'utilisation du paramètre method :

average − La moyenne des rangs des groupes adjacents. min − Le rang le plus bas du groupe. max − Le rang le plus élevé du groupe. first − L'ordre des colonnes et des lignes est assigné dans l'ordre où elles apparaissent dans le tableau.