Metadata-Version: 2.1
Name: panelexpr
Version: 0.1.0
Summary: A panel data evaluator.
Home-page: https://github.com/actcwlf/panelexpr
Author: actcwlf
Author-email: actcwlf@qq.com
License: MIT
Description: # panelexpr
        A simple panel data evaluator
        ## Installation
        
        ```bash
        $ pip install panelexpr
        ```
        
        
        ## Usage
        ### Sample Data
        
        sample_zh_2.csv:
        
        | Date     | windcode  | Open        | High        | Low         | Close       | Volume    |
        |  ----     | ----  | ----       | ----      | ----         | ----     | ----    |
        | 20170913 | 000001.SZ | 1221.488009 | 1226.803448 | 1205.54169  | 1215.109481 | 668237.42 | 
        | 20170914 | 000001.SZ | 1215.109481 | 1232.118888 | 1194.910811 | 1203.415514 | 883087.77 |
        | 20170915 | 000001.SZ | 1200.22625  | 1203.415514 | 1185.34302  | 1200.22625  | 646094.81 |
        | 20170918 | 000001.SZ | 1195.973899 | 1203.415514 | 1190.658459 | 1195.973899 | 607612.96 |
        | 20170919 | 000001.SZ | 1195.973899 | 1205.54169  | 1177.901404 | 1183.216844 | 764212.62 |
        | 20170913 | 000002.SZ | 3473.691392 | 3576.666433 | 3431.128374 | 3536.849417 | 467463.77 |
        | 20170914 | 000002.SZ | 3539.595418 | 3852.639543 | 3508.016405 | 3783.989516 | 1150696.14|
        | 20170915 | 000002.SZ | 3775.751513 | 4149.207662 | 3771.632511 | 4022.891612 | 1550495.61|
        | 20170918 | 000002.SZ | 3983.074596 | 4083.303636 | 3843.028539 | 3849.893542 | 1063043.07|
        | 20170919 | 000002.SZ | 3881.472555 | 4132.731656 | 3858.131546 | 3950.122582 | 1196308.5 |
        
        
        load data
        ```python
        import pandas as pd
        data = pd.read_csv("../data/sample_zh_2.csv")
        ```
        
        ### Calculation
        
        ```python
        import panelexpr as pe
        pe.eval("ma(Open, 2)", data=data, group_tag="windcode")
        ```
        ```python
        # equivalent to
        data.groupby("windcode").rolling(2).mean()["Open"].reset_index(drop=True).rename()
        ```
        
        Output:
        ```
        0            NaN
        1    1218.298745
        2    1207.667866
        3    1198.100075
        4    1195.973899
        5            NaN
        6    3506.643405
        7    3657.673466
        8    3879.413054
        9    3932.273575
        dtype: float64
        ```
        ### User defined operator
        ```python
        from panelexpr import TimeSeriesOperator
        
        class MyMovingAverageOperator(TimeSeriesOperator):
            def eval(self, series: pd.Series, window) -> pd.Series: # all udo must implement this method
                s = series.rolling(window).mean()
                return s
                
        pe.register("my_ma", MyMovingAverageOperator) # register the operator
        pe.eval("my_ma(Open, 2)", data=data, group_tag="windcode")
        ```
        
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
