Public
Edited
Feb 25
Insert cell
Insert cell
Insert cell
Insert cell
methodists.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
regions.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
Insert cell
Insert cell
regions_aq = aq.from(regions)
Insert cell
methodists_aq.view()
Insert cell
dijon-prices.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
dijon-prices-wide.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
dijon_wide_aq = aq.from(dijon_wide)
Insert cell
dijon_long_aq = aq.from(dijon_long)
Insert cell
Insert cell
methodists.csv
SELECT year, meeting, members_total FROM methodists.csv
Insert cell
methodists_aq.select("year", "meeting", "members_total").view()
Insert cell
methodists_aq.select(aq.not("url", "state", "members_general")).view()
Insert cell
Insert cell
methodists.csv
SELECT *
FROM methodists.csv
WHERE year = 1800
Insert cell
methodists_aq.filter((d) => d.year == 1800).view()
Insert cell
Insert cell
methodists.csv
SELECT *
FROM methodists.csv
WHERE year = 1800 AND state = 'New York'
Insert cell
methodists_aq.filter((d) => (d.year == 1800) & (d.state == "New York")).view()
Insert cell
Insert cell
Insert cell
methodists.csv
SELECT year AS original_year, year - 1 as year_recorded, *
FROM methodists.csv
Insert cell
methodists_aq
.derive({ year_recorded: (d) => d.year - 1 })
.select("year", "year_recorded", aq.all)
.view()
Insert cell
methodists.csv
SELECT
members_white::float / members_total::float AS percent_white,
members_black::float / members_total::float AS percent_black,
*
FROM methodists.csv
WHERE year == 1805
Insert cell
majority_black_congregations = methodists_aq
.derive({
members_white: (d) => d.members_white / d.members_total,
members_black: (d) => d.members_black / d.members_total
})
.filter((d) => d.year === 1805)
.filter((d) => d.members_black > 0.5)
.select("members_white", "members_black", aq.all())
Insert cell
majority_black_congregations
Insert cell
Insert cell
methodists.csv
SELECT
members_white::float / members_total::float AS percent_white,
members_black::float / members_total::float AS percent_black,
*
FROM methodists.csv
WHERE year == 1805
ORDER BY percent_black ASC;
Insert cell
methodists_aq
.derive({
members_white: (d) => d.members_white / d.members_total,
members_black: (d) => d.members_black / d.members_total
})
.filter((d) => d.year === 1805)
.select("members_white", "members_black", aq.all())
.orderby(aq.desc("members_black"))
.view()
Insert cell
Insert cell
methodists.csv
SELECT
year,
SUM(members_total)::integer AS members_total,
count(*) AS congregations
FROM methodists.csv
GROUP BY year;
Insert cell
methodists_aq
.groupby("year")
.rollup({
members_total: (d) => op.sum(d.members_total),
congregations: op.count()
})
.view()
Insert cell
methodists_aq
.groupby("year", "conference")
.rollup({
members_total: (d) => op.sum(d.members_total),
congregations: op.count()
})
.view()
Insert cell
Insert cell
methodists.sqlite
SELECT year, meeting, r.state, region, *
FROM members m
LEFT JOIN regions r ON m.state = r.state
Insert cell
methodists.sqlite
SELECT
year,
region,
SUM(members_total) AS members,
COUNT(*) AS congregations
FROM members m
LEFT JOIN regions r ON m.state = r.state
GROUP BY year, region;
Insert cell
methodists_aq
.join(regions_aq, "state")
.select(
"year",
"meeting",
"state",
"region",
aq.not("conference", "district", "url")
)
.view()
Insert cell
methodists_aq
.join(regions_aq, "state")
.groupby("year", "region")
.rollup({
members: (d) => op.sum(d.members_total),
congregations: (d) => op.count()
})
.view()
Insert cell
Insert cell
Insert cell
dijon_wide_aq.select("commodity", "measure", aq.all()).view()
Insert cell
dijon_wide_aq
.select("commodity", "measure", aq.all())
.fold(aq.not("commodity", "measure"))
.rename({ key: "year", value: "price" })
.view()
Insert cell
Insert cell
dijon_long_aq.view()
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