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:把窗口的標簽設(shè)置為居中,布爾型,默認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()相關(guān)(二進制)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
django 自定義filter 判斷if var in list的例子
今天小編就為大家分享一篇django 自定義filter 判斷if var in list的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08

