Phương pháp thống kê giúp hiểu và phân tích hành vi của dữ liệu. Bây giờ chúng ta sẽ tìm hiểu một vài hàm thống kê mà ta có thể áp dụng trong Pandas.
1. Percent_change
Series, DatFrames và Panel, tất cả đều có hàm pct_change (). Hàm này so sánh mọi phần tử với phần tử trước của nó và tính toán tỷ lệ phần trăm thay đổi.
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()
Kết quả :
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
Theo mặc định, pct_change () hoạt động trên các cột; nếu bạn muốn áp dụng cùng một hàng, thay đổi đối số axis = 1 ().
2. Covariance ( Hiệp phương sai)
Hiệp phương sai được áp dụng trên dữ liệu series. Đối tượng Series có một phương thức cov để tính hiệp phương sai giữa các đối tượng series. NA sẽ tự động bị loại trừ.
a. 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)
Kết quả :
-0.12978405324
Phương pháp hiệp phương sai khi được áp dụng trên DataFrame, tính toán cov giữa tất cả các cột.
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()
Kết quả :
-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
Lưu ý – giữa cột a và b trong câu lệnh đầu tiên và cùng là giá trị được trả về bởi cov trên DataFrame.
3. Correlation
Correlation cho thấy mối quan hệ tuyến tính giữa hai mảng giá trị (series) bất kỳ. Có nhiều phương pháp để tính toán mối tương quan như pearson (mặc định), Speman và 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()
Kết quả :
-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
Nếu có bất kỳ cột nào không phải là số trong DataFrame, nó sẽ tự động bị loại trừ.
4. Data Ranking
Data ranking tạo ra xếp hạng cho từng phần tử trong mảng các phần tử. Trong trường hợp quan hệ, chỉ định thứ hạng trung bình.
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()
Kết quả :
a 1.0
b 3.5
c 2.0
d 3.5
e 5.0
dtype: float64
Rank tùy chọn nhận một tham số tăng dần theo mặc định là True; khi false, dữ liệu được xếp hạng ngược, với các giá trị lớn hơn được chỉ định một thứ hạng nhỏ hơn.
- average − xếp hạng trung bình của nhóm bị ràng buộc
- min − thứ hạng thấp nhất trong nhóm
- max − thứ hạng cao nhất trong nhóm
- first − xếp hạng được chỉ định theo thứ tự xuất hiện trong mảng