Skip to main content

A Grammar of Data Manipulation in python

Project description

datar

A Grammar of Data Manipulation in python

Pypi Github Building Docs and API Codacy Codacy coverage

Documentation | Reference Maps | Notebook Examples | API

datar is a re-imagining of APIs for data manipulation in python with multiple backends supported. Those APIs are aligned with tidyrverse packages in R as much as possible.

Installation

pip install -U datar

# install with a backend
pip install -U datar[pandas]

# More backends support will be added in the future

Example usage

# with pandas backend
from datar import f
from datar.dplyr import mutate, filter, if_else
from datar.tibble import tibble
# or
# from datar.all import f, mutate, filter, if_else, tibble

df = tibble(
    x=range(4),  # or c[:4]  (from datar.base import c)
    y=['zero', 'one', 'two', 'three']
)
df >> mutate(z=f.x)
"""# output
        x        y       z
  <int64> <object> <int64>
0       0     zero       0
1       1      one       1
2       2      two       2
3       3    three       3
"""

df >> mutate(z=if_else(f.x>1, 1, 0))
"""# output:
        x        y       z
  <int64> <object> <int64>
0       0     zero       0
1       1      one       0
2       2      two       1
3       3    three       1
"""

df >> filter(f.x>1)
"""# output:
        x        y
  <int64> <object>
0       2      two
1       3    three
"""

df >> mutate(z=if_else(f.x>1, 1, 0)) >> filter(f.z==1)
"""# output:
        x        y       z
  <int64> <object> <int64>
0       2      two       1
1       3    three       1
"""
# works with plotnine
# example grabbed from https://github.com/has2k1/plydata
import numpy
from datar.base import sin, pi
from datar.tibble import tibble
from datar.dplyr import mutate, if_else
from plotnine import ggplot, aes, geom_line, theme_classic

df = tibble(x=numpy.linspace(0, 2 * pi, 500))
(
    df
    >> mutate(y=sin(f.x), sign=if_else(f.y >= 0, "positive", "negative"))
    >> ggplot(aes(x="x", y="y"))
    + theme_classic()
    + geom_line(aes(color="sign"), size=1.2)
)

example

# very easy to integrate with other libraries
# for example: klib
import klib
from pipda import register_verb
from datar import f
from datar.data import iris
from datar.dplyr import pull

dist_plot = register_verb(func=klib.dist_plot)
iris >> pull(f.Sepal_Length) >> dist_plot()

example

Project details


Download files

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

Source Distribution

datar-0.10.3rc0.tar.gz (10.1 MB view details)

Uploaded Source

Built Distribution

datar-0.10.3rc0-py3-none-any.whl (10.1 MB view details)

Uploaded Python 3

File details

Details for the file datar-0.10.3rc0.tar.gz.

File metadata

  • Download URL: datar-0.10.3rc0.tar.gz
  • Upload date:
  • Size: 10.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.9.5 Linux/5.15.79.1-microsoft-standard-WSL2

File hashes

Hashes for datar-0.10.3rc0.tar.gz
Algorithm Hash digest
SHA256 803e0fc09811263381b9dd03345cbdb573c5a5e184a898e8e84b50b9511f418b
MD5 b8b6e993ea943f91f8e661fbf7325fff
BLAKE2b-256 842e0e3c3b3b78cf03c1abb5c38404f14f139b417f65b76cf00b4bc300abc46d

See more details on using hashes here.

Provenance

File details

Details for the file datar-0.10.3rc0-py3-none-any.whl.

File metadata

  • Download URL: datar-0.10.3rc0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.9.5 Linux/5.15.79.1-microsoft-standard-WSL2

File hashes

Hashes for datar-0.10.3rc0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c2725e4e0c2da505b3f899f99ef3e1f1d5d32f1df22eab4a1610640ed5f1686
MD5 aea2a99570c57635b2611028206ab3d0
BLAKE2b-256 a449d55a5bbe03b15efc8f953af6f5ddcc7b3f0063d2ed7dcf1dbafc1f6028ba

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page