Skip to main content

Piper

Piper is a python module to simplify data wrangling with pandas.

Combined with a Jupyter notebook a 'magic' command (%%piper), provides an SQL like syntax - similar to R's tidyverse and magrittr libraries.

The main functions are:

  • select()
  • where()
  • group_by()
  • summarise()
  • order_by()

For other piper functionality, please see the Features section.

Alternatives

For a comprehensive alternative, please check out Michael Chow's siuba package.

Table of contents

Installation

To install the package, enter the following:

pip install dpiper

Basic use

Within a Jupyter notebook cell, add the function below to returned for a given dataframe trimmed column 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

In standard pandas, we can combine the new function in a pipeline, along with filtering the input data as follows:

import pandas as pd
from piper.factory import get_sample_data

df = get_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()

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

Using piper's %%piper magic command and using piper 'verbs'. Let's import the necessary functions:

from piper import piper
from piper.verbs import head, select, where, group_by, summarise, order_by

Using %%piper magic function, piper verbs can be 'piped' together along with standard functions like trim_columns() using the linking symbol '>>'

%%piper
get_sample_data()
>> trim_columns()
>> select('-regions')
>> where(""" ~countries.isin(['Italy', 'Portugal']) &
              values_1 > 40 &
              values_2 < 25 """)
>> order_by('countries', ascending=False)
>> head(5)

Features

  • Simplifies working with data pipelines by implementing a set of common wrapper functions.
  • Additional wrappers for exporting data to Excel files (using xlsxwriter)
  • Provide access to databases with support for SQL based scripting and connections.

To-do list:

  • TBD

Documentation

Further examples are available in these jupyter notebooks:

  • TBD
  • TBD
  • TBD
  • TBD

Status

Project has just started. I welcome any and all help to improve etc.

Inspiration

Pandas, numpy are amazing data analysis libraries. That said, I'm disappointed that I do not feel as productive in Python in terms of the ease of use of the R language and tidyverse suite of packages.

Contact

This is very much a personal library, in that its highly opinionated, flawed and probably of no use to anyone else :). However if it helps anyone else in their endeavours, that would be fantastic to hear about.

If you'd like to contact me, I'm miketarpey@gmx.net.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dpiper-0.0.4.tar.gz (50.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dpiper-0.0.4-py3-none-any.whl (56.9 kB view details)

Uploaded Python 3

File details

Details for the file dpiper-0.0.4.tar.gz.

File metadata

  • Download URL: dpiper-0.0.4.tar.gz
  • Upload date:
  • Size: 50.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.5

File hashes

Hashes for dpiper-0.0.4.tar.gz
Algorithm Hash digest
SHA256 b3d571121c1b43629e52b2609c263d64da38321025778a11f4efc21150584425
MD5 a1895f3f13fe68afa8f74e15e6bcf56c
BLAKE2b-256 adbb18bff57598d61c3954dd2eacf234c0e16b1b8043f4650eecbdbbc6d9e16d

See more details on using hashes here.

File details

Details for the file dpiper-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: dpiper-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 56.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.5

File hashes

Hashes for dpiper-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 682596eee4a12e5cd69220ccbebcb99d2eb58d02be6ace4b1491ebecec6399e4
MD5 8d2c40ac3a7d0ab027beb23c28753d58
BLAKE2b-256 ced67715cf34818e105b56a2ffb5f051bf4aadb91b52425809741e2669577604

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

This release

0.0.4 This release

2 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