1. ホーム
  2. javascript

[解決済み] Python Pandasと同等の機能をJavaScriptで実現

2022-07-27 08:56:22

質問

このCSVの例では。

   Source,col1,col2,col3
   foo,1,2,3
   bar,3,4,5

私が使っているPandasの標準的な方法はこうです。

  1. CSVをパースする

  2. データフレームにカラムを選択する ( col1col3 )

  3. カラムを加工する(例えば col1col3 )

Pandasのように、それを実現するJavaScriptライブラリはないのでしょうか?

どのように解決するのですか?

このWikiでは、多くの pandas -のような Javascript ライブラリをまとめ、比較します。

一般的には d3 Javascript ライブラリです。 d3 は、Javascript でデータを扱うのにとても便利な swiss army knife で、ちょうど pandas がPythonに役立つのと同じようにです。例えば d3 のように頻繁に使われます。 pandas のように頻繁に使用され、たとえ d3 は、DataFrame/Pandas の置き換えとは言えません。 (すなわち d3 は同じ API を持っていないのです。 d3 には Series / DataFrame のような振る舞いをします。 pandas )

Ahmedの回答は、d3がどのように使用できるかを説明しています。 を使用してDataFrameの機能を実現する方法について説明しています。 LearnJsData のようなものに触発されたものです。 d3lodash .

DataFrameスタイルのデータ変換(分割、結合、グループ化など)に関しては、以下にJavascriptライブラリの簡単な一覧を示します。

いくつかのライブラリは、Node.js、別名サーバーサイドのJavascriptであり、いくつかは、ブラウザ互換のクライアントサイドのJavascriptであり、いくつかは、Typescriptであることに注意してください。

いくつかのライブラリは、Node.js、別名サーバーサイドJavascript、ブラウザ互換のクライアントサイドJavascript、およびTypescriptです。

  • danfo-js
    • から ヴィグネッシュの回答
    • danfo (これはしばしばインポートされて dfd ); 基本的な DataFrame タイプのデータ構造を持っており、直接プロットする機能を持ちます。
    • によって構築されています。 チームによって構築されました。 : "Danfo.jsの主な目標の1つは、データ処理、機械学習、およびAIツールをJavaScript開発者に提供することです。... NumpyやPandasのようなオープンソースライブラリ..."。
    • pandas の上に構築されています。 numpy 同様に danfo-jstensorflow-js
  • pandas-js
    • アップデイト pandas-js のレポはしばらく更新されていません。
    • から 鋼鉄 フェラス の回答
    • pandas.jsは、Pythonのpandasライブラリを模倣したオープンソース(実験的)なライブラリです。それはNumPyの論理的な同等物としてImmutable.jsに依存しています。pandas.jsの主なデータオブジェクトは、Pythonのパンダのように、シリーズとDataFrame.quotです。
  • データフレーム-js
    • DataFrame-jsは、javascriptとデータサイエンスのための不変のデータ構造であるDataFrameを提供します。
  • データフォージ
  • jsdataframe
    • Jsdataframeは、RのデータフレームとPythonのPandasにインスパイアされたJavaScriptのデータ処理ライブラリです。
  • データフレーム
    • グループ化したり、縮小したりして、データを探索します。
  • SQL フレーム
    • データフレームがブラウザで SQL に対応します。
    • SQL Frames はローコードのデータ管理フレームワークで、ブラウザに直接埋め込むことができ、リッチなデータの視覚化と UX を提供します。複雑な DataFrame は、使い慣れた SQL コンストラクトを使用して構成することができます。強力な分析エンジンを内蔵しており、データソースの形状や頻度を問わず、ブラウザ上で直接分析することができます。また、構成されたDataFrameのロジックをSQLにトランスパイルすることにより、ビッグデータバックエンドへの拡張が可能です。

そして、この質問にたどり着いた後、ここで他の回答を確認し、さらに検索してみると、以下のようなオプションがありました。

  • JSでApacheの矢印
    • ユーザーBack2Basicsの提案に感謝します。
    • Apache Arrowは、フラットおよびネストされたデータのベクトルとテーブルのようなコンテナをエンコードするためのカラムナーメモリレイアウトの仕様です。Apache Arrowは大規模なインメモリのカラムナーデータのための新しい標準です(Spark, Pandas Drill, Graphistry, ...)のための新しい標準です。
  • ポーラー
    • Polars は、非常に高速な DataFrames ライブラリです。 Rustで実装されています。 を使用しています。 Apache Arrow Columnar Format をメモリモデルとして使用します。
  • 観測可能
    • 一見すると JS の代替として、IPython/Jupyter の ノートブック"
    • Observableのページは、quot;反応性プログラミング、quot;コミュニティ、quot;Webプラットフォーム、quotを約束しています。
    • 5分間のイントロを見る はこちら
  • portal.js (以前は recline からのものです。 ルーファスの答え )
    • は古くなっている可能性があります。 DataFrame APIは使用しません。
    • は時代遅れかもしれません。 その代わり、quot;Multiview" (the UI) API を強調しています。(jQuery/DOM モデルに似ています)これは jQuery を必要としませんが、ブラウザを必要とします! その他の例
    • は古くなっている可能性があります。 また、その MVC 的なアーキテクチャ バックエンド (すなわちデータベース接続) を含む。
  • js-データ
    • より多くの ORM ! ほとんどの場合 モジュールの は異なるデータに対応する ストレージ 質問 ( js-data-mongodb , js-data-redis , js-data-cloud-datastore ) 、ソート、フィルタリング、など。
    • プラス面では、Node.jsを最優先して動作します; "Works in Node.js and in the Browser."
  • 味噌 (別の提案として ルーファス )
  • AlaSQL
    • AlaSQLはJavascript用のオープンソースSQLデータベースで、リレーショナルデータとスキーマレスデータの両方に対応し、クエリの速度とデータソースの柔軟性に重点を置いています。ブラウザ、Node.js、Cordova.quotで動作します。
  • いくつかの思考実験。

以下は、上記の選択肢を検討するために使用した基準です。

  • 一般的な基準
    • 言語 (NodeJS vs ブラウザ JS vs タイプスクリプト)
    • 依存関係(基礎となるライブラリ/AJAX/リモートAPIを使用する場合など)
    • アクティブにサポートされている (アクティブなユーザーベース、アクティブなソースリポジトリなど)
    • JS ライブラリのサイズ/速度
  • パンダの基準である R比較
    • パフォーマンス
    • 機能性/柔軟性
    • 使いやすさ
  • Pandas / Dataframe APIとの類似性
    • 具体的には、彼らの 主な機能
    • データサイエンス重視
    • ビジュアライゼーション機能搭載
    • 以下のような他のツールと組み合わせての統合を実証しています。 Jupyter (対話型ノートブック)など