Skip to content

Commit 1fd3382

Browse files
committed
exporting data examples + sqlite db
1 parent 56d6ac3 commit 1fd3382

File tree

9 files changed

+102
-2
lines changed

9 files changed

+102
-2
lines changed

Chinook

Whitespace-only changes.

book/chapter_2_input_output/2_2_messy_data.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
(ns chapter-2-input-output.2-2-messy-data
2+
{:nextjournal.clerk/toc true}
23
(:require [tablecloth.api :as tc]
34
[tech.v3.datatype.functional :as fun]))
45

@@ -88,7 +89,6 @@
8889
(tc/update-columns {:phone normalize-phone-numbers
8990
:postal-code normalize-postal-codes}))
9091

91-
9292
;; - Missing values
9393

9494
;; Tablecloth has [many built-in helpers](https://scicloj.github.io/tablecloth/index.html#Missing)
Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,57 @@
1-
(ns chapter-2-input-output.2-3-exporting-data)
1+
(ns chapter-2-input-output.2-3-exporting-data
2+
{:nextjournal.clerk/toc true}
3+
(:require [tablecloth.api :as tc]
4+
[clojure.data.csv :as csv]
5+
[clojure.java.io :as io]
6+
[clojure.edn :as edn]))
7+
8+
;; # 2.3 How to get data out of a notebook
9+
10+
(def consistent-data
11+
(map-indexed (fn [index _coll] (str "cell-" index))
12+
(range 10)))
13+
14+
(def data (take 20 (repeat (zipmap (range 10) consistent-data))))
15+
16+
;; ## Writing to a CSV file
17+
18+
;; depends what the data looks like
19+
;; for a seq of maps:
20+
21+
;; headers are not necessarily sorted, put them in whatever order you want here
22+
;; Clojure maps make no guarantees about key order, make sure to order values,
23+
;; i.e. use the same header row to get the values from each map
24+
(let [headers (-> data first keys sort)
25+
rows (->> data (map (fn [row]
26+
(map (fn [header]
27+
(get row header)) headers))))]
28+
(with-open [writer (io/writer "data/csv-output.csv")]
29+
(csv/write-csv writer (cons headers rows))))
30+
31+
;; Tablecloth can also export csvs (among other formats)
32+
(def tc-dataset (tc/dataset data))
33+
34+
(tc/write-csv! tc-dataset "data/tc-output.csv")
35+
36+
;; ## Writing nippy
37+
38+
(tc/write! tc-dataset "data/tc-nippy.nippy")
39+
40+
;; Read this also with tablecloth:
41+
(tc/dataset "data/tc-nippy.nippy")
42+
43+
;; ## Leave data in Clojure files
44+
45+
(->> data pr-str (spit "data/clojure-output.edn"))
46+
47+
;; This can be consumed later with:
48+
(with-open [reader (io/reader "data/clojure-output.edn")]
49+
(edn/read (java.io.PushbackReader. reader)))
50+
51+
;; ## Notebook artifacts
52+
53+
54+
;; HTML pages
55+
;; Other formats, options for exporting notebooks? PDFs?
56+
;; Partial artifacts, e.g. export just a graph
57+
;; Writing to a database?

data/clojure-output.clj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
clojure.lang.LazySeq@ebd34881

data/clojure-output.edn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
({0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"} {0 "cell-0", 7 "cell-7", 1 "cell-1", 4 "cell-4", 6 "cell-6", 3 "cell-3", 2 "cell-2", 9 "cell-9", 5 "cell-5", 8 "cell-8"})

data/csv-output.csv

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
0,1,2,3,4,5,6,7,8,9
2+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
3+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
4+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
5+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
6+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
7+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
8+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
9+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
10+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
11+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
12+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
13+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
14+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
15+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
16+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
17+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
18+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
19+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
20+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
21+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9

data/tc-nippy.n

2.56 KB
Binary file not shown.

data/tc-nippy.nippy

2.56 KB
Binary file not shown.

data/tc-output.csv

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
0,1,2,3,4,5,6,7,8,9
2+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
3+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
4+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
5+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
6+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
7+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
8+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
9+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
10+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
11+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
12+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
13+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
14+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
15+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
16+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
17+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
18+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
19+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
20+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9
21+
cell-0,cell-1,cell-2,cell-3,cell-4,cell-5,cell-6,cell-7,cell-8,cell-9

0 commit comments

Comments
 (0)