Platform
Resources
Pricing
Sign in
Get started
Kurtis Pivert
Interested in communicating data-driven insights. Director of Data Science at @ASNDataAnalytics.
Workspace
Fork
Public
By
Kurtis Pivert
Edited
Jul 25, 2023
3
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
marCasadoAir
=
FileAttachment
(
"marCasadoAir@5.csv"
)
.
csv
(
{
typed
:
true
}
)
// Date issue
Insert cell
marCasadoSea
=
FileAttachment
(
"marCasadoSea@4.csv"
)
.
csv
(
{
typed
:
true
}
)
// Date issue
Insert cell
Insert cell
// Write code to create a database called marCasadoDB, with tables 'air' and 'sea':
marCasadoDB
=
DuckDBClient
.
of
(
{
air
:
marCasadoAir
,
sea
:
marCasadoSea
}
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
marCasadoDB
SELECT air.month
, meanPressure
, windSpeed
, PAR
, meanHumidity
, windDirection
, sea.maxTide
, sea.minTide
, sea.salinity
, sea.seaSurfaceTemp as SST
, CASE WHEN date_part('month', air.month) IN (10, 11, 12, 1, 2, 3) THEN 'hot moist' ELSE 'cold dry' END AS "season"
FROM air
JOIN sea
ON air.month = sea.month
Insert cell
Insert cell
Insert cell
marCasado
SELECT * FROM marCasado
Insert cell
Insert cell
marCasado
Insert cell
Insert cell
// Write Plot code to create a heatmap of sea surface temperature (SST) by year and month, starting from the 'cell' snippet:
Insert cell
Plot
.
plot
(
{
marks
:
[
Plot
.
cell
(
marCasado
,
{
x
:
(
d
)
=>
d
.
month
.
getUTCMonth
(
)
,
y
:
(
d
)
=>
d
.
month
.
getUTCFullYear
(
)
,
fill
:
(
d
)
=>
d
.
meanPressure
,
tip
:
true
}
)
]
,
y
:
{
tickFormat
:
"Y"
,
padding
:
0
}
,
x
:
{
padding
:
0
,
tickFormat
:
Plot
.
formatMonth
(
)
}
}
)
Insert cell
Insert cell
Insert cell
import
{
PlotMatrix
}
with
{
marCasado
as
data
}
from
"@observablehq/autoplot-matrix"
Insert cell
// Use the PlotMatrix function (expecting marCasado) to create a pair plot:
PlotMatrix
(
)
Insert cell
Insert cell
Insert cell
Insert cell
ML
=
require
(
"https://www.lactame.com/lib/ml/6.0.0/ml.min.js"
)
Insert cell
Insert cell
import
{
scale
,
asMatrix
}
from
"@chrispahm/hierarchical-clustering"
Insert cell
Insert cell
Insert cell
// Create a scaled version of the numeric variables
marCasadoScaled
=
scale
(
marCasado
.
map
(
(
{
season
,
month
,
...
rest
}
)
=>
rest
)
)
Insert cell
Insert cell
// Convert to an array of arrays, just containing the values (no keys):
marCasadoArray
=
marCasadoScaled
.
map
(
Object
.
values
)
Insert cell
Insert cell
// Perform principal component analysis:
marCasadoPCA
=
new
ML
.
PCA
(
marCasadoArray
)
Insert cell
Insert cell
Insert cell
// Get variance explained by each PC:
marCasadoPCA
.
getExplainedVariance
(
)
Insert cell
Insert cell
// Get cumulative variance explained:
marCasadoPCA
.
getCumulativeVariance
(
)
Insert cell
Insert cell
Insert cell
Insert cell
// Import viewof loadings from the notebook, with marCasadoScaled as food_scaled:
import
{
viewof
loadings
}
with
{
marCasadoScaled
as
food_scaled
}
from
"@chrispahm/principal-component-analysis"
Insert cell
// Look at viewof loadings:
viewof
loadings
Insert cell
// import viewof scores from the notebook, with marCasadoScaled as food_scaled and marCasado as food:
import
{
viewof
scores
}
with
{
marCasadoScaled
as
food_scaled
,
marCasado
as
food
}
from
"@chrispahm/principal-component-analysis"
Insert cell
// Look at viewof scores:
viewof
scores
Insert cell
// Do some wrangling to get the month and season alongside scores:
scoresCombined
=
scores
.
map
(
(
d
,
i
)
=>
(
{
...
d
,
Name
:
marCasado
[
i
]
.
month
,
season
:
marCasado
[
i
]
.
season
}
)
)
Insert cell
// Create a PCA biplot with the scores and loadings
chart
=
Plot
.
plot
(
{
marks
:
[
Plot
.
dot
(
scoresCombined
,
{
x
:
"PC1"
,
y
:
"PC2"
,
fill
:
"season"
,
r
:
4
,
tip
:
true
}
)
,
Plot
.
arrow
(
loadings
,
{
x1
:
0
,
x2
:
(
d
)
=>
d
.
PC1
*
scalingFactor
,
y1
:
0
,
y2
:
(
d
)
=>
d
.
PC2
*
scalingFactor
}
)
,
Plot
.
text
(
loadings
,
{
x
:
(
d
)
=>
d
.
PC1
*
scalingFactor
,
y
:
(
d
)
=>
d
.
PC2
*
scalingFactor
,
text
:
"Variable"
}
)
]
,
color
:
{
legend
:
true
}
}
)
Insert cell
scalingFactor
=
5
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
// Alternatively (without an import):
// loadingsOption = marCasadoPCA
// .getEigenvectors()
// .data.map((d, i) => ({
// PC1: d[0],
// PC2: d[1],
// Variable: Object.keys(marCasadoScaled[0])[i]
// }))
Insert cell
// Alternatively to get score (projections into PC space):
// scoresOption = marCasadoPCA.predict(marCasadoArray).data.map((d,i) => ({month: marCasado[i].month,
// season: marCasado[i].season,
// PC1: d[0],
// PC2: d[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.
Try it for free
Learn more
Fork
View
Export
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasadoAir
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasadoSea
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasadoDB
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasado
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
Cells
marCasadoDB
File attachments
marCasadoSea@4.csv
CSV
marCasadoAir@5.csv
CSV
Databases
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
Cells
marCasado
File attachments
marCasadoSea@4.csv
CSV
marCasadoAir@5.csv
CSV
Databases
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
ML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasadoScaled
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasadoArray
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
marCasadoPCA
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
scoresCombined
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
chart
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
scalingFactor
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
image
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML