예제 #1
0
def test_FmtAppendTotalsRow_modify_dataframe():
    fmt = pbtf.FmtAppendTotalsRow()
    res = fmt._modify_dataframe(df)
    expected = pd.Series([9., 12., 15.],
                         name='Total',
                         index=[pbtf.INDEX_COL_NAME, 'aa', 'bb'])
    assert expected.equals(res.ix[-1])

    fmt = pbtf.FmtAppendTotalsRow(operator=pbtf.OP_MEAN)
    res = fmt._modify_dataframe(df)
    expected = pd.Series([3., 4., 5.],
                         name='Total',
                         index=[pbtf.INDEX_COL_NAME, 'aa', 'bb'])
    assert expected.equals(res.ix[-1])

    fmt = pbtf.FmtAppendTotalsRow(operator=pbtf.OP_NONE)
    res = fmt._modify_dataframe(df)
    expected = pd.Series(['', '', ''],
                         name='Total',
                         index=[pbtf.INDEX_COL_NAME, 'aa', 'bb'])
    assert expected.equals(res.ix[-1])

    fmt = pbtf.FmtAppendTotalsRow(row_name=TEST_STRING)
    res = fmt._modify_dataframe(df)
    expected = pd.Series([9., 12., 15.],
                         name=TEST_STRING,
                         index=[pbtf.INDEX_COL_NAME, 'aa', 'bb'])
    assert expected.equals(res.ix[-1])

    fmt = pbtf.FmtAppendTotalsRow(total_columns=['bb'])
    res = fmt._modify_dataframe(df)
    expected = pd.Series(['', '', 15.],
                         name='Total',
                         index=[pbtf.INDEX_COL_NAME, 'aa', 'bb'])
    assert expected.equals(res.ix[-1])
예제 #2
0
def test_FmtAppendTotalsRow_cell_css():
    row_name = TEST_STRING
    fmt = pbtf.FmtAppendTotalsRow(row_name=row_name)
    data = FormatterData(None, pbtf.HEADER_ROW_NAME, None, df)
    res = fmt._create_cell_level_css(data)
    assert res is None

    fmt = pbtf.FmtAppendTotalsRow(bold=True, row_name=row_name, background_color=colors.LIGHT_GREY,
                                  font_color=colors.LIGHT_GREY)
    data = FormatterData(None, row_name, None, df)
    res = fmt._create_cell_level_css(data)
    assert pbtf.CSS_BOLD in res
    assert pbtf.CSS_COLOR + colors.css_color(colors.LIGHT_GREY) in res
    assert pbtf.CSS_BACKGROUND_COLOR + colors.css_color(colors.LIGHT_GREY) in res
    assert 'border-top:' in res
    assert 'solid' in res

    fmt = pbtf.FmtAppendTotalsRow(row_name=row_name, bold=None, background_color=None, font_color=None,
                                  hline_color=colors.LIGHT_ORANGE, hline_style=TEST_STRING)
    data = FormatterData(None, row_name, None, df)
    res = fmt._create_cell_level_css(data)
    assert 'border-top: ' + TEST_STRING + ' ' + colors.css_color(colors.LIGHT_ORANGE)

    fmt = pbtf.FmtAppendTotalsRow(row_name=row_name, bold=None, background_color=None, font_color=None)
    data = FormatterData(None, 'a', None, df)
    res = fmt._create_cell_level_css(data)
    assert res is None
예제 #3
0
def test_FmtAppendTotalsColumn_cell_css():
    column_name = TEST_STRING
    fmt = pbtf.FmtAppendTotalsColumn(column_name=column_name)
    data = FormatterData(None, pbtf.HEADER_ROW_NAME, None, df)
    res = fmt._create_cell_level_css(data)
    assert res is None

    fmt = pbtf.FmtAppendTotalsColumn(bold=True,
                                     column_name=column_name,
                                     background_color=colors.LIGHT_GREY,
                                     font_color=colors.LIGHT_GREY)
    data = FormatterData(None, None, column_name, df)
    res = fmt._create_cell_level_css(data)
    assert pbtf.CSS_BOLD in res
    assert pbtf.CSS_COLOR + colors.css_color(colors.LIGHT_GREY) in res
    assert pbtf.CSS_BACKGROUND_COLOR + colors.css_color(
        colors.LIGHT_GREY) in res

    fmt = pbtf.FmtAppendTotalsRow(row_name=column_name,
                                  bold=None,
                                  background_color=None,
                                  font_color=None)
    data = FormatterData(None, 'a', None, df)
    res = fmt._create_cell_level_css(data)
    assert res is None
예제 #4
0
def test_df_to_jinja_table_add_extra_formatters():
    fmt_heatmap = blformat.FmtHeatmap(threshold=0., axis=0)
    fmt_add_totals_mean = blformat.FmtAppendTotalsRow(row_name='Sum', operator=blformat.OP_SUM, bold=True)
    fmt_fontsize_20 = blformat.FmtFontsize(fontsize=20)

    formatters = [fmt_fontsize_20, fmt_heatmap, fmt_add_totals_mean]
    return Block(FLAT_DATA, formatters=formatters, use_default_formatters=False)
예제 #5
0
def test_FmtAppendTotalsRow_mixed_datatypes():
    df = pd.util.testing.makeMixedDataFrame()
    fmt = pbtf.FmtAppendTotalsRow(total_columns=['A'])
    res = fmt._modify_dataframe(df)
    last_row_expected = pd.Series({
        'A': 10.,
        'B': '',
        'C': '',
        'D': ''
    },
                                  name="Total")
    pd.util.testing.assert_series_equal(res.iloc[-1], last_row_expected)
예제 #6
0
def test_formatters_with_operator_on_df_with_nans_replaces():
    df = pd.DataFrame(np.arange(8, dtype=float).reshape(2, 4), index=['a', 'b'], columns=['aa', 'bb', 'cc', 'dd'])
    df.iloc[0, 0] = np.nan
    fmt_nan_replace = tf.FmtReplaceNaN()
    fmt_sum_rows = tf.FmtAppendTotalsRow()
    fmt_sum_columns = tf.FmtAppendTotalsColumn()

    b_no_replace = Block(df, formatters=[fmt_sum_rows, fmt_sum_columns], use_default_formatters=False)

    b_replace = Block(df, formatters=[fmt_nan_replace, fmt_sum_rows, fmt_sum_columns],
                      use_default_formatters=False)

    assert_series_equal(b_replace.df.iloc[:, -1],  b_no_replace.df.iloc[:, -1], check_dtype=False)
    assert_series_equal(b_replace.df.iloc[-1, :],  b_no_replace.df.iloc[-1, :], check_dtype=False)