Python

# Pandas Rolling Groupby

The Python programming language provides Pandas library which has many methods that perform simple to complex functions. Pandas in Python make data analysis very simple and easy. Moreover, it is a very exceptional language for performing data investigation while providing an incredible environment of information-driven python bundles.

In this article, we will discuss the pandas rolling groupby function in Python. Here, we will demonstrate some useful examples that will help you learn about the Pandas rolling groupby function and how to use that function in python code. So, let us begin with the definition of the rolling function.

## What is Pandas Rolling?

The Pandas provide several useful functions and rolling() is one of those exceptionally good functions that are capable of performing complex calculations on data. The rolling() function provides a rolling window calculation on the input data in the given object series. The rolling window concept is mostly used in time series data or signal processing.

In other words, let us say we took a window size of ‘w’ at a time ‘t’ and applied some mathematical operations to it. The ‘w’ size of the window means the ‘w’ consecutive values at a time ‘t’ where all the ‘w’ values are weighted.

## What is a Rolling Window?

The basic concept of a rolling window is calculating the data from the provided date to the rolling window shift. For example, let’s say an employee is on a 6-month rolling window, it means he gets his salary on the 1st of January of every year and another salary on the 1st of July of every year. Simple, the rolling window is relative to the first date and automatically forward with the specified rolling window time, in our example, it is a 6-month rolling window.

## How Does Pandas Rolling() Function Work with DataFrame?

The rolling() function in python Pandas provides the elements of rolling window count. The idea of the rolling window in python is the same as the general idea of a rolling window. In simple words, the user provides a weighted window size ‘w’ at once and performs some mathematical operations on it.

## What is the Syntax of Pandas Rolling Groupby Function?

Below, you can find the syntax of Pandas rolling groupby function.

As you can see, the rolling() function takes 8 parameters; windowSize, MinPeriod, frequency, Center, WinType, on, axis, and closed.

The ‘windowSize’ parameter defines the size of the moving window which is in simple words the number of times a calculation needs to be performed and by default its value is 1. The ‘MinPeriod’ parameter defines the minimum number of observations required in a defined window. The ‘frequency’ parameter defines the frequency of the data before performing any statistical computations. The ‘Center’ parameter defines the label at the center of the window.

The ‘WinType’ parameter defines the type of window. The ‘on’ parameter defines the column rather than the index of the DataFrame on which the calculation of the rolling window needs to be performed. The ‘closed’ parameter defines which interval needs to be closed, either it is closed on ‘neither’, ‘left’, ‘right’, or ‘both’ endpoints.

And finally, the ‘axis’ parameter provides the value of the axis in integer or string format, and by default it is 0. Now, let us move on to the examples to learn how to include the rolling() function in our Python code and how the rolling() function of pandas in python works with DataFrame.

## Example 1

Now, let’s start with creating a simple DataFrame which we need to use in the rolling() function. 5 values are defined in the Dataframe which are 10, 18, 50, 70, and np.nan. After that, we will simply call the rolling() function and provide the window size 3. Here is the code of pandas rolling groupby function:

import pandas as pd
import numpy as np
df = pd.DataFrame({'Z': [10, 18, 50, 70, np.nan]})
print(df.rolling(3).sum())

Below is the output of the above code. Note that the first 2 values are nan while the third value is 78 which is the sum of the previous 3 values 10, 18, and 50. As we have provided the window size 3, the rolling function performed the calculator after three windows. The fourth value 138 is the sum of three previous values which are 18, 50, and 70. Note that the last value is again nan, it is not because the window size is expired or something else, it is because the 5th input value is nan. So, anything added to nan will be nan.

## Example 2

We have seen a simple example of the rolling() function, now let us create a timestamp type of DataFrame to understand how rolling() function work on the date/time type of data. Here we will be using the same DataFrame which we have created in the previous example, but now we will add the index column specifying the timestamp value for each column. See the additional index column in the code below:

import pandas as pd
import numpy as np

df_time = pd.DataFrame({'B': [10, 18, 50, 70, np.nan]},
index = [pd.Timestamp('20220101 10:00:00'),
pd.Timestamp('20220101 10:00:01'),
pd.Timestamp('20220101 10:00:02'),
pd.Timestamp('20220101 10:00:03'),
pd.Timestamp('20220101 10:00:04')])
df_time
print(df_time.rolling('5s').sum())

After executing the rolling() function of timestamp data we will get the following output:

## Example 3

In this example, we will help you learn how you can specify the MinPeriod for the rolling() function. As discussed above, the MinPeriod parameter of rolling() function defines the minimum number of observations required to perform the mathematical operation. Here, we are again calculating the sum with rolling window size 3 and MinPeriod 1. See the code below:

import pandas as pd
import numpy as np
df = pd.DataFrame({'Z': [10, 18, 50, 70, np.nan]})
print(df.rolling(2, min_periods=1).sum())

Here is the output of the code given above.

## Conclusion

In this article, we have demonstrated the use of the rolling() function in Python. With the help of simple examples, we have observed how the rolling() function works with DataFrames. All of the above codes can be implemented on any compiler of Python.