GithubHelp home page GithubHelp logo

trendingtechnology / staircase Goto Github PK

View Code? Open in Web Editor NEW

This project forked from staircase-dev/staircase

0.0 0.0 0.0 3.24 MB

A powerful data analysis package based on mathematical step functions. Strongly aligned with pandas.

Home Page: https://staircase.dev

License: MIT License

Python 100.00%

staircase's Introduction

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.clip(0,1440).integral()
9297.94622521079

We can find the average number of viewers:

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

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

>>> views.slice(pd.interval_range(0, periods=24, freq=60)).mean().plot()

mean page views per hour

We can find the maximum concurrent views:

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

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

>>> views.clip(0,1440).hist().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 staircase.dev

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

The seeds of staircase began developing at the Hunter Valley Coal Chain Coordinator, where it finds strong application in analysing simulated data. Thanks for the support!

staircase's People

Contributors

dependabot[bot] avatar venaturum avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.