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 )があります。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト