[ANN] Julia Data Science Book and Books.jl

@rikh , @lazarusA and I are happy to announce that our book Julia Data Science is now available on Amazon.com.

We ve created this book to make it easier for our collegues and friends to pick up Julia. Especially for people new to Julia, it can be difficult to figure out what package to use and how the packages work together. Therefore, we focussed on Julia basics, DataFrames.jl , CSV.jl , XLSX.jl and Makie.jl because these are the main data manipulation and visualization packages that can solve many problems.

To make it easier to create the book, we’ve used Books.jl. This package solves multiple problems that @rikh experienced with similar packages. Specifically:

  1. The package can generate HTML and PDF from your text and code. Code is evaluated for you and outputs are embedded (like Jupyter, Rmarkdown, Weave.jl or Franklin.jl ).
  2. The package fully supports code written inside your own package. So, it can grab code definitions from your own package and display them inside the book. Creating a package for your book makes it easy to combine your book with other tools such as CompatHelper and Test .
  3. The package fully supports Revise.jl . All code changes are tracked and change your output immediately.
  4. The package is aimed at being used in CI. If you set fail on error to true and have missing cross-references, code which throws an error or invalid PDF syntax, then CI will fail. This ensures that if CI passes then you can be quite sure that your book looks good.

Thanks to all the people who provided feedback and sometimes even PRs to the book and Books package.


Thank you @rikh for your additional awesome contribution, Books.jl, a must see package.


Purchased. :pray:t2:


Thank you. This is a well written introduction to working with Julia for data science. I’ve been keeping so many bookmarks to forum posts, to blog posts by Bogumił Kamiński, to package documentation, etc… However, for those beginning with Julia this can be overwhelming. This resource (and others like it) will help introduce new users to this fantastic language.


it’s a great book. Can I leave a suggestion for the next edition? I would add on this page Data Visualization with Makie.jl - Julia Data Science a quick sentence on how to actually view a plot produced with Makie. I wasted a good 30 minutes before i saw here Basic Tutorial that I’d best do this in VScode.


Thank you. Good feedback and it’s online: https://github.com/JuliaDataScience/JuliaDataScience/pull/200.

We‘ve discussed how quick we should be updating the physical book. Updating the version on Amazon takes about 10 minutes which will be printed a few hours later. The counterargument is that it wouldn’t be good for readers in a class who all have a slightly different version. So I think it’s a difficult choice and thoughts are welcome


Great - in fact I was looking for the repo but couldn’t find it. Good it’s in your list. I would do as you suggest ie update the physical book only every couple of months (say) but have a man up to date version online?


My copy’s going to be out of date before I’ve even finished reading it… :joy:

Still, I’ve got a first edition. :+1:t2:


Yes, noted. Another reason to not update it so quickly :slightly_smiling_face:

1 Like

We will be updating if frequently in the online version at juliadatascience.io. But the paperback editions will have a different lifetime cycle. We would launch a 2nd edition if we have extra content to put or if DataFrames.jl, Julia or Makie.jl have been updated/broken the API so that we NEED to do a 2nd edition.

Today I started, with the help of some students here in Brazil, translating the book to Portuguese. It will be the same as the English version (free and opensourced online, with a paperback on Amazon.com.br). We are looking for volunteers to translate it to Spanish (we would aknowledge him/her/they as the translator inside the HTML and PDF).


Books.jl v2 was released in the past weekend. Version 2 closes multiple long-standing issues. Most noteworthy:

  • Syntax highlighting is disabled for output blocks in both HTML and PDF. This makes the books and websites look much cleaner.
  • The output is printed via ProgressMeter.jl instead of a dump to the console. This avoids a lot of scrolling when generating the book.
  • It is now much easier to decide to run only one code block. Useful, for example, if a code block fails.
  • There is now a helper function entr_gen which can be used to track your book for changes. With this, you can point the function to a part of your book and start writing code and text. Each time that you save the file, Books.jl will evaluate the file and update the live-served webpages.
  • All code is now always evaluated in Main. There used to be an option to pass another module to gen to evaluate the code in, but this turned out to be complex and less useful.
  • Yggdrasil is now used for Tectonic so Tectonic will automatically update with Yggdrasil and supports ARM via their build system (pandoc-crossref doesn’t yet unfortunately)
  • docx is removed because, well, it’s docx
  • install_dependencies is avoided by passing JuliaMono directly into the TeX file. This avoids the need for a globally installed JuliaMono
  • The conversion of plotting objects to images is now managed via multiple dispatch instead of Requires.jl. The drawback is that it takes a bit more logic on the book author side, but given that a book is a long-term project, it is hopefully not too bad. The benefit is that it provides authors with more flexibility.

Does Books.jl support LaTeX and equation numbering?

Yep, see https://huijzer.xyz/Books.jl/demo.


I seem to remember that this project had been put into “maintenance mode”. But I can’t see that message any more… :thinking: But I’m very glad to see so much “maintenance” :joy:


Books is back??? HOORAYY!!! :tada: :tada: :tada: I loved the project and glad to see it resurrected!


Haha :joy: Thanks both!

1 Like