博客 / 詳情

返回

拋棄 Excel?基於 VisiData 內核的 Python 本地高性能數據瀏覽器

背景:為什麼造這個輪子?

做數據分析或者後端開發的同學應該都有過這種痛苦:

  1. Excel 真的很慢:打開一個 500MB 的 CSV,Excel 要轉圈半天,要是超過 100 萬行,直接報錯或卡死。
  2. Pandas 查看不便df.head() 只能看前幾行,想滾動瀏覽、篩選、排序,還得寫代碼。
  3. 現有工具不順手: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

背景:為什麼造這個輪子?

做數據分析或者後端開發的同學應該都有過這種痛苦:

  1. Excel 真的很慢:打開一個 500MB 的 CSV,Excel 要轉圈半天,要是超過 100 萬行,直接報錯或卡死。
  2. Pandas 查看不便df.head() 只能看前幾行,想滾動瀏覽、篩選、排序,還得寫代碼。
  3. 現有工具不順手: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
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.