forked from thiagokpelo/loft-science
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpreprocess-data.js
66 lines (61 loc) · 1.32 KB
/
preprocess-data.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const neatCsv = require('neat-csv');
const fs = require('fs')
const DEPARTAMENTOS_MAP = {
'AMAZONAS': 'AM',
'ANCASH': 'AN',
'APURIMAC': 'AP',
'AREQUIPA': 'AR',
'AYACUCHO': 'AY',
'CALLAO': 'CA',
'CAJAMARCA': 'CJ',
'CUSCO': 'CU',
'HUANUCO': 'HU',
'HUANCAVELICA': 'HV',
'ICA': 'IC',
'JUNIN': 'JU',
'LAMBAYEQUE': 'LA',
'LA LIBERTAD': 'LL',
'LIMA': 'LI',
'LORETO': 'LO',
'MADRE DE DIOS': 'MD',
'MOQUEGUA': 'MO',
'PASCO': 'PA',
'PIURA': 'PI',
'PUNO': 'PU',
'SAN MARTIN': 'SM',
'TACNA': 'TA',
'TUMBES': 'TU',
'UCAYALI': 'UC'
}
fs.readFile('./data/source.csv', async (err, data) => {
if (err) {
console.error(err)
console.log("./data/source.csv file not found.")
return
}
const csvSource = await neatCsv(data)
const outputJson = csvSource.map(entry => ({
...entry,
state: DEPARTAMENTOS_MAP[entry.state],
ML: parseFloat(entry.ML),
Low_90: parseFloat(entry.Low_90),
High_90: parseFloat(entry.High_90)
})).map(entry => ([
entry.state,
entry.date,
entry.ML,
entry.Low_90,
entry.High_90
]))
fs.writeFileSync('./src/data/output.js', `export default ${JSON.stringify({
"columns": [
"state",
"date",
"ML",
"Low_90",
"High_90"
],
"data": outputJson
})}`)
console.log("Done generating json source.")
})