Releases: jtablesaw/tablesaw
v0.23.3
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
Testing & Documentation
- Increased test coverage from 44% in core, to 76%.
Removed:
- Removed Float, Int, Short, Long column types. An enhanced DoubleColumn is used for all numbers.
- Removed TableGroup, SubTable, and NumericSummaryTable. All replaced by standard table or TableSlice and TableSliceGroup.
- Removed Smile integration
- Removed experimental time interval support
- Removed several index types
- Removed .saw file persistence
- Removed all deprecated methods
- Removed methods of limited or unclear utility
- Removed Lombok dependency (it caused warnings in Java9 and The IDEA plugin is flakey)
- Removed duplicate comparator implementations
Renamed:
- Renamed CategoryColumn to StringColumn
- Renamed NumericColumn interface to NumberColumn
- Renamed TemporaryView and ViewGroup to TableSlice and TableSliceGroup
Enhancements:
-
Numerous bug fixes
-
Added filler methods for each column.
-
Added CsvWriteOptions to allow greater control over file writing
-
Improved filtering support
-
Implemented support for selecting specific columns, including calculated columns, in query result tables.
table.select(dateCol, dateCol.year()).where(nCol("quantity").isPositive());
-
Standardized naming on queries for tables and columns:
Column c1 = col.where(col.isLessThan(4)); Table t1 = tab.where(col.isLessThan(4));
-
Added several filtering methods to columns:
Column c1 = col.inRange(int start, int end); Column c2 = col.rows(int… rows); Column c3 = col.sampleX(double proportion); Column c4 = col.sampleN(int nRows);
Added support for using Java 8 predicates to filter columns
-
Extended table filtering to support direct use of column filter methods (e.g. col.startsWith("foo")) in table where clauses
-
Added And, Or, and Not filters to Table API so users don't need to use/know-about QueryHelper for most queries
-
Added support for chaining "selections" so filters can be readily combined
col.where(col.isLessThan(3).and(col.isGreaterThan(-2)));
-
-
Improved join support
-
Added support for left and right outer joins. For example:
table.join("myJoinColumn").leftOuter(table2, "otherJoinColumn");
-
Added support for joining on doubles (after rounding to ints)
-
-
Reading and printing formatted data
-
Added support for formatted printing of tables and columns (esp., number and time columns)
dateColumn.setPrintFormatter(DateTimeFormatter.ofPattern("MMM~dd~yyyy"));
doubleColumn.setPrintFormatter(NumberColumnFormatter.ints);
-
Added support for applying a locale for CSV file import
-
Added support for applying DateTimeFormatters to read specific date/time formats from CSV files.
-
-
Standardize column instantiation methods
- Always use a static create() method rather than public constructors
- Standardize support for instantiating from lists and arrays.
-
Added support for lag(n) and lead(n) methods on all column types. These return the receivers data offset by n positions:
Column xLag = columnX.lag(1); Column xLead = columnX.lead(1);
-
Extended PackedLocalTime and PackedLocalDate to be (approximately) functionally equivalent to Java's LocalDate and LocalTime.
-
Added initial support for JavaScript-based plotting using Plot.ly. See this page for more information.
-
Improved Aggregation/Summarization
-
Support for conditional summarization using summarizeIf(). The code below counts the number of strings in column that end with "3".
double count = column.summarizeIf(column.endsWith("3"), count);
-
Simplified the CrossTab API, and provided methods for creating CrossTabs (aka contingency tables) in table objects:
table.xTabCounts("columnA", "columnB");
-
Support for table summaries that include summaries of columns created on the fly using mapping functions:
table.summarize(dateColumn.year(), max, min);
-
Support for table summaries that include non-numeric columns. For example, the code below applies countTrue to the boolean column and standardDeviation to the numeric column.
table.summarize(booleanColumn, numberColumn, countTrue, standardDeviation);
-
Support summarizing by "time windows" groups of n time units (days, weeks, years, etc).
table.summarize("quantity", mean, median).by(date.timeWindow(DAYS, 5));
-
Support summarizing by named time units (months, for example):
table.summarize("quantity", mean, median).by(date.month());
-
Both of the above are examples of a more general solution: Sub totals can per calculated for groups defined by any function that returns a column:
table.summarize("quantity", sumOfSquares).by(strCol.substring(4, 7));
-
Version 0.7.2
Aggregating changes and bug fixes for latest push to maven central. This release contains initial support for machine learning models, extensions to the visualization support, and numerous bug-fixes and minor enhancements to the data-frame capability.
Version 0.7.1.1
New OpenCSV library added.
Incorporated difference methods for smarks.
A number of new methods added.
A (small) number of bug fixes,
Version 0.7.1
Bug fixes for column#isEqualTo(a Value), and Columnar addition/subtraction.
Includes 0.7, with all changes prior to first release maven central.
Note that this is still considered as in-progress, rather than a production-stable release.
Version 0.6.6.1 Bugfix
Fixed build breakage due to pom dependency