March 24, 2026

Penguins vs. pandas vs. Namibia?!

Data Manipulation in Clojure Compared to R and Python

Clojure stans hype the penguins while skeptics yell “Namibia alert”

TLDR: A new post compares Clojure’s Tablecloth with R and Python tools on a penguin dataset, showing similar basics across languages. Commenters split between praising Clojure’s clean, immutable feel and warning about adoption hurdles and the “NA eats Namibia” gotcha—fueling a lively, teachable clash of styles and ecosystem realities.

A side‑by‑side showdown of data tricks just dropped, pitting Clojure’s Tablecloth against R’s tidyverse and Python’s pandas/polars on the adorable Palmer Penguins. The post walks through reading a CSV of penguins, peeking at columns, and sorting rows—basic stuff—but the comments turned it into a soap opera. One camp is swooning over Clojure’s clean, immutable style (think “no surprise changes” rules), calling it the sleeper hit for data wrangling. Another camp says: calm down, pandas and polars can be written immutably too, and anyway Clojure’s real issue isn’t the code—it’s adoption.

The loudest take came from a veteran who insists Clojure is amazing for transforming data, while soumyaskartha laments it “never got the data science crowd,” blaming distribution over tech. Then mharrison enters with a counterpunch: “good pandas/polars can be immutable too.” But the comedy crown goes to olivia-banks, who drops the “Namibia problem”: if “NA” (often used for “missing”) is auto‑treated as empty, what happens to the country Namibia? Cue penguin memes about countries disappearing into the void. Meanwhile QubridAI frames it as a culture clash—functional vs. imperative (step‑by‑step) styles—turning a simple penguin dataset into a philosophy debate. Verdict? The post teaches the basics, but the crowd is still arguing over hype, habits, and whether “NA” eats nations.

Key Points

  • The post previews a course (co-developed with Daniel Slutsky) that translates common data science tasks into Clojure.
  • It compares Clojure/tablecloth with R (tidyverse/dplyr, readr), Python (Pandas), and Polars using the same dataset.
  • The Palmer Penguins dataset is provided as a CSV from a public URL to standardize comparisons.
  • Missing-value handling is detailed: tablecloth treats "NA" as missing by default; readr requires na="NA"; Pandas already recognizes "NA"; Polars uses null_values="NA".
  • Basic exploration operations (head, column names, select/filter/order) are shown side-by-side across the four libraries.

Hottest takes

"Clojure never got the data science crowd even though the language is genuinely good for it. Always felt like a distribution problem more than a technical one" — soumyaskartha
"Good pandas and polars code should also be written in an immutable way..." — __mharrison__
"Having \"NA\" being treated as nil/null/None by default seems like it would cause the Namibia problem!" — olivia-banks
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.