Skip to content

Releases: tedmiddleton/mainframe

Expression functions, renaming, refining

07 Nov 21:35
Compare
Choose a tag to compare

The big new feature here is expression functions that allow for row expressions that contain function invocations (like calling std::trunc on columns). Also, frame::new_series<> is now frame::append_column<> and frame::prepend_column<>, and in general column/series terminology has been made a bit more consistent. Also, series::minmax() and series::stddev().

innerjoin, leftjoin, and frame indexing

10 Oct 18:55
a366269
Compare
Choose a tag to compare
Pre-release

mainframe now supports innerjoin and leftjoin functions, much like

auto fjoined = innerjoin( f1, _2, f2, _3 );

mainframe also supports flexible index operators for both columns and rows

// selects columns 3, 4, and 5 and then all rows where column 1 > 25 and column 2 is 2002 or later
auto fnew = f1[ _3, _4, _5 ][ _1 > 25.0 && _2 > 2002y/1/1 ];

groupby and aggregate

21 Jul 23:49
Compare
Choose a tag to compare
groupby and aggregate Pre-release
Pre-release

Now supports SQL-ish GROUPBY functionality complete with SUM(), MIN(), MAX(), MEAN(), STDDEV(), and COUNT().

algorithms and iterators and rows

14 Jun 06:59
Compare
Choose a tag to compare
Pre-release

The original implementation of frame_iterator didn't really allow for mutation - there was no frame_iterator::value_type that standard algorithms like std::sort() could use as temp values to do their work, because the proxy object that frame_iterator used was a bunch of series iterators.

The existing proxy object has been enhanced to allow better assignment behaviour, and at the same time there's now a type for frame_iterator::value_type - frame_row. frame_row contains actual values and can be used by std::sort() as a temp variable. frame_row will continue to be enhanced and will serve as a sort of "row-builder" object type to make parsing into frame objects a bit easier.

Other than that, the iterator type, frame_iterator, has an improved implementation with fewer strange corner-cases.

Column indexers and expressions work as expected

03 May 15:33
Compare
Choose a tag to compare

The list of table-stakes items for a dataframe that mainframe hasn't implemented is growing shorter with every commit - but correlations are next.

Missing columns

02 May 15:44
Compare
Choose a tag to compare
Missing columns Pre-release
Pre-release

Columns can now hold missing types and frame supports the frame::allow_missing() and frame::disallow_missing() calls, directed either at the whole frame or groups of columns.

frame::rows() and expressions

11 Apr 23:20
Compare
Choose a tag to compare
Pre-release
Expressions mostly... work? frame::rows() works?

frame::rows() seems to mostly work now. It can't work with column names
unfortunately - only indices. But there might be a way of salvaging this
- although it would still mean uframe and useries would have to be used.
But for now, it's possible to craft an expression that filters on
columns based on arbitrary types that have standard c++ operator
support.

v0.1.0

28 Mar 15:14
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release
Merge branch 'main' of github.com:tedmiddleton/miniframe into main