Python Pandas 统计聚合函数
统计方法有助于理解和分析数据的行为。现在我们将学习一些统计函数,可以将这些函数应用到_Pandas_的对象上。
pct_change()函数
系列,DatFrames和Panel都有pct_change()
函数。此函数将每个元素与其前一个元素进行比较,并计算变化百分比。 默认情况下,pct_change()
对列进行操作; 如果想应用到行上,那么可使用axis = 1
参数。
协方差
协方差适用于系列数据。Series对象有一个方法cov
用来计算序列对象之间的协方差。NA
将被自动排除。
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
相关性
相关性显示了任何两个数值(系列)之间的线性关系。有多种方法来计算pearson
(默认),spearman
和kendall
之间的相关性。
数据排名
数据排名为元素数组中的每个元素生成排名。在关系的情况下,分配平均等级。 Rank
可选地使用一个默认为true
的升序参数; 当错误时,数据被反向排序,也就是较大的值被分配较小的排序。 Rank
支持不同的tie-breaking
方法,用方法参数指定 -
average
- 并列组平均排序等级min
- 组中最低的排序等级max
- 组中最高的排序等级first
- 按照它们出现在数组中的顺序分配队列
代码举例
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()) # 此函数将每个元素与其前一个元素进行比较,并计算变化百分比
s1 = pd.Series(np.random.randn(10))
s2 = pd.Series(np.random.randn(10))
print(s1.cov(s2)) # 协方差适用于系列数据。Series对象有一个方法cov用来计算序列对象之间的协方差。NA将被自动排除。
frame = pd.DataFrame(np.random.randn(10, 5), columns=[‘a’, ‘b’, ‘c’, ‘d’, ‘e’])
print(frame[‘a’].cov(frame[‘b’]))
print(frame.cov()) # 协方差方法计算所有列之间的协方差(cov)值
print(frame[‘a’].corr(frame[‘b’]))
print(frame.corr()) # pearson(默认),spearman和kendall之间的相关性。
s = pd.Series(np.random.np.random.randn(5), index=list(‘abcde’))
s[‘d’] = s[‘b’]
‘’’
average - 并列组平均排序等级
min - 组中最低的排序等级
max - 组中最高的排序等级
first - 按照它们出现在数组中的顺序分配队列
‘’’
print(s.rank()) # 数据排名为元素数组中的每个元素生成排名
df = pd.DataFrame(np.random.randn(10, 4),
index=pd.date_range(‘1/1/2016’, periods=10),
columns=[‘A’, ‘B’, ‘C’, ‘D’])
print(“----------------------------------------------------”)
print(df.rolling(window=3).mean()) # 由于窗口大小为3(window),前两个元素有空值,第三个元素的值将是n,n-1和n-2元素的平均值。这样也可以应用上面提到的各种函数了。
print(df.expanding(min_periods=3).mean())
print(df.ewm(com=0.5).mean()) # 加权
print(“----------------------------------------------------”)
print(df)
r = df.rolling(window=3, min_periods=1)
print®
print(r.aggregate(np.sum)) # 应用于全体数据
print(r[‘A’].aggregate(np.sum)) # 应用于单列
print(r[[‘A’, ‘B’]].aggregate(np.sum)) # 应用于多列
print(r[‘A’].aggregate([np.sum, np.mean])) # 单列多函数
print(r[[‘A’, ‘B’]].aggregate([np.sum, np.mean])) # 多列多函数
print(r.aggregate({‘A’: np.sum, ‘B’: np.mean})) # 将不同的函数应用于DataFrame的不同列