Gold.is aims to tell you what your data looks like in plain human language.
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.
- 🔮 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).
Firefox |
Chrome |
Safari |
Opera |
Edge |
---|---|---|---|---|
>= 52 (Mar 2017) | >= 57 (Mar 2017) | >= 11 (Sep 2017) | >= 44 (Mar 2017) | Not Supported |
- WebAssembly is used to integrate Python 3.8 runtime to the browser using Pyodide. Please check WebAssembly support in your browser at https://caniuse.com/#feat=wasm.
Web Workers are used to run Python scripts in non-main threads. You need to use a browser that supports Web Workers. You can check the browser support at https://caniuse.com/#feat=webworkers.- Due to a known issue with Pyodide, web workers are not being used at the moment. This will cause the browser to freeze when Python code is running.
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
- 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.
- Jeongmin Lee: Project manager / data analyst
- This project is heavily inspired by Pandas Profiling.
Gold.is is built with Next.js and is continuously deployed to Vercel.