Skip to content

Commit d0e1ecd

Browse files
committed
Implemented groupBy:aggregate: and select:groupBy:aggregate:. Wrote tests for them
1 parent 45f37b1 commit d0e1ecd

File tree

20 files changed

+77
-26
lines changed

20 files changed

+77
-26
lines changed

DataFrame-Core.package/DataFrame.class/class/fromXLSX.worksheetNamed..st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ fromXLSX: pathToFile worksheetNamed: sheetName
44
| file workbook sheet |
55

66
file := FileStream readOnlyFileNamed: pathToFile.
7-
workbook := XLSXImporter import file.
7+
workbook := XLSXImporter import: file.
88
sheet := workbook worksheetNamed: sheetName.
99

1010
^ self fromXLSXworksheet: sheet.

DataFrame-Core.package/DataFrame.class/instance/group.by..st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
as yet unclassified
1+
queries
22
group: colNameOrArray by: colName
33

44
| left right |

DataFrame-Core.package/DataFrame.class/instance/groupBy..st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
as yet unclassified
1+
queries
22
groupBy: colName
33

44
| groupedColNames |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
queries
2+
groupBy: colName aggregate: selector
3+
4+
^ (self groupBy: colName) perform: selector.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
queries
2+
select: colNames groupBy: aColName aggregate: selector
3+
4+
| df |
5+
6+
df := (colNames includes: aColName)
7+
ifTrue: [ self columns: colNames ]
8+
ifFalse: [ self columns: (colNames copyWith: aColName) ].
9+
10+
^ df groupBy: aColName aggregate: selector.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
as yet unclassified
1+
queries
22
select: colNames where: aBlock
33

44
^ (self selectAllWhere: aBlock) columns: colNames
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
as yet unclassified
1+
queries
22
select: colNames where: aBlock groupBy: aColName aggregate: selector
33

4-
^ ((self select: colNames where: aBlock)
5-
groupBy: aColName) perform: selector.
4+
^ (self select: colNames where: aBlock)
5+
groupBy: aColName
6+
aggregate: selector.

DataFrame-Core.package/DataFrame.class/instance/selectAllWhere..st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
as yet unclassified
1+
queries
22
selectAllWhere: aBlock
33

44
| testedColumnNames |

DataFrame-Tests.package/DataFrameInternalTests.class/instance/testAddColumn.st

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ testAddColumn
44
| expected |
55

66
expected := DataFrameInternal fromRows: #(
7-
('Barcelona' 1.609 true 9)
8-
('Dubai' 2.789 true 8)
9-
('London' 8.788 false 7)).
7+
('Barcelona' 1.609 true 4)
8+
('Dubai' 2.789 true 3)
9+
('London' 8.788 false 4)).
1010

11-
df addColumn: #(9 8 7).
11+
df addColumn: #(4 3 4).
1212

1313
self assert: df equals: expected.
1414

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
initialization
2+
testGroupbyAggregate
3+
4+
| actual expected |
5+
6+
actual := df groupBy: #species aggregate: #sum.
7+
8+
expected := DataFrame fromRows: #(
9+
(250.3 170.9 73.2 12.2)
10+
(296.8 138.5 213.0 66.3)
11+
(329.4 148.7 277.6 101.3)).
12+
13+
expected columnNames: #(sepal_length sepal_width petal_length petal_width).
14+
expected rowNames: #(setosa versicolor virginica).
15+
16+
self assert: actual closeTo: expected.

0 commit comments

Comments
 (0)