nshiab/simple-data-analysis
Fast DuckDB-powered TypeScript library for tabular analysis, geospatial analysis, network graph analysis, vector similarity search, AI, Google Sheets, and data visualization.
概要: TypeScript製の表形式・地理空間・AI支援データ分析ライブラリで、Deno、Node.js、Bun上で動作します。Pandas/Tidyverseにヒントを得たチェーン可能なAPIの背後でDuckDB(インプロセスの分析データベース)をラップし、行単位のLLM処理、埋め込み、RAGなどのオプションのAI機能を追加します。CBCニュースの計算ジャーナリストによって作成されました。彼はPython、R、JSを切り替える代わりに、データ分析と可視化を完全にJavaScriptで行いたいと考えていました。
重要性: JavaScriptは、真剣なデータ作業(pandas、tidyverse、GeoPandas)において、歴史的にPythonやRに遅れを取ってきました。SDAは次の方法でこのギャップを埋めます。
- DuckDBによるパフォーマンス – READMEのベンチマーク(2,200万件の温度記録、33万5千件の地理空間ポイント)によると、SDAは生のDuckDB速度に近い速度で動作し、pandas/tidyverse/GeoPandasを凌駕し、メモリ使用量も少なくなっています。
- パイプライン全体を1つの言語で – 分析、地理空間結合、チャート、マップ、AI拡張はすべて、エコシステムを切り替えることなくTypeScriptで行われます。
- 遅延ロードとクエリ融合 – コア変換はキューに入れられ、単一のSQLステートメントに融合され、ラウンドトリップを削減します。AI/Google/チャートの依存関係は、これらの特定のメソッドが呼び出されたときのみロードされるため、コアのみのユーザーは起動コストを支払いません。
- 組み込みのAI機能(拡張パッケージ内):
aiRowByRow()は列値をLLMに送信し、構造化された応答を保存します(例:都市名から国と大陸を抽出)。aiEmbeddings()はテキストをベクトルに変換し、クラスタリング(HDBSCAN)、ハイブリッド検索、RAGスタイルの質問応答、自然言語クエリをサポートします。Google Gemini、Vertex AI、またはローカルのOllamaモデルは.envで設定できます。 - 公開データソース – Statistics CanadaのテーブルとOpenStreetMap(ローカルファイルまたはOverpassクエリ)用の直接ローダーで、再現性のためにローカルキャッシュを備えています。
内部の仕組み: SDAは duckdb-node-neo を介してDuckDBでSQLを実行し、DuckDB拡張機能(地理空間操作用のspatial、ファジーマッチング、全文検索、ベクトルインデックス)を遅延ロードします。APIは変換用に同期してチェーン可能です。最終的なobserverメソッド( .log() 、 .writeData() 、または結果の取得など)のみを await します。
例(READMEから): カナダの気象観測所のCSVをロードし、列名を変更し、欠損値を削除し、観測所ごとの平均気温を計算し、並べ替え、印刷し、エクスポートします:
const sdb = new SimpleDB();
const data = await sdb
.newTable("temperatures")
.loadData(".../dailyTemperatures.csv")
.renameColumns({ t: "temperature", id: "station" })
.removeMissing({ columns: "temperature" })
.summarize({
columns: "temperature", by: "station", stats: "mean", decimals: 2,
})
.sort({ mean: "desc" })
.log();
await data.writeData("output/averageTemperatures.csv");
await sdb.close();
対象読者: JavaScript/TypeScriptを好み、大規模なデータセットの処理、地理空間結合の実行、チャート/マップの作成、またはLLMによるデータ拡張を、第二のデータ言語を学ばずに行う必要があるデータジャーナリスト、アナリスト、開発者。
READMEの注意事項: これは本格的で実質的なライブラリですが、すべてのPythonユースケースを置き換える完全なデータフレームではありません。AI機能にはAPIキー(Gemini/Vertex/Ollama)が必要であり、READMEにはJSRドキュメントが現在、継承メソッドを省略している(既知の上流の制限)と記載されています。インストールはNode/Bun/Deno用のJSRまたはnpmを介して行われ、新しいプロジェクトを開始するためのコンパニオンスキャフォールディングツール( setup-data-project )があります。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト