Esempio n. 1
0
def test_rowmax():
    assert str(dt.rowmax(f.A)) == str(f.A.rowmax())
    assert str(dt.rowmax(f[:])) == str(f[:].rowmax())
    DT = dt.Frame({"C": [2, 5, 30, 20, 10],
                   "D": [10, 8, 20, 20, 1]})

    assert_equals(DT[:, f[:].rowmax()], DT[:, dt.rowmax(f[:])])
Esempio n. 2
0
def test_rowminmax_floats():
    import sys
    maxflt = sys.float_info.max
    DT = dt.Frame([(7.5, math.nan, 4.1), (math.nan, math.inf, None),
                   (math.inf, -math.inf, None), (maxflt, math.inf, -maxflt)])
    RES = DT[:, [rowmax(f[:]), rowmin(f[:])]]
    assert_equals(
        RES,
        dt.Frame([[7.5, math.inf, +math.inf, math.inf],
                  [4.1, math.inf, -math.inf, -maxflt]]))
Esempio n. 3
0
def test_reprs():
    # Check that row-expressions can be repr'd without errors
    assert repr(rowall())
    assert repr(rowany())
    assert repr(rowsum())
    assert repr(rowcount())
    assert repr(rowmin())
    assert repr(rowmax())
    assert repr(rowfirst())
    assert repr(rowlast())
    assert repr(rowmean())
    assert repr(rowsd())
Esempio n. 4
0
def test_rowminmax_almost_nas():
    DT = dt.Frame([[None], [None], [1], [None]], stype=dt.float64)
    RES = DT[:, [rowmax(f[:]), rowmin(f[:])]]
    assert_equals(RES, dt.Frame([[1.0], [1.0]]))
Esempio n. 5
0
def test_rowminmax_nas():
    DT = dt.Frame([[None]] * 3, stype=dt.int64)
    RES = DT[:, [rowmax(f[:]), rowmin(f[:])]]
    assert_equals(RES, dt.Frame([[None], [None]], stype=dt.int64))
Esempio n. 6
0
def test_rowminmax_int8():
    DT = dt.Frame([[4], [None], [1], [3]], stype=dt.int8)
    RES = DT[:, [rowmax(f[:]), rowmin(f[:])]]
    assert_equals(RES, dt.Frame([[4], [1]], stype=dt.int32))
Esempio n. 7
0
def test_rowminmax_simple():
    DT = dt.Frame([[3], [-6], [17], [0], [5.4]])
    RES = DT[:, [rowmax(f[:]), rowmin(f[:])]]
    assert_equals(RES, dt.Frame([[17.0], [-6.0]]))
Esempio n. 8
0
    # remove black listed columns or column groups that smaller than minimal size
    col_groups = {
        key: val
        for key, val in all_col_groups.items()
        if not key in black_listed_columns or len(val) >= min_col_group_size
    }

    # list of column prefixes
    columns = list(col_groups.keys())
    # list of column ranges
    ranges = [(min(idx), max(idx)) for idx in col_groups.values()]

# produce tuple for column slices
col_slices = [((col + "%d") % (desde), (col + "%d") % (hasta))
              for (col, (desde, hasta)) in zip(columns, ranges)]

for c, r, s in zip(columns, ranges, col_slices):
    update_map = {
        c + "_sum": rowsum(f[s[0]:s[1]]),
        c + "_mean": rowmean(f[s[0]:s[1]]),
        c + "_sd": rowsd(f[s[0]:s[1]]),
        c + "_max": rowmax(f[s[0]:s[1]]),
        c + "_min": rowmin(f[s[0]:s[1]]),
        c + "_range": rowmax(f[s[0]:s[1]]) - rowmin(f[s[0]:s[1]]),
        c + "_first": rowfirst(f[s[0]:s[1]]),
        c + "_last": rowlast(f[s[0]:s[1]]),
        c + "_missing": (r[1] - r[0] + 1) - rowcount(f[s[0]:s[1]])
    }
    X[:, update(**update_map)]

return {"CreditCard-train-aug.csv": X}
    def create_data(
        X: dt.Frame = None
    ) -> Union[str, List[str], dt.Frame, List[dt.Frame], np.ndarray,
               List[np.ndarray], pd.DataFrame, List[pd.DataFrame], Dict[
                   str, str],  # {data set names : paths}
               Dict[str, dt.Frame],  # {data set names : dt frames}
               Dict[str, np.ndarray],  # {data set names : np arrays}
               Dict[str, pd.DataFrame],  # {data set names : pd frames}
               ]:
        if X is None:
            return []

        columns = None  # columns = ["PAY_AMT", "BILL_AMT", "PAY_"]
        ranges = None  # [(1, 6), (1, 6), (2, 6)]
        black_listed_columns = []
        min_col_group_size = 2

        # parse column names for time series column groups
        if columns is None or columns == [] or \
                ranges is None or ranges == []:
            # match any column names that consist of alpha name (prefix) followed by integer index (suffix)
            p = re.compile(r"^([a-zA-Z_]+)(\d+)$")
            matches = [p.match(c) for c in X.names]
            all_col_groups = defaultdict(list)
            for m in matches:
                if m is not None:
                    key = m.group(1)
                    val = int(m.group(2))
                    all_col_groups[key].append(val)

            # remove black listed columns or column groups that smaller than minimal size
            col_groups = {
                key: val
                for key, val in all_col_groups.items()
                if not key in black_listed_columns
                or len(val) >= min_col_group_size
            }

            # list of column prefixes
            columns = list(col_groups.keys())
            # list of column ranges
            ranges = [(min(idx), max(idx)) for idx in col_groups.values()]

        col_slices = [((col + "%d") % (desde), (col + "%d") % (hasta))
                      for (col, (desde, hasta)) in zip(columns, ranges)]

        for c, r, s in zip(columns, ranges, col_slices):
            update_map = {
                c + "_sum": rowsum(f[s[0]:s[1]]),
                c + "_mean": rowmean(f[s[0]:s[1]]),
                c + "_sd": rowsd(f[s[0]:s[1]]),
                c + "_max": rowmax(f[s[0]:s[1]]),
                c + "_min": rowmin(f[s[0]:s[1]]),
                c + "_range": rowmax(f[s[0]:s[1]]) - rowmin(f[s[0]:s[1]]),
                c + "_first": rowfirst(f[s[0]:s[1]]),
                c + "_last": rowlast(f[s[0]:s[1]]),
                c + "_missing": (r[1] - r[0] + 1) - rowcount(f[s[0]:s[1]])
            }
            X[:, update(**update_map)]

        return X
def agregar_variables_nuevas(dataset: Frame) -> Frame:
    dataset['tarjetas_status01'] = dataset[:,
                                           dt.rowmax([
                                               f.Master_status, f.Visa_status
                                           ])]  # 3
    dataset['tarjetas_status02'] = dataset[:,
                                           dt.rowmin([
                                               f.Master_status, f.Visa_status
                                           ])]  # 2
    dataset['tarjetas_fultimo_cierre01'] = dataset[:,
                                                   dt.rowmax([
                                                       f.Master_fultimo_cierre,
                                                       f.Visa_fultimo_cierre
                                                   ])]  # 479
    dataset['tarjetas_fultimo_cierre02'] = dataset[:,
                                                   dt.rowmin([
                                                       f.Master_fultimo_cierre,
                                                       f.Visa_fultimo_cierre
                                                   ])]  # 421
    dataset['tarjetas_Finiciomora'] = dataset[:,
                                              dt.rowmin([
                                                  f.Master_Finiciomora,
                                                  f.Visa_Finiciomora
                                              ])]  # 12
    dataset['tarjetas_Fvencimiento'] = dataset[:,
                                               dt.rowmin([
                                                   f.Master_Fvencimiento,
                                                   f.Visa_Fvencimiento
                                               ])]  # 359
    dataset['tarjetas_delinquency'] = dataset[:,
                                              dt.rowmax([
                                                  f.Master_delinquency,
                                                  f.Visa_delinquency
                                              ])]  # 18
    dataset[
        'tarjetas_mfinanciacion_limite'] = dataset[:,
                                                   dt.rowsum([
                                                       f.
                                                       Master_mfinanciacion_limite,
                                                       f.
                                                       Visa_mfinanciacion_limite
                                                   ])]  # 230
    dataset['tarjetas_msaldototal'] = dataset[:, f.Master_msaldototal +
                                              f.Visa_msaldototal]  # 57
    dataset['tarjetas_msaldopesos'] = dataset[:, f.Master_msaldopesos +
                                              f.Visa_msaldopesos]  # 46
    dataset[
        'tarjetas_msaldodolares'] = dataset[:, f.Master_msaldodolares + f.
                                            Visa_msaldodolares]  # 1142 pero una derivada 104
    dataset['tarjetas_mconsumospesos'] = dataset[:, f.Master_mconsumospesos +
                                                 f.Visa_mconsumospesos]  # 400
    dataset[
        'tarjetas_mconsumosdolares'] = dataset[:,
                                               f.Master_mconsumosdolares + f.
                                               Visa_mconsumosdolares]  # 891 pero con derivadas 352
    dataset[
        'tarjetas_mlimitecompra'] = dataset[:, f.Master_mlimitecompra + f.
                                            Visa_mlimitecompra]  # 186 pero con derivadas 26
    dataset[
        'tarjetas_madelantopesos'] = dataset[:, f.Master_madelantopesos + f.
                                             Visa_madelantopesos]  # 666 pero derivadas 26
    dataset[
        'tarjetas_madelantodolares'] = dataset[:,
                                               f.Master_madelantodolares + f.
                                               Visa_madelantodolares]  # 294 y derivadas 33
    dataset['tarjetas_fultimo_cierre'] = dataset[:,
                                                 dt.rowmax([
                                                     f.Master_fultimo_cierre,
                                                     f.Visa_fultimo_cierre
                                                 ])]  # 448
    dataset['tarjetas_mpagado'] = dataset[:, f.Master_mpagado +
                                          f.Visa_mpagado]  # 384 y derivadas 29
    dataset['tarjetas_mpagospesos'] = dataset[:, f.Master_mpagospesos +
                                              f.Visa_mpagospesos]  # 28
    dataset[
        'tarjetas_mpagosdolares'] = dataset[:, f.Master_mpagosdolares + f.
                                            Visa_mpagosdolares]  # 1017 y derivadas 255
    dataset['tarjetas_fechaalta'] = dataset[:,
                                            dt.rowmax([
                                                f.Master_fechaalta,
                                                f.Visa_fechaalta
                                            ])]  # 159
    dataset[
        'tarjetas_mconsumototal'] = dataset[:, f.Master_mconsumototal + f.
                                            Visa_mconsumototal]  # 512 y derivadas 365
    dataset['tarjetas_cconsumos'] = dataset[:, f.Master_cconsumos +
                                            f.Visa_cconsumos]  # 424
    dataset[
        'tarjetas_cadelantosefectivo'] = dataset[:,
                                                 f.Master_cadelantosefectivo +
                                                 f.
                                                 Visa_cadelantosefectivo]  # 750
    dataset['tarjetas_mpagominimo'] = dataset[:, f.Master_mpagominimo +
                                              f.Visa_mpagominimo]  # 98
    dataset[
        'ratio_tarjetas_msaldodolares__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                          tarjetas_msaldodolares
                                                                          / f.
                                                                          tarjetas_mlimitecompra]  # 104
    dataset[
        'ratio_tarjetas_msaldodolares__tarjetas_msaldototal'] = dataset[:, f.
                                                                        tarjetas_msaldodolares
                                                                        / f.
                                                                        tarjetas_msaldototal]  # 611
    dataset[
        'ratio_tarjetas_mconsumospesos__tarjetas_mlimitecompra'] = dataset[:,
                                                                           f.
                                                                           tarjetas_mconsumospesos
                                                                           / f.
                                                                           tarjetas_mlimitecompra]  # 244
    dataset[
        'ratio_tarjetas_madelantopesos__tarjetas_mlimitecompra'] = dataset[:,
                                                                           f.
                                                                           tarjetas_madelantopesos
                                                                           / f.
                                                                           tarjetas_mlimitecompra]  # 26
    dataset[
        'ratio_tarjetas_madelantodolares__tarjetas_mlimitecompra'] = dataset[:,
                                                                             f.
                                                                             tarjetas_madelantodolares
                                                                             /
                                                                             f.
                                                                             tarjetas_mlimitecompra]  # 33
    dataset[
        'ratio_tarjetas_mpagospesos__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                        tarjetas_mpagospesos
                                                                        / f.
                                                                        tarjetas_mlimitecompra]  # 38
    dataset[
        'ratio_tarjetas_mpagominimo__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                        tarjetas_mpagominimo
                                                                        / f.
                                                                        tarjetas_mlimitecompra]  # 100
    dataset[
        'ratio_tarjetas_mpagado__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                    tarjetas_mpagado
                                                                    / f.
                                                                    tarjetas_mlimitecompra]  # 29
    dataset[
        'ratio_tarjetas_mpagosdolares__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                          tarjetas_mpagosdolares
                                                                          / f.
                                                                          tarjetas_mlimitecompra]  # 255
    dataset[
        'ratio_tarjetas_mconsumototal__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                          tarjetas_mconsumototal
                                                                          / f.
                                                                          tarjetas_mlimitecompra]  # 365
    dataset[
        'ratio_tarjetas_mconsumosdolares__tarjetas_mlimitecompra'] = dataset[:,
                                                                             f.
                                                                             tarjetas_mconsumosdolares
                                                                             /
                                                                             f.
                                                                             tarjetas_mlimitecompra]  # 352
    dataset[
        'ratio_tarjetas_msaldopesos__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                        tarjetas_msaldopesos
                                                                        / f.
                                                                        tarjetas_mlimitecompra]  # 270
    dataset[
        'ratio_tarjetas_msaldopesos__tarjetas_msaldototal'] = dataset[:, f.
                                                                      tarjetas_msaldopesos
                                                                      / f.
                                                                      tarjetas_msaldototal]  # 414
    dataset[
        'ratio_Master_mlimitecompra__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                        Master_mlimitecompra
                                                                        / f.
                                                                        tarjetas_mlimitecompra]  # 367
    dataset[
        'ratio_Visa_mlimitecompra__tarjetas_mlimitecompra'] = dataset[:, f.
                                                                      Visa_mlimitecompra
                                                                      / f.
                                                                      tarjetas_mlimitecompra]  # 192

    # v2
    dataset['ctarjetas_credito'] = dataset[:, f.ctarjeta_master +
                                           f.ctarjeta_visa]  # 27
    dataset['ctarjetas'] = dataset[:, f.ctarjetas_credito +
                                   f.ctarjeta_debito]  # 623
    dataset[
        'ratio_mprestamos_personales__cprestamos_personales'] = dataset[:, f.
                                                                        mprestamos_personales
                                                                        / f.
                                                                        cprestamos_personales]  # 127
    dataset['cextracciones'] = dataset[:, f.cextraccion_autoservicio +
                                       f.ccajas_extracciones]  # 157
    dataset[
        'ratio_mextraccion_autoservicio__mcuentas_saldo'] = dataset[:, f.
                                                                    mextraccion_autoservicio
                                                                    / f.
                                                                    mcuentas_saldo]  # 565
    dataset['ccomisiones'] = dataset[:, f.ccomisiones_mantenimiento +
                                     f.ccomisiones_otras]  # 578
    dataset['ratio_mcomisiones__ccomisiones'] = dataset[:, f.mcomisiones /
                                                        f.ccomisiones]  # 508
    dataset['ctransacciones'] = dataset[:, f.ccallcenter_transacciones +
                                        f.chomebanking_transacciones +
                                        f.ccajas_transacciones]  # 485
    dataset['ratio_ctransacciones__cproductos'] = dataset[:, f.ctransacciones /
                                                          f.cproductos]  # 472

    # v3
    dataset['mpayroll_total'] = dataset[:, f.mpayroll + f.mpayroll2]  # 68
    dataset['ratio_mpayroll_total__cliente_edad'] = dataset[:,
                                                            f.mpayroll_total /
                                                            f.
                                                            cliente_edad]  # 87
    dataset['ratio_mcaja_ahorro__cliente_edad'] = dataset[:, f.mcaja_ahorro /
                                                          f.cliente_edad]  # 23
    dataset[
        'ratio_mcuentas_saldo__cliente_edad'] = dataset[:, f.mcuentas_saldo /
                                                        f.cliente_edad]  # 102
    dataset['cseguros_total'] = dataset[:, f.cseguro_vida + f.cseguro_auto +
                                        f.cseguro_vivienda +
                                        f.cseguro_accidentes_personales]  # 454
    dataset[
        'ratio_cseguros_total__cliente_antiguedad'] = dataset[:,
                                                              f.cseguros_total
                                                              / f.
                                                              cliente_antiguedad]  # 628

    # v7
    dataset['tarjetas_mconsumo_mes'] = dataset[:, f.mtarjeta_visa_consumo +
                                               f.mtarjeta_master_consumo]  # 45
    dataset['tarjetas_mconsumototal'] = dataset[:, f.Master_mconsumototal +
                                                f.Visa_mconsumototal]  # 419
    dataset[
        'ratio_tarjetas_consumo_mes__cliente_edad'] = dataset[:, f.
                                                              tarjetas_mconsumo_mes
                                                              / f.
                                                              cliente_edad]  # 51
    dataset['score_04'] = dataset[:, (f.ctarjetas_credito *
                                      f.tarjetas_delinquency) /
                                  f.cliente_edad]  # 695
    dataset['score_04_relativo'] = dataset[:, f.score_04 /
                                           mean(f.score_04)]  # 267

    # Resultaron no ser importantes

    # v1
    # dataset['ratio_tarjetas_msaldototal__tarjetas_mlimitecompra'] = dataset[:, f.tarjetas_mlimitecompra / f.tarjetas_mlimitecompra] # 2544

    # v2
    # dataset['ratio_mrentabilidad__cproductos'] = dataset[:, f.mrentabilidad / f.cproductos] # 911
    # dataset['dif_tarjetas_mconsumototal__tarjetas_mpagado'] = dataset[:, f.tarjetas_mconsumototal - f.tarjetas_mpagado] # 1277
    # dataset['ratio_mrentabilidad__mcomisiones'] = dataset[:, f.mrentabilidad / f.mcomisiones] # 1100

    # v3
    # dataset['ratio_mrentabilidad__mcuentas_saldo'] = dataset[:, f.mrentabilidad / f.mcuentas_saldo] # 2042
    # dataset['ratio_mrentabilidad__cliente_antiguedad'] = dataset[:, f.mrentabilidad / f.cliente_antiguedad] # 1854
    # dataset['ratio_mrentabilidad__cliente_edad'] = dataset[:, f.mrentabilidad / f.cliente_edad] # 1811
    # dataset['ratio_cliente_antiguedad__cliente_edad'] = dataset[:, f.cliente_antiguedad / f.cliente_edad] # 1719

    # v7
    # dataset['score_01_relativo'] = dataset[:, f.score_01 / mean(f.score_01)] # no aparece
    # dataset['score_02_relativo'] = dataset[:, f.score_02 / mean(f.score_02)] # 2507
    # dataset['score_03_relativo'] = dataset[:, f.score_03 / mean(f.score_03)] # 2454
    # dataset['ratio_tarjetas_mconsumototal__cliente_edad'] = dataset[:, f.tarjetas_mconsumototal / f.cliente_edad] # 2459
    # dataset['ratio_Visa_mconsumospesos__cliente_edad'] = dataset[:, f.Visa_mconsumospesos / f.cliente_edad] # 2485
    # dataset['ratio_Visa_mconsumosdolares__cliente_edad'] = dataset[:, f.Visa_mconsumosdolares / f.cliente_edad] # 2486
    # dataset['ratio_Visa_mconsumototal__cliente_edad'] = dataset[:, f.Visa_mconsumototal / f.cliente_edad] # 2429
    # dataset['ratio_Master_mconsumospesos__cliente_edad'] = dataset[:, f.Master_mconsumospesos / f.cliente_edad] # 2501
    # dataset['ratio_Master_mconsumosdolares__cliente_edad'] = dataset[:, f.Master_mconsumosdolares / f.cliente_edad] # 2345
    # dataset['ratio_Master_mconsumototal__cliente_edad'] = dataset[:, f.Master_mconsumototal / f.cliente_edad] # 2493
    # dataset['ratio_ctransacciones__cliente_edad'] = dataset[:, f.ctransacciones / f.cliente_edad] # 2508
    # dataset['score_01'] = dataset[:, (f.ctarjetas * f.mrentabilidad) / f.ctrx_quarter] # 2575
    # dataset['score_02'] = dataset[:, (f.ctarjetas * f.ctransacciones) / f.ctrx_quarter] # 2507
    # dataset['score_03'] = dataset[:, (f.ctarjetas * f.ctransacciones) / f.cliente_edad] # 2498

    return dataset