背景:為什麼造這個輪子?
做數據分析或者後端開發的同學應該都有過這種痛苦:
- Excel 真的很慢:打開一個 500MB 的 CSV,Excel 要轉圈半天,要是超過 100 萬行,直接報錯或卡死。
- Pandas 查看不便:
df.head()只能看前幾行,想滾動瀏覽、篩選、排序,還得寫代碼。 - 現有工具不順手:Tad 不更新了,D-Tale 功能太重且依賴全量加載。
我非常喜歡 VisiData (一個終端下的數據瀏覽神器),它的核心引擎極快。但我還是習慣用鼠標交互,想要一個現代化的 Web 界面。
於是我利用週末寫了 VisiLens —— 一個本地優先 (Local-First) 的高性能數據瀏覽器。
GitHub 倉庫 (求 Star 🌟): https://github.com/PStarH/VisiLens
核心特性
- 極速加載: 基於 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 🌟): https://github.com/PStarH/VisiLens
核心特性
- 極速加載: 基於 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