A browser-based visualizer for UC Berkeley's datascience library (the Data 8 Table API). Run Python code with Table operations entirely in your browser, with step-by-step visual explanations of what each operation does.
Inspired by PandasTutor.
- Examples Gallery: 13+ pre-built examples with visual cards
- Split Interface: Code editor on left, visualization on right
- Step-by-Step Slideshow: Navigate through operations with arrows
- Browser-based Python: Full Python runtime via Pyodide (no server needed)
- Operation Tracing: See every Table operation with before/after views
- Smart Explanations: Human-readable descriptions for each operation
- Permalink Sharing: Share code via URL
- Export: Download trace data as JSON
- Offline Support: Service worker caches assets after first load
- Error Help: Helpful error messages with troubleshooting tips
- Dark Theme: Clean, accessible interface
- Keyboard Shortcuts: Cmd/Ctrl + Enter to run code
- Node.js v18 or higher (download here)
cd apps/web
npm install
npm run devOpen http://localhost:5173 in your browser.
select(*columns)- Choose specific columnsdrop(*columns)- Remove columnswith_column(label, values)- Add a single columnwith_columns(*args)- Add multiple columnstake(n)- Select first n rows
where(column, value)- Filter rowssort(column, descending=False)- Sort rows
group(column, function)- Group and aggregatepivot(columns, rows, values, function)- Reshape data
join(join_column, other_table)- Combine tables
- Load Examples: Click "Examples" to browse pre-built visualizations
- Write Code: Type or paste Python code in the editor
- Run: Click "Run" or press Cmd/Ctrl + Enter
- Navigate: Use arrows to step through the visualization
- Share: Click "Share" to copy a permalink URL
- Export: Click "Export" to download trace as JSON
- User Guide - Complete guide for students
- Teacher Guide - Classroom use and best practices
- Setup Guide - Installation and troubleshooting
- Development Guide - Developer documentation
- Project Plan - Full roadmap and architecture
┌─────────────────┐
│ React + Vite │ Modern, fast frontend
├─────────────────┤
│ Pyodide │ Python → WebAssembly
├─────────────────┤
│ datascience │ Data 8 Table API
├─────────────────┤
│ table_tracer │ Operation instrumentation
└─────────────────┘
Everything runs client-side - no server needed.
- Frontend: React 18, TypeScript, Vite
- Editor: Monaco Editor (VS Code editor)
- Python Runtime: Pyodide (Python 3.11 in WebAssembly)
- Styling: Modern CSS with dark theme
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
Requires JavaScript and WebAssembly support.
table-function-visualizer/
├── apps/web/ # Main web application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── lib/ # Pyodide integration
│ │ └── App.tsx # Main app
│ ├── public/ # Static assets
│ │ └── sw.js # Service worker
│ └── package.json
├── docs/ # User and teacher guides
│ ├── USER_GUIDE.md
│ └── TEACHER_GUIDE.md
├── SETUP.md # Setup instructions
└── context.md # Project plan
Contributions welcome! This is an educational project for Data 8 students and instructors.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
See LICENSE file.
- PandasTutor for design inspiration
- UC Berkeley Data 8 for the
datasciencelibrary - Pyodide team for Python in the browser
- Monaco Editor for the code editor
This project brings the visual step-by-step approach pioneered by PandasTutor to UC Berkeley's Data 8 datascience library. Special thanks to the PandasTutor team for showing how powerful visual explanations can be for teaching data operations.