Skip to content

Commit 0eda784

Browse files
committed
Removed a duplicate code listing.
1 parent 02d18ce commit 0eda784

File tree

4 files changed

+89
-132
lines changed

4 files changed

+89
-132
lines changed

listing-10.js

+23-30
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,36 @@
11
//
2-
// This example imports a CSV file, filters out an entire column and exports a new CSV file.
2+
// Aggregate data from multiple files.
33
//
44
// This example uses Data-Forge.
55
//
66

77
'use strict';
88

9-
var dataForge = require('data-forge');
9+
var globby = require('globby');
10+
var importCsvFile = require('./toolkit/importCsvFile.js');
11+
var exportCsvFile = require('./toolkit/exportCsvFile.js');
1012

11-
var inputFileName = './data/surveys.csv';
12-
var outputFileName = './output/surveys-aggregated.csv';
13+
var inputFileSpec = './data/by-country/*.csv';
14+
var outputFileName = './output/surveys-aggregated-from-separate-files.csv';
1315

14-
function transformData (inputDataFrame) {
15-
return inputDataFrame
16-
.parseFloats("transects_length")
17-
.groupBy(inputRow => inputRow.reef_name)
18-
.select(group => {
19-
return {
20-
reef_name: group.first().reef_name,
21-
transects_length: group
22-
.select(row => row.transects_length)
23-
.sum(),
24-
};
25-
})
26-
.inflate();
27-
}
28-
29-
dataForge.readFile(inputFileName)
30-
.parseCSV()
31-
.then(inputDataFrame => {
32-
var outputDataFrame = transformData(inputDataFrame);
33-
return outputDataFrame
34-
.asCSV()
35-
.writeFile(outputFileName);
16+
globby(inputFileSpec)
17+
.then(paths => {
18+
return paths.reduce((prevPromise, path) => {
19+
return prevPromise.then(workingData => {
20+
return importCsvFile(path)
21+
.then(inputData => {
22+
return workingData.concat(inputData);
23+
});
24+
});
25+
}, Promise.resolve([]));
26+
})
27+
.then(aggregatedData => {
28+
return exportCsvFile(outputFileName, aggregatedData);
3629
})
3730
.then(() => {
38-
console.log('Done!');
31+
console.log("Done!");
3932
})
4033
.catch(err => {
41-
console.error('Error!');
42-
console.error(err && err.stack || err);
43-
});
34+
console.error("An error occurred.");
35+
console.error(err);
36+
})

listing-11.js

+40-26
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,50 @@
11
//
2-
// Aggregate data from multiple files.
2+
// Split a data file out to multiple data files where data is grouped by country.
33
//
44
// This example uses Data-Forge.
55
//
66

77
'use strict';
88

9-
var globby = require('globby');
10-
var importCsvFile = require('./toolkit/importCsvFile.js');
11-
var exportCsvFile = require('./toolkit/exportCsvFile.js');
12-
13-
var inputFileSpec = './data/by-country/*.csv';
14-
var outputFileName = './output/surveys-aggregated-from-separate-files.csv';
15-
16-
globby(inputFileSpec)
17-
.then(paths => {
18-
return paths.reduce((prevPromise, path) => {
19-
return prevPromise.then(workingData => {
20-
return importCsvFile(path)
21-
.then(inputData => {
22-
return workingData.concat(inputData);
23-
});
24-
});
25-
}, Promise.resolve([]));
26-
})
27-
.then(aggregatedData => {
28-
return exportCsvFile(outputFileName, aggregatedData);
29-
})
9+
var dataForge = require('data-forge');
10+
11+
var inputFileName = './data/surveys.csv';
12+
13+
function filterRow (inputRow, country) {
14+
return inputRow.country === country;
15+
}
16+
17+
function transformData (inputDataFrame, country) {
18+
return inputDataFrame.where(inputRow => filterRow(inputRow, country));
19+
}
20+
21+
function getCountries (inputDataFrame) {
22+
return inputDataFrame
23+
.getSeries("country")
24+
.distinct();
25+
}
26+
27+
function splitDataByCountry (inputDataFrame) {
28+
return getCountries(inputDataFrame)
29+
.aggregate(Promise.resolve(), (prevPromise, country) => {
30+
return prevPromise.then(() => {
31+
var outputDataFrame = transformData(inputDataFrame, country);
32+
var outputFileName = './data/by-country/' + country + '.csv';
33+
console.log('>> ' + outputFileName);
34+
return outputDataFrame
35+
.asCSV()
36+
.writeFile(outputFileName);
37+
});
38+
});
39+
}
40+
41+
dataForge.readFile(inputFileName)
42+
.parseCSV()
43+
.then(splitDataByCountry)
3044
.then(() => {
31-
console.log("Done!");
45+
console.log('Done!');
3246
})
3347
.catch(err => {
34-
console.error("An error occurred.");
35-
console.error(err);
36-
})
48+
console.error('Error!');
49+
console.error(err && err.stack || err);
50+
});

listing-12.js

+26-35
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,41 @@
11
//
2-
// Split a data file out to multiple data files where data is grouped by country.
3-
//
4-
// This example uses Data-Forge.
2+
// Example Data-Forge data pipeline.
53
//
64

5+
76
'use strict';
87

98
var dataForge = require('data-forge');
9+
var moment = require('moment');
1010

11+
var importDateFormat = "YYYY-MM-DD HH:mm:ss";
1112
var inputFileName = './data/surveys.csv';
12-
13-
function filterRow (inputRow, country) {
14-
return inputRow.country === country;
15-
}
16-
17-
function transformData (inputDataFrame, country) {
18-
return inputDataFrame.where(inputRow => filterRow(inputRow, country));
19-
}
20-
21-
function getCountries (inputDataFrame) {
22-
return inputDataFrame
23-
.getSeries("country")
24-
.distinct();
25-
}
26-
27-
function splitDataByCountry (inputDataFrame) {
28-
return getCountries(inputDataFrame)
29-
.aggregate(Promise.resolve(), (prevPromise, country) => {
30-
return prevPromise.then(() => {
31-
var outputDataFrame = transformData(inputDataFrame, country);
32-
var outputFileName = './data/by-country/' + country + '.csv';
33-
console.log('>> ' + outputFileName);
34-
return outputDataFrame
35-
.asCSV()
36-
.writeFile(outputFileName);
37-
});
38-
});
39-
}
13+
var outputFileName = './output/data-pipeline-output.csv';
4014

4115
dataForge.readFile(inputFileName)
4216
.parseCSV()
43-
.then(splitDataByCountry)
17+
.then(dataFrame => {
18+
return dataFrame.dropSeries(["exp_id", "dive_observations", "obs_topography"])
19+
.parseDates(["start_datetime", "end_datetime"], importDateFormat)
20+
.where(row => moment(row.start_datetime).year() === 2014)
21+
.parseFloats("dive_temperature")
22+
.where(row => row.dive_temperature !== 0)
23+
.groupBy(row => row.country)
24+
.select(group => ({
25+
country: group.first().country,
26+
dive_temperature: group.select(row => row.dive_temperature).average()
27+
}))
28+
.inflate()
29+
.asCSV()
30+
.writeFile(outputFileName);
31+
})
4432
.then(() => {
45-
console.log('Done!');
33+
console.log("Done!");
4634
})
4735
.catch(err => {
48-
console.error('Error!');
49-
console.error(err && err.stack || err);
36+
console.error("An error occured");
37+
console.error(err);
5038
});
39+
40+
41+

listing-13.js

-41
This file was deleted.

0 commit comments

Comments
 (0)