Published
Edited
Feb 25, 2019
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
data = dailyData
Insert cell
Insert cell
Insert cell
dataUrl = 'https://raw.githubusercontent.com/RandomFractals/ChicagoCrimes/master/data/2018/chicago-crimes-2018.arrow'
Insert cell
dataTable = loadData(dataUrl).then(buffer => arrow.Table.from(new Uint8Array(buffer)))
Insert cell
crimeData = groupByField(dataTable, 'PrimaryType')
Insert cell
dailyCrimes = Object.keys(crimeData)
.sort((a, b) => crimeData[b].length - crimeData[a].length) // order by crime type counts
.slice(0, 20) // top 20
.map(key => {
return {name: key, daily: groupByDay(crimeData[key], key)};
})
Insert cell
dailyData = {
const dailyData = [];
dailyCrimes.map(data => {
Object.keys(data.daily)
.map(day => {
dailyData.push({
name: data.name,
date: new Date(new Date(day).getTime() + timezoneOffset),
value: data.daily[day].length
});
});
});
return dailyData;
}
Insert cell
Insert cell
thefts = groupByDay(crimeData['THEFT'], 'THEFT')
Insert cell
homicides = groupByDay(crimeData['HOMICIDE'], 'HOMICIDE')
Insert cell
function groupByDay(dataArray, crimeType) {
let daily = {};
dataArray.map(data => {
const day = data.date.toISOString().substring(0, 10); // ISO date string
if (!daily[day]) {
daily[day] = [];
}
daily[day].push(data);
});
return daily;
}
Insert cell
import {loadData, toDate} from '@randomfractals/apache-arrow'
Insert cell
import {groupByField} from '@randomfractals/chicago-crimes-by-type'
Insert cell
arrow = require('apache-arrow@0.3.1')
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more