DataFrame窗口函數(shù)rolling()的用法
DataFrame窗口函數(shù)rolling()
在數(shù)據(jù)開發(fā)最經(jīng)常會用到將最近幾個值相加、求平均等操作,類似SQL的group by
在Dataframe中使用rolling操作簡單、計算效率高
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
參數(shù)說明
window
:時間窗的大小,數(shù)值int,即向前幾個數(shù)據(jù)(可以理解將最近的幾個值進行g(shù)roup by)min_periods
:最少需要有值的觀測點的數(shù)量,對于int類型,默認與window相等center
:把窗口的標簽設置為居中,布爾型,默認Falsewin_type
: 窗口的類型,截取窗的各種函數(shù)。字符串類型,默認為Noneon
: 可選參數(shù),對于dataframe而言,指定要計算滾動窗口的列,值為列名closed
:定義區(qū)間的開閉,支持int類型的window,對于offset類型默認是左開右閉的即默認為right,可以根據(jù)情況指定為left、both等axis
:方向(軸),一般都是0
示例代碼
# -*- coding:utf-8 -*- import pandas as pd import numpy as np # 創(chuàng)建DF df = pd.DataFrame(np.random.randint(5, size=(10, 2)), index=pd.date_range('1/1/2020', periods=10), columns=['A', 'B']) # 將B列最近2個值相加并生成新列 df['C'] = df['B'].rolling(window=2).sum() # 將B列最近5個值相加并生成新列 df['D'] = df['B'].rolling(window=5).sum() # 將B列最近2個值求平均并生成新列 df['E'] = df['B'].rolling(window=2).mean() # 將B列最近5個值求平均并生成新列 df['F'] = df['B'].rolling(window=5).mean() print(df)
輸出結(jié)果:
A B C D E F
2020-01-01 4 0 NaN NaN NaN NaN
2020-01-02 4 1 1.0 NaN 0.5 NaN
2020-01-03 1 4 5.0 NaN 2.5 NaN
2020-01-04 2 2 6.0 NaN 3.0 NaN
2020-01-05 0 1 3.0 8.0 1.5 1.6
2020-01-06 2 1 2.0 9.0 1.0 1.8
2020-01-07 4 1 2.0 9.0 1.0 1.8
2020-01-08 3 0 1.0 5.0 0.5 1.0
2020-01-09 3 4 4.0 7.0 2.0 1.4
2020-01-10 3 3 7.0 9.0 3.5 1.8
常用聚合函數(shù)
mean()
求平均count()
非空觀測值數(shù)量sum()
值的總和median()
值的算術(shù)中值min()
最小值max()
最大std()
貝塞爾修正樣本標準差var()
無偏方差skew()
樣品偏斜度(三階矩)kurt()
樣品峰度(四階矩)quantile()
樣本分位數(shù)(百分位上的值)cov()
無偏協(xié)方差(二元)corr()
相關(二進制)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
django 自定義filter 判斷if var in list的例子
今天小編就為大家分享一篇django 自定義filter 判斷if var in list的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08