def to_quantile(df, n_quantiles=5, axis=1): """ Convert cross-section values to the quantile number they belong. Small values get small quantile numbers. Parameters ---------- df : DataFrame index date, column symbols n_quantiles : int The number of quantile to be divided to. axis : int Axis to apply quantilize. Returns ------- res : DataFrame index date, column symbols """ # TODO: unnecesssary warnings # import warnings # warnings.filterwarnings(action='ignore', category=RuntimeWarning, module='py_exp') res_arr = numeric.quantilize_without_nan(df.values, n_quantiles=n_quantiles, axis=axis) res = pd.DataFrame(index=df.index, columns=df.columns, data=res_arr) return res
def ts_quantile(self, df, window=3, n_quantiles=5): roll = df.rolling(window=window) func = lambda arr: numeric.quantilize_without_nan( arr, n_quantiles=n_quantiles, axis=0)[-1] res = roll.apply(func) return res
def to_quantile(self, df, n_quantiles=5, axis=1, mask=None): """ Convert cross-section values to the quantile number they belong. Small values get small quantile numbers. Parameters ---------- df : DataFrame index date, column symbols n_quantiles : int The number of quantile to be divided to. axis : int Axis to apply quantilize. Returns ------- res : DataFrame index date, column symbols """ df = self._align_univariate(df) df = self._mask_non_index_member(df) df = self._mask_df(df, mask) # TODO: unnecesssary warnings # import warnings # warnings.filterwarnings(action='ignore', category=RuntimeWarning, module='py_exp') res_arr = numeric.quantilize_without_nan(df.values, n_quantiles=n_quantiles, axis=axis) res = pd.DataFrame(index=df.index, columns=df.columns, data=res_arr) return res
def cond_quantile(self, df, cond, n_quantiles): cond = cond.fillna(0.0).astype(bool) df, cond = self._align_bivariate(df, cond) df = self._mask_non_index_member(df) res_arr = numeric.quantilize_without_nan(df[cond].values, n_quantiles=n_quantiles, axis=1) res = pd.DataFrame(index=df.index, columns=df.columns, data=res_arr) return res
def ts_quantile(self, df, window=3, n_quantiles=5): roll = df.rolling(window=window) func = lambda arr: numeric.quantilize_without_nan(arr, n_quantiles=n_quantiles, axis=0)[-1] res = roll.apply(func) return res