Public
Edited
May 15
Insert cell
Insert cell
rawData = FileAttachment("sunrise_sunset_data_stryi.csv").text();
Insert cell
parsedData = {
if (!rawData) return [];
return d3.csvParse(rawData, d => {
// Parse time strings to Date objects
const parseTime = timeStr => {
if (!timeStr) return null;
const [hours, minutes, seconds] = timeStr.split(':').map(Number);
const date = new Date(d.date);
date.setHours(hours, minutes, seconds);
return date;
};
// Create a date object for extracting month and day
const dateObj = new Date(d.date);
return {
date: dateObj,
month: dateObj.getMonth() + 1, // Adding 1 since getMonth() returns 0-11
day: dateObj.getDate(),
sunrise: parseTime(d.sunrise),
sunset: parseTime(d.sunset),
// Calculate day length in hours
dayLength: (parseTime(d.sunset) - parseTime(d.sunrise)) / (1000 * 60 * 60)
};
});
}
Insert cell
// Display the first few entries to verify the data structure
parsedData.slice(0, 5)
Insert cell
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