django-pivot
django-pivot is a wrapper around numpy, pandas and django-pandas letting you easily manipulate pivot tables on your queryset.
Install
pip install django-pivot2
Modify your model(s) to use django_pandas.managers.DataFrameManager or django_pandas.managers.DataFrameQuerySet:
class LongTimeSeries(models.Model): date_ix = models.DateTimeField() series_name = models.CharField(max_length=100) value = models.FloatField() objects = DataFrameManager()
Usage
This app basicaly gives APIs to request a pivot table. Everything is not automatic and developer must always declare:
The possible values
The possible rows and columns
And for a end-user the API will ask
Values
Rows
Columns
Aggregation functions
Applied function
Format
As class-based view
A mixin is available to compose you own pivot. It has the following behavior: - Display a form to collect parameters of pivot table - Display pivot table as HTML if valid input is given - Download data as file with format given in form
Example:
from django_filters.views import FilterView
from django_pivot.views import PivotView
from myapp import models
class LongTimeSeriesPivotView(PivotView, FilterView):
template_name = "pivot.html
model = models.LongTimeSeries
values_choices = ['date_ix', 'value']
rows_choices = cols_choices = ['serie_name', 'date_ix', 'value']
PivotView is compatible with Django’s ListView, django-filters’ FilterView or any kind of view with the same behavior.
With graphene-django
Coming soon
With graphene-django-extras
Example of schema.py:
from graphene_django import DjangoObjectType
from django_pivot.contrib.graphene_django_extras import PivotField
from myapp import models
class LongTimeSeriesType(DjangoObjectType):
class Meta:
model = models.LongTimeSeries
class Query:
pivot_long_time_series = PivotField(
LongTimeSeriesType,
filterset_class=filtersets.LongTimeSeriesFilter,
values_choices=['date_ix', 'value'],
rows_choices=['serie_name', 'date_ix', 'value'],
cols_choices=['serie_name', 'date_ix', 'value'],
)
Example of request:
query {
pivot_long_time_series (values: ["value"], rows: ["serie_name"], cols: ["value"], aggfuncs: ["mean"])
}
As GraphQL is supposed to return JSON only and pandas JSON format is ..hum… weird, we convert pivot_table into CSV and after into a list of list, so fully compatible.
With Django REST Framework
Coming soon
Metadata
Release files for django-pivot2 0.2.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-pivot2-0.2.10.tar.gz | 17.6 kB | Without provenance | Details for django-pivot2-0.2.10.tar.gz |
Release files / django-pivot2-0.2.10.tar.gz
| Download URL | django-pivot2-0.2.10.tar.gz |
|---|---|
| Size | 17.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b4f2c4f8288c66007d241a0fa8cb69c592389a35570601c27239ccdb710b96dc
|
|
BLAKE2b-256 checksum How to use checksums |
353ba1f8f4a3a350e92bf0a67b197cb46428c4929dbd0e9d3eeac0df2c13d5b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.7.1
|
Security for django-pivot2 0.2.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.