Skip to content

Storytelling of datasets with Python, in the browser, without a server!

License

Notifications You must be signed in to change notification settings

subwaymatch/gold-is

Repository files navigation

gold-logo-with-text@2x

Deepscan Badge Codacy Badge License: MIT

What is it?

Gold.is aims to tell you what your data looks like in plain human language.

Note on Pyodide Version

This app runs Pyodide in the main thread which frequently blocks the UI. This design decision was due to a technical issue with using Web Workers in Pyodide version 0.15. This issue has been fixed in the latest versions of Pyodide (0.18 or higher). If you choose to build a similar app, you should run Pyodide inside a Web Worker.



image

Features

  • 🔮 No need to run a backend server to run Jupyter notebooks or Python - Gold.is uses Pyodide to run Python 3.8 in the browser.
  • ✨ Efficient data anlysis using pandas in the browser.
  • 📊 Visualize data with Victory, a set of modular charting components for React (and React Native).
  • 🏃 Parallel computations using numpy under the hood - fast!
  • ❌ Drop any columns you don't need before running the analysis
  • ↔️ Efficient data-sharing between JS and Python. Arrays addresses are shared between JS and Python instead of mem-copying (https://pyodide.readthedocs.io/en/latest/using_pyodide_from_javascript.html).

Browsers Support

Firefox
Firefox
Chrome
Chrome
Safari
Safari
Opera
Opera
IE / Edge
Edge
>= 52 (Mar 2017) >= 57 (Mar 2017) >= 11 (Sep 2017) >= 44 (Mar 2017) Not Supported

Want to do your own thang?

First, clone the repository.

$ git clone https://github.com/subwaymatch/gold-is.git
$ cd gold-is

Install dependencies. I use yarn, but feel free to use npm.

$ yarn

Run the development server. This will launch a development server at port 3000.

$ yarn dev

To build,

$ yarn build

To-do Items

  • Increase URL Import File Size Limit: Currently, CSV file download via URL is capped at 5MB. This is due to a payload limit on Vercel.
  • Example Datasets: Add more example datasets.
  • Correlation between Columns: Add visualizations to display relationships between different columns.
  • *Web Workers: Use web workers to run Python (pyodide). This is dependent on the bug fix of a known issue.

Screenshots

Homepage Screenshot


Load Data Page Screenshot


Select Columns Page Screenshot


Results Page Screenshot


Column Details Screenshot

Acknowledgements

  • Jeongmin Lee: Project manager / data analyst
  • This project is heavily inspired by Pandas Profiling.

Deployment

next-vercel-illustration

Gold.is is built with Next.js and is continuously deployed to Vercel.