public Parameters(StringColumn... columns) { this.dataFrame = DataFrame.ofAll(List.of(columns).filter(TableComponent::isNotBlank)); } }
public static DataFrame ofAll(Column<?>... columns) { return ofAll(Array.of(columns)); }
public static DataFrame of(Column<?> column) { return ofAll(Array.of(column)); }
public static DataFrame ofAll(Column<?>... columns) { return ofAll(Array.of(columns)); }
public static DataFrame of(Column<?> column) { return ofAll(Array.of(column)); }
public Parameters(StringColumn... columns) { this.dataFrame = DataFrame.ofAll(List.of(columns).filter(TableComponent::isNotBlank)); } }
public Parameters(StringColumn... columns) { this.dataFrame = DataFrame.ofAll(List.of(columns).filter(TableComponent::isNotBlank)); } }
@Test public void ofAll() { StringColumn stringColumn = StringColumn.builder(NAME).build(); IntColumn intColumn = IntColumn.builder(AGE).build(); // enum variant assertEquals(2, DataFrame.ofAll(stringColumn, intColumn).getColumnCount()); // iterable variant Iterable<Column<?>> columns = Arrays.asList(stringColumn, intColumn); assertEquals(2, DataFrame.ofAll(columns).getColumnCount()); }
@Test(expected = IllegalArgumentException.class) public void failOnDifferingColumnSizes() { StringColumn oneRowColumn = StringColumn.builder(NAME).add("foo").build(); IntColumn threeRowColumn = IntColumn.builder(AGE).addAll(1, 2, 3).build(); DataFrame.ofAll(oneRowColumn, threeRowColumn); }
@Test public void withMetaData() { StringColumn stringColumn = StringColumn.builder(NAME).build(); IntColumn intColumn = IntColumn.builder(AGE).build(); DataFrame df = DataFrame.ofAll(stringColumn, intColumn); Map<String, String> metaData = LinkedHashMap.of("foo", "bar"); DataFrame withMetaData = df.withMetaData(metaData); assertEquals(metaData, withMetaData.getMetaData()); assertEquals(2, withMetaData.getColumnCount()); }
@Test public void iterator() { StringColumn stringColumn = StringColumn.builder(NAME).build(); IntColumn intColumn = IntColumn.builder(AGE).build(); Iterator<Column<?>> iterator = DataFrame.ofAll(stringColumn, intColumn).iterator(); assertTrue(iterator.hasNext()); iterator.next(); assertTrue(iterator.hasNext()); iterator.next(); assertFalse(iterator.hasNext()); }
@Test public void demo() { // Type-safe column identifiers final StringColumnId NAME = StringColumnId.of("Name"); final CategoryColumnId COLOR = CategoryColumnId.of("Color"); final DoubleColumnId SERVING_SIZE = DoubleColumnId.of("Serving Size (g)"); // Convenient column creation StringColumn nameColumn = StringColumn.ofAll(NAME, "Banana", "Blueberry", "Lemon", "Apple"); CategoryColumn colorColumn = CategoryColumn.ofAll(COLOR, "Yellow", "Blue", "Yellow", "Green"); DoubleColumn servingSizeColumn = DoubleColumn.ofAll(SERVING_SIZE, 118, 148, 83, 182); // Grouping columns into a data frame DataFrame dataFrame = DataFrame.ofAll(nameColumn, colorColumn, servingSizeColumn); // Typed random access to individual values (based on rowIndex / columnId) String lemon = dataFrame.getValueAt(2, NAME); double appleServingSize = dataFrame.getValueAt(3, SERVING_SIZE); // Typed stream-based access to all values DoubleStream servingSizes = servingSizeColumn.valueStream(); double maxServingSize = servingSizes.summaryStatistics().getMax(); // Smart column implementations Set<String> colors = colorColumn.getCategories(); }
CategoryColumn genderColumn = CategoryColumn.ofAll(GENDER, "Female", "Male", "Female"); DataFrame df = DataFrame.ofAll(nameColumn, ageColumn, heightColumn, vegetarianColumn, dateOfBirthColumn, genderColumn);