gcGroupbyExtension: chain .apply methods on Pandas groupby object
Install
The extension is available on PyPi
pip install gcGroupbyExtension-gcalmettes
(Or if you do not want to install the package in your python distribution, just download this repo and place the gcGroupbyExtension folder in the folder you're running your python script/notebook in.)
Import
Once installed, the extension can be imported via:
import gcGroupbyExtension
What problems does this extension try to solve?
Pandas provides both the .pipe and .apply methods to work on its groupby object.
The main difference between .pipe and .apply in the groupby context is that you have access to the entire scope of the groupby object (each group) with .pipe, while you only have access to the subcomponents scope (in the context of a groupby the subcomponents are slices of the dataframe that called groupby where each slice is a dataframe itself. This is analogous for a series groupby.)
- The
.pipemethod can be chained, while the.applymethod can't. - You can use the
.aggmethod to limit the application of the functions on particular columns of the groups, but it is cumbersome to apply specific functions independantly on only a selection of the groups. - There is no easy way to construct independant pipelines of functions for each group.
This extension provides this capability.
What does this extension actually do?
This extension allows to construct a pipeline of functions to be applied independently on the groups of a groupby object. The functions/transformations to be applied can be the same for all the groups or scoped to (a) specific group(s).
Details:
This library registers a custom accessor on pandas DataFrame and Series objects.
The methods of this extension are registered under the gc namespace.
See the DEMO notebook for details.
Care to show the syntax?
Sure! See the DEMO notebook for more details, but basically, you can do things like this:
(df.gc.groupby("nameOfColumn")
.resetIndex() # this is a special method baked in
.apply(lambda x: x * 5, lambda x: x + x.iloc[3]) # accepts multiple functions
.apply(mySpecialFunction, onlyGroups=['group1']) # limit the function to specific group(s)
.apply(lambda x: x - x.mean(), ignoreGroups=['group4', 'group6']) # limit the function to specific group(s)
.apply(lambda x: x.std(axis=1))
.concat(axis=0, multiIndex=None).plot()
)
Release files for gcGroupbyExtension-gcalmettes 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gcGroupbyExtension-gcalmettes-0.0.3.tar.gz | 5.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gcGroupbyExtension_gcalmettes-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.3 kB
Release files / gcGroupbyExtension-gcalmettes-0.0.3.tar.gz
| Download URL | gcGroupbyExtension-gcalmettes-0.0.3.tar.gz |
|---|---|
| Size | 5.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3fa55ea4dd1715859e4d8f1ce65dec856e205e6ed0f5c7d908a677a7c34bfd2a
|
|
BLAKE2b-256 checksum How to use checksums |
cfe3f14b24c4fdf727521fae4b9e2cfd53640f713643bee3d871793bcf74523b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.0
|
Release files / gcGroupbyExtension_gcalmettes-0.0.3-py3-none-any.whl
| Download URL | gcGroupbyExtension_gcalmettes-0.0.3-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f2791fa8acb118bfd3cb0df10369780d630a09b4d62144e83ff3b0ade19ec19f
|
|
BLAKE2b-256 checksum How to use checksums |
448f3bcb3da012970fe7495a188cc29543c88f232e0f91642681b17e016ba9b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.0
|