Back to Documentations

Signature Description Parameters
template<comparable T, typename ... Ts>
DataFrame<I, H>
get_n_largest_data(const char *col_name,
                   size_type n,
                   bool abs_value = false) const;
This returns a new DataFrame corresponding to n largest values in the named column. The returned DataFrame is sorted in descending order of named column.
The self is unchanged.

NOTE Comparison operators (<, >, ==) must be well defined for type T.
T: Type of the named column
Ts: List all the types of all data columns. A type should be specified in the list only once.
col_name: The name of a column or DF_INDEX_COL_NAME
n: Number of largest values
abs_value: If this is true, absolute values are considered
template<comparable T, typename ... Ts>
PtrView
get_n_largest_view(const char *col_name,
                   size_type n,
                   bool abs_value = false);
Same as above get_n_largest_data but it returns a View
T: Type of the named column
Ts: List all the types of all data columns. A type should be specified in the list only once.
col_name: The name of a column or DF_INDEX_COL_NAME
n: Number of largest values
abs_value: If this is true, absolute values are considered
template<comparable T, typename ... Ts>
ConstPtrView
get_n_largest_view(const char *col_name,
                   size_type n,
                   bool abs_value = false) const;
Same as above get_n_largest_view but it returns a const View
T: Type of the named column
Ts: List all the types of all data columns. A type should be specified in the list only once.
col_name: The name of a column or DF_INDEX_COL_NAME
n: Number of largest values
abs_value: If this is true, absolute values are considered
template<comparable T, typename ... Ts>
DataFrame<I, H>
get_n_smallest_data(const char *col_name,
                    size_type n,
                    bool abs_value = false) const;
This returns a new DataFrame corresponding to n smallest values in the named column. The returned DataFrame is sorted in ascending order of named column.
The self is unchanged.

NOTE Comparison operators (<, >, ==) must be well defined for type T.
T: Type of the named column
Ts: List all the types of all data columns. A type should be specified in the list only once.
col_name: The name of a column or DF_INDEX_COL_NAME
n: Number of smallest values
abs_value: If this is true, absolute values are considered
template<comparable T, typename ... Ts>
PtrView
get_n_smallest_view(const char *col_name,
                    size_type n,
                    bool abs_value = false);
Same as above get_n_smallest_data but it returns a View
T: Type of the named column
Ts: List all the types of all data columns. A type should be specified in the list only once.
col_name: The name of a column or DF_INDEX_COL_NAME
n: Number of smallest values
abs_value: If this is true, absolute values are considered
template<comparable T, typename ... Ts>
ConstPtrView
get_n_smallest_view(const char *col_name,
                    size_type n,
                    bool abs_value = false) const;
Same as above get_n_smallest_view but it returns a const View
T: Type of the named column
Ts: List all the types of all data columns. A type should be specified in the list only once.
col_name: The name of a column or DF_INDEX_COL_NAME
n: Number of smallest values
abs_value: If this is true, absolute values are considered
static void test_get_n_largest_data()  {

    std::cout << "\nTesting get_n_largest_data( ) ..." << std::endl;

    typedef StdDataFrame64<std::string> StrDataFrame;

    StrDataFrame    df;

    try  {
        df.read("IBM.csv", io_format::csv2);
    }
    catch (const DataFrameError &ex)  {
        std::cout << ex.what() << std::endl;
        ::exit(-1);
    }

    auto        res_df = df.get_n_largest_data<double, double, long>("IBM_Close", 5);
    const auto  res_vw = df.get_n_largest_view<double, double, long>("IBM_Close", 5);

    assert(res_df.get_index().size() == 5);
    assert(res_vw.get_index().size() == 5);
    assert((res_df.get_index()[0] == "2013-03-14"));
    assert((res_vw.get_index()[0] == "2013-03-14"));
    assert((res_df.get_index()[3] == "2013-04-02"));
    assert((res_vw.get_index()[3] == "2013-04-02"));
    assert(res_df.get_column<double>("IBM_Low").size() == 5);
    assert(res_vw.get_column<double>("IBM_Low").size() == 5);
    assert(res_df.get_column<double>("IBM_Close").size() == 5);
    assert(res_vw.get_column<double>("IBM_Close").size() == 5);
    assert((std::fabs(res_df.get_column<double>("IBM_Close")[1] - 215.06) < 0.01));
    assert((std::fabs(res_vw.get_column<double>("IBM_Close")[1] - 215.06) < 0.01));
    assert((std::fabs(res_df.get_column<double>("IBM_Close")[2] - 214.92) < 0.01));
    assert((std::fabs(res_vw.get_column<double>("IBM_Close")[2] - 214.92) < 0.01));
    assert((res_df.get_column<long>("IBM_Volume")[3] == 3116800));
    assert((res_vw.get_column<long>("IBM_Volume")[3] == 3116800));
}
// ----------------------------------------------------------------------------

static void test_get_n_smallest_data()  {

    std::cout << "\nTesting get_n_smallest_data( ) ..." << std::endl;

    typedef StdDataFrame64<std::string> StrDataFrame;

    StrDataFrame    df;

    try  {
        df.read("IBM.csv", io_format::csv2);
    }
    catch (const DataFrameError &ex)  {
        std::cout << ex.what() << std::endl;
        ::exit(-1);
    }

    auto        res_df = df.get_n_smallest_data<double, double, long>("IBM_Close", 5);
    const auto  res_vw = df.get_n_smallest_view<double, double, long>("IBM_Close", 5);

    assert(res_df.get_index().size() == 5);
    assert(res_vw.get_index().size() == 5);
    assert((res_df.get_index()[0] == "2002-10-09"));
    assert((res_vw.get_index()[0] == "2002-10-09"));
    assert((res_df.get_index()[3] == "2002-10-08"));
    assert((res_vw.get_index()[3] == "2002-10-08"));
    assert(res_df.get_column<double>("IBM_Low").size() == 5);
    assert(res_vw.get_column<double>("IBM_Low").size() == 5);
    assert(res_df.get_column<double>("IBM_Close").size() == 5);
    assert(res_vw.get_column<double>("IBM_Close").size() == 5);
    assert((std::fabs(res_df.get_column<double>("IBM_Close")[1] - 56.6) < 0.01));
    assert((std::fabs(res_vw.get_column<double>("IBM_Close")[1] - 56.6) < 0.01));
    assert((std::fabs(res_df.get_column<double>("IBM_Close")[2] - 56.86) < 0.01));
    assert((std::fabs(res_vw.get_column<double>("IBM_Close")[2] - 56.86) < 0.01));
    assert((res_df.get_column<long>("IBM_Volume")[3] == 14744500));
    assert((res_vw.get_column<long>("IBM_Volume")[3] == 14744500));
}

C++ DataFrame