在《Python Pandas窗口函数》一节,我们重点介绍了窗口函数。我们知道,窗口函数可以与聚合函数一起使用,聚合函数指的是对一组数据求总和、最大值、最小值以及平均值的操作,本节重点讲解聚合函数的应用。
首先让我们创建一个 DataFrame 对象,然后对聚合函数进行应用。
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
- print (df)
- #窗口大小为3,min_periods 最小观测值为1
- r = df.rolling(window=3,min_periods=1)
- print(r)
输出结果:
您可以把一个聚合函数传递给 DataFrame,示例如下:
- import pandas as pd
- import numpy as np
-
- df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
- print (df)
- #窗口大小为3,min_periods 最小观测值为1
- r = df.rolling(window=3,min_periods=1)
- #使用 aggregate()聚合操作
- print(r.aggregate(np.sum))
输出结果:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
- #窗口大小为3,min_periods 最小观测值为1
- r = df.rolling(window=3,min_periods=1)
- #对 A 列聚合
- print(r['A'].aggregate(np.sum))
输出结果:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
- #窗口大小为3,min_periods 最小观测值为1
- r = df.rolling(window=3,min_periods=1)
- #对 A/B 两列聚合
- print(r['A','B'].aggregate(np.sum))
输出结果:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
- #窗口大小为3,min_periods 最小观测值为1
- r = df.rolling(window=3,min_periods=1)
- #对 A/B 两列聚合
- print(r['A','B'].aggregate([np.sum,np.mean]))
输出结果:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5, 4),
- index = pd.date_range('12/11/2020', periods=5),
- columns = ['A', 'B', 'C', 'D'])
- r = df.rolling(window=3,min_periods=1)
- print( r['A','B'].aggregate([np.sum,np.mean]))
输出结果:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(3, 4),
- index = pd.date_range('12/14/2020', periods=3),
- columns = ['A', 'B', 'C', 'D'])
- r = df.rolling(window=3,min_periods=1)
- print(r.aggregate({'A': np.sum,'B': np.mean}))
输出结果: