Python Pandas - funkcje statystyczne
Metody statystyczne pomagają w zrozumieniu i analizie zachowania danych. Nauczymy się teraz kilku funkcji statystycznych, które możemy zastosować na obiektach Pandas.
Percent_change
Serie, ramki danych i panel - wszystkie mają tę funkcję pct_change(). Ta funkcja porównuje każdy element z jego poprzednim elementem i oblicza procent zmiany.
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()
Jego output wygląda następująco -
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
Domyślnie pct_change()działa na kolumnach; jeśli chcesz zastosować ten sam wiersz mądrze, użyjaxis=1() argument.
Kowariancja
Kowariancja jest stosowana do danych szeregowych. Obiekt Series ma metodę cov do obliczenia kowariancji między obiektami serii. NA zostanie automatycznie wykluczona.
Seria 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)
Jego output wygląda następująco -
-0.12978405324
Metoda kowariancji po zastosowaniu w DataFrame oblicza cov między wszystkimi kolumnami.
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()
Jego output wygląda następująco -
-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
Note - Obserwuj cov pomiędzy a i b kolumna w pierwszej instrukcji i to samo jest wartością zwracaną przez cov w DataFrame.
Korelacja
Korelacja przedstawia liniową zależność między dowolnymi dwiema tablicami wartości (szeregami). Istnieje wiele metod obliczania korelacji, takich jak Pearson (domyślnie), Spearman i 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()
Jego output wygląda następująco -
-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
Jeśli jakakolwiek nieliczbowa kolumna jest obecna w DataFrame, jest automatycznie wykluczana.
Ranking danych
Ranking danych tworzy ranking dla każdego elementu w tablicy elementów. W przypadku remisów przypisuje średnią rangę.
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()
Jego output wygląda następująco -
a 1.0
b 3.5
c 2.0
d 3.5
e 5.0
dtype: float64
Ranga opcjonalnie przyjmuje parametr rosnący, który domyślnie ma wartość true; jeśli fałsz, dane są klasyfikowane w odwrotnej kolejności, a większe wartości mają mniejszą rangę.
Rank obsługuje różne metody rozstrzygające, określone za pomocą parametru metody -
average - średnia ranga zremisowanej grupy
min - najniższa pozycja w grupie
max - najwyższa pozycja w grupie
first - rangi przypisane w kolejności, w jakiej pojawiają się w tablicy