DataFrame.fromMapOfLists constructor
A data frame built from a map of lists.
Example:
final d = DataFrame.fromMapOfLists({
"a": [1, 3, 5],
"b": [5.1, 2.7, -0.9],
"c": ["red", "green", "red"],
});
print(d);
.-.----.-------.
|a|b |c |
:-+----+-------:
|1|5.1 |red |
|3|2.7 |green |
|5|-0.9|red |
'-'----'-------'
Implementation
factory DataFrame.fromMapOfLists(
Map<String, List<Object>> data, {
Map<String, ColumnType>? types,
}) {
types = types ?? {};
final numericColumns = <String, NumericColumn>{},
categoricColumns = <String, CategoricColumn>{};
for (var MapEntry(key: key, value: xs) in data.entries) {
if (types.containsKey(key)) {
switch (types[key]!) {
case ColumnType.numeric:
numericColumns[key] = NumericColumn(
xs.map((x) => num.tryParse(x.toString()) ?? double.nan));
case ColumnType.categoric:
categoricColumns[key] =
CategoricColumn(xs.map((x) => x.toString()));
}
} else {
final firstParsedValue = num.tryParse(xs.first.toString());
if (firstParsedValue == null) {
categoricColumns[key] = CategoricColumn(xs.map((x) => x.toString()));
} else {
numericColumns[key] = NumericColumn(
xs.map((x) => num.tryParse(x.toString()) ?? double.nan));
}
}
}
return DataFrame(
numericColumns: numericColumns,
categoricColumns: categoricColumns,
);
}