Skip to main content

fast rolling rank for numpy

Project description

rollingrank

rollingrank is a fast implementation of rolling rank transformation (described as the following code).

import pandas as pd

# x is numpy array
def rollingrank(x, window=None):
    def to_rank(x):
        # result[i] is the rank of x[i] in x
        return np.sum(np.less(x, x[-1]))
    return pd.Series(x).rolling(window).apply(to_rank).values

Motivation

Rolling rank is a good tool to create features for time series prediction. However, rolling rank was not easy to use in python. There were no exact methods to do it. The simple implementation using pandas and numpy is too slow.

Performance

Implementation Complexity
rollingrank O(n * log(w))
pandas rolling + numpy O(n * w)

n: input length w: rolling window size

Install

pip install rollingrank

Example

import numpy as np
import rollingrank

x = np.array([0.1, 0.2, 0.3, 0.25, 0.1, 0.2, 0.3])
y = rollingrank.rollingrank(x, window=3)
print(y)
# [nan nan  2.  1.  0.  1.  2.]

y = rollingrank.rollingrank(x, window=3, pct=True)
print(y)
# [nan nan 1.  0.5 0.  0.5 1. ]

rci

RCI is also implemented because fast implementation is not found.

https://docs.anychart.com/Stock_Charts/Technical_Indicators/Mathematical_Description#rank_correlation_index

Kaggle Example

https://www.kaggle.com/bakuage/rollingrank-example

Development

test

python -m unittest discover tests

build/upload

python setup.py sdist
twine upload --repository pypitest dist/*
twine upload --repository pypi dist/*

TODO

  • support axis

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

rollingrank-0.3.0.tar.gz (70.7 kB view details)

Uploaded Source

File details

Details for the file rollingrank-0.3.0.tar.gz.

File metadata

  • Download URL: rollingrank-0.3.0.tar.gz
  • Upload date:
  • Size: 70.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.7

File hashes

Hashes for rollingrank-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b5c610152768e0a95ea3aa41bde3af133327290be2e67e40003806c1157f47e0
MD5 9191526f55a666d75c7bb13fdda037ec
BLAKE2b-256 62bace28873050dfa0f764d75a867ab02f3c7e2bb4e7765ce92a58af2a003f98

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