Skip to main content

Facilitating the modelling, manipulation and analysis of data with (mathematical) step functions

Project description

staircase logo

The leading use-case for the staircase package is for the creation and analysis of step functions.

Pretty exciting huh.

But don't hit the close button on the browser just yet. Let us convince you that much of the world around you can be modelled as step functions.

For example, the number of users viewing this page over time can be modelled as a step function. The value of the function increases by 1 every time a user arrives at the page, and decreases by 1 every time a user leaves the page. Let's say we have this data in vector format (i.e. tuple, list, numpy array, pandas series). Specifically, assume arrive and leave are vectors of times, expressed as minutes past midnight, for all page views occuring yesterday. Creating the corresponding step function is simple. To achieve it we use the Stairs class:

>>> import staircase as sc

>>> views = sc.Stairs()
>>> views.layer(arrive,leave)

We can visualise the function with the plot function:

>>> views.plot()

pageviews example

We can find the total time in minutes the page was viewed:

>>> views.integrate(0,1440)
9297.94622521079

We can find the average number of viewers:

>>> views.mean(0,1440)
6.4569071008408265

We can find the average number of viewers, per hour of the day, and plot:

>>> pd.Series([views.mean(60*i, 60*(i+1)) for i in range(24)]).plot()

mean page views per hour

We can find the maximum concurrent views:

>>> views.max(0,1440)
16

We can create histogram data showing relative frequency of concurrent viewers (and plot it):

>>> views.hist(0,1440).plot.bar()

concurrent viewers histogram

Plotting is based on matplotlib and it requires relatively little effort to take the previous chart and improve the aesthetics:

concurrent viewers histogram (aesthetic)

There is plenty more analysis that could be done. The staircase package provides a rich variety of arithmetic operations, relational operations, logical operations, statistical operations, for use with Stairs, in addition to functions for univariate analysis, aggregations and compatibility with pandas.Timestamp.

Installation

Staircase can be installed from PyPI:

python -m pip install staircase

or also with conda:

conda install -c conda-forge staircase

Documentation

The complete guide to using staircase can be found at Read the Docs

Need help?

Post your question on Stack Overflow and use the tag staircase.

Contributing

There are many ways in which contributions can be made - the first and foremost being using staircase and giving feedback.

Bug reports, feature requests and ideas can be submitted via the Github issue tracker.

Additionally, bug fixes. enhancements, and improvements to the code and documentation are also appreciated and can be done via pull requests. Take a look at the current issues and if there is one you would like to work on please leave a comment to that effect.

See this beginner's guide to contributing, or Pandas' guide to contributing, to learn more about the process.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgments

  • This project is heavily reliant on sorted containers. Grant Jenks has done a great job bringing this functionality to Python at lightning fast speeds.
  • staircase began development from within the Hunter Valley Coal Chain Coordinator. Thanks for the support!

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

staircase-1.6.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

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

staircase-1.6.0-py3-none-any.whl (53.1 kB view details)

Uploaded Python 3

File details

Details for the file staircase-1.6.0.tar.gz.

File metadata

  • Download URL: staircase-1.6.0.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for staircase-1.6.0.tar.gz
Algorithm Hash digest
SHA256 65652ee6f934c93a65f7f9b4d451bda777bf183f537047f260b6cc067346b025
MD5 31db70fd7d7d4d018f8e69f4f297f9fc
BLAKE2b-256 c1453e807d83f635a9444d16923fbd5f09e450538574d6caf75e7372a85a7668

See more details on using hashes here.

File details

Details for the file staircase-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: staircase-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 53.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for staircase-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3e418dee8b781a1b5ad9891b0e80811105706b09633aedbcf6b44349a0060e6e
MD5 5106ae636d0cc4e1400cf7aa671209e6
BLAKE2b-256 64fae272e04a2c92569ff288223a614fc3d79f6a9d0a1156fe3c307e4631eba9

See more details on using hashes here.

Supported by

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