Skip to main content

PyPI version shields.io PyPI version shields.io PyPI version shields.io

Piper

Piper is a python package to help simplify data wrangling tasks with pandas. It provides a set of wrapper functions or 'verbs' that provide a simpler interface to standard Pandas functions.

Piper functions accept and receive pandas dataframe objects. They can be used as standalone functions but are more powerful when used together in a Jupyter notebook cell to form a data pipeline.

Instead of the traditional the 'dot notation' or method calling technique from within an object, piper receives and passes on the dataframe object between functions using the piper magic command link operator (that is '>>') within a cell. So, in traditional pandas, to see the first 5 rows of a dataframe:

df.head()

The equivalent in piper would be:

%%piper
df >> head()

Installation

To install the package, enter the following:

pip install dpiper

Documentation

Piper API documentation available at readthedocs

Quick start

Example #1

A dataframe consisting of two columns A and B.

import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame({'A': np.random.randint(10, 1000, 10),
                   'B': np.random.randint(10, 1000, 10)})
df.head()
A B
0 112 476
1 445 224
2 870 340
3 280 468
4 116 97

Piper equivalent

from piper.defaults import *
%%piper
df >> assign(C = lambda x: x.A + x.B,
             D = lambda x: x.C < 1000)
   >> where("~D")
A B C D
2 870 340 1210 False
8 624 673 1297 False

Example #2

Suppose you need the following function to trim columnar text data.

def trim_columns(df):
    ''' Trim blanks for given dataframe '''

    str_cols = df.select_dtypes(include='object').columns

    for col in str_cols:
        df[col] = df[col].str.strip()

    return df

import pandas as pd
from piper.factory import sample_data

df = sample_data()

# Select all columns EXCEPT 'dates'
subset_cols = ['order_dates', 'regions', 'countries', 'values_1', 'values_2']

criteria1 = ~df['countries'].isin(['Italy', 'Portugal'])
criteria2 = df['values_1'] > 40
criteria3 = df['values_2'] < 25

df2 = (df[subset_cols][criteria1 & criteria2 & criteria3]
       .pipe(trim_columns)
       .sort_values('countries', ascending=False))
df2.head()

Piper equivalent

Using the %%piper magic function, piper verbs can be combined with standard python functions.

from piper.defaults import *
%%piper
sample_data()
>> trim_columns()
>> select('-dates')
>> where(""" ~countries.isin(['Italy', 'Portugal']) &
              values_1 > 40 &
              values_2 < 25 """)
>> order_by('-countries')
>> head(5)

Result:

dates order_dates countries ids values_1 values_2
2020-03-03 2020-03-09 Sweden E 194 20
2020-05-02 2020-05-08 Sweden D 322 14
2020-01-20 2020-01-26 Spain A 183 20
2020-02-01 2020-02-07 Norway D 344 21
2020-05-06 2020-05-12 Norway B 135 21

Release files for dpiper 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dpiper 0.1.2
File Size Uploaded
dpiper-0.1.2.tar.gz 82.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dpiper 0.1.2
File Interpreter ABI Platform
dpiper-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 173.6 kB

Release files / dpiper-0.1.2.tar.gz

Download URL dpiper-0.1.2.tar.gz
Size 82.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1b4526e42289006c6c8d5c2cbff2c17be830aed0c9aef252d3e9827e5ab86eaa
BLAKE2b-256 checksum
How to use checksums
e240a14afdb8f926a212c78e540a8c4b35fd21aecbde663faf75617cd2d8452f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.5

Release files / dpiper-0.1.2-py3-none-any.whl

Download URL dpiper-0.1.2-py3-none-any.whl
Size 91.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2db1f6dd8b716c1d76aeede0e2dfb66d6b99e46f3c848f00fa5d7c38bce2794
BLAKE2b-256 checksum
How to use checksums
682291851f88b5b39622254d9d7eeafffbc3a47ecca994ebf2f9d81b56b17373
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.5

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page