背景:为什么造这个轮子?
做数据分析或者后端开发的同学应该都有过这种痛苦:
- Excel 真的很慢:打开一个 500MB 的 CSV,Excel 要转圈半天,要是超过 100 万行,直接报错或卡死。
- Pandas 查看不便:
df.head()只能看前几行,想滚动浏览、筛选、排序,还得写代码。 - 现有工具不顺手:Tad 不更新了,D-Tale 功能太重且依赖全量加载。
我非常喜欢 VisiData (一个终端下的数据浏览神器),它的核心引擎极快。但我还是习惯用鼠标交互,想要一个现代化的 Web 界面。
于是我利用周末写了 VisiLens —— 一个本地优先 (Local-First) 的高性能数据浏览器。
GitHub 仓库 (求 Star 🌟): github.com/PStarH/Visi…
核心特性
- 极速加载: 基于 VisiData 强大的内核,支持百万级数据秒开。
- 数据安全: 纯本地运行 (
localhost),数据文件绝对不会上传到任何云端,公司敏感数据也能放心看。 - 格式通吃: 支持 CSV, Parquet, Excel (.xlsx), JSON, JSONL, SQLite 等多种格式。
- 交互友好: 支持列排序、正则筛选、列类型转换 (Int/Float/Date),右键菜单操作。
技术实现:为什么能这么快?
很多 Web 版 CSV 查看器卡顿,是因为把所有数据都发给了前端。VisiLens 做了两个层面的优化:
1. 后端 (FastAPI + VisiData)
我没有重新造轮子,而是复用了 VisiData 的 Core。VisiData 在处理大文件时使用了流式处理和内存映射,非常高效。 FastAPI 仅作为一个“桥梁”,前端请求哪一页的数据,后端就只切片返回哪一页的数据 (Pagination),内存占用极低。
2. 前端 (React + Virtualization)
前端使用了 虚拟滚动 (Virtual Scrolling) 技术。
哪怕有 100 万行数据,浏览器 DOM 树中永远只渲染你屏幕上看到的那几十行 <div>。当你滚动时,动态替换内容。这保证了无论数据量多大,滚动都丝般顺滑,不会炸内存。
快速上手
VisiLens 是一个 Python 包,直接用 pip 安装即可:
# 需要 Python 3.10+
pip install visilens
背景:为什么造这个轮子?
做数据分析或者后端开发的同学应该都有过这种痛苦:
- Excel 真的很慢:打开一个 500MB 的 CSV,Excel 要转圈半天,要是超过 100 万行,直接报错或卡死。
- Pandas 查看不便:
df.head()只能看前几行,想滚动浏览、筛选、排序,还得写代码。 - 现有工具不顺手:Tad 不更新了,D-Tale 功能太重且依赖全量加载。
我非常喜欢 VisiData (一个终端下的数据浏览神器),它的核心引擎极快。但我还是习惯用鼠标交互,想要一个现代化的 Web 界面。
于是我利用周末写了 VisiLens —— 一个本地优先 (Local-First) 的高性能数据浏览器。
GitHub 仓库 (求 Star 🌟): github.com/PStarH/Visi…
核心特性
- ⚡️ 极速加载: 基于 VisiData 强大的内核,支持百万级数据秒开。
- 🔐 数据安全: 纯本地运行 (
localhost),数据文件绝对不会上传到任何云端,公司敏感数据也能放心看。 - 🛠 格式通吃: 支持 CSV, Parquet, Excel (.xlsx), JSON, JSONL, SQLite 等多种格式。
- 🖱 交互友好: 支持列排序、正则筛选、列类型转换 (Int/Float/Date),右键菜单操作。
技术实现:为什么能这么快?
很多 Web 版 CSV 查看器卡顿,是因为把所有数据都发给了前端。VisiLens 做了两个层面的优化:
1. 后端 (FastAPI + VisiData)
我没有重新造轮子,而是复用了 VisiData 的 Core。VisiData 在处理大文件时使用了流式处理和内存映射,非常高效。 FastAPI 仅作为一个“桥梁”,前端请求哪一页的数据,后端就只切片返回哪一页的数据 (Pagination),内存占用极低。
2. 前端 (React + Virtualization)
前端使用了 虚拟滚动 (Virtual Scrolling) 技术。
哪怕有 100 万行数据,浏览器 DOM 树中永远只渲染你屏幕上看到的那几十行 <div>。当你滚动时,动态替换内容。这保证了无论数据量多大,滚动都丝般顺滑,不会炸内存。
快速上手
VisiLens 是一个 Python 包,直接用 pip 安装即可:
# 需要 Python 3.10+
pip install visilens