How to apply functions in a Group in a Pandas DataFrame?
0

How to apply functions in a Group in a Pandas DataFrame?

This recipe helps you apply functions in a Group in a Pandas DataFrame
In [1]:
## How to apply functions in a Group in a Pandas DataFrame
def Kickstarter_Example_69():
    print()
    print(format('How to apply functions in a Group in a Pandas DataFrame','*^82'))

    import warnings
    warnings.filterwarnings("ignore")

    # load libraries
    import pandas as pd

    # Create an example dataframe
    data = {'EmployeeGroup': ['A','A','A','A','A','A','B','B','B','B','B','C','C','C','C','C'],
            'Points': [10,40,50,70,50,50,60,10,40,50,60,70,40,60,40,60]}
    df = pd.DataFrame(data)
    print('\nThe Original DataFrame'); print(df)

    # Apply A Function (Rolling Mean) To The DataFrame, By Group
    print('\nRolling Mean:'); print(df.groupby('EmployeeGroup')['Points'].apply(lambda x:x.rolling(center=False,window=2).mean()))

    # Apply A Function (Mean) To The DataFrame, By Group    
    print('\nAverage:'); print(df.groupby('EmployeeGroup')['Points'].apply(lambda x:x.mean()))

    # Apply A Function (Sum) To The DataFrame, By Group    
    print('\nSum:'); print(df.groupby('EmployeeGroup')['Points'].apply(lambda x:x.sum()))

    # Apply A Function (Max) To The DataFrame, By Group    
    print('\nMaximum:'); print(df.groupby('EmployeeGroup')['Points'].apply(lambda x:x.max()))

    # Apply A Function (Min) To The DataFrame, By Group    
    print('\nMinimum:'); print(df.groupby('EmployeeGroup')['Points'].apply(lambda x:x.min()))

Kickstarter_Example_69()
*************How to apply functions in a Group in a Pandas DataFrame**************

The Original DataFrame
   EmployeeGroup  Points
0              A      10
1              A      40
2              A      50
3              A      70
4              A      50
5              A      50
6              B      60
7              B      10
8              B      40
9              B      50
10             B      60
11             C      70
12             C      40
13             C      60
14             C      40
15             C      60

Rolling Mean:
0      NaN
1     25.0
2     45.0
3     60.0
4     60.0
5     50.0
6      NaN
7     35.0
8     25.0
9     45.0
10    55.0
11     NaN
12    55.0
13    50.0
14    50.0
15    50.0
Name: Points, dtype: float64

Average:
EmployeeGroup
A    45.0
B    44.0
C    54.0
Name: Points, dtype: float64

Sum:
EmployeeGroup
A    270
B    220
C    270
Name: Points, dtype: int64

Maximum:
EmployeeGroup
A    70
B    60
C    70
Name: Points, dtype: int64

Minimum:
EmployeeGroup
A    10
B    10
C    40
Name: Points, dtype: int64