PandasとApache Sparkを比較

    「Pandas」と「Apache Spark」の概要

    「Pandas」と「Apache Spark」はデータ分析基盤機能を提供します。

    ■「Pandas」とは

    PandasはPython用データ分析ライブラリです。

    データフレーム形式(2次元テーブル形式)を扱うことができ、特に時系列データ分析に向いています。

    「Python with Pandas」は、数値処理/統計処理/機械学習などを行う際に「NumPy」などと共に利用され、「金融」「ニューロサイエンス」「経済」「統計/分析」などの幅広い学術および商用ドメインで利用されています。

    ■「Apache Spark」とは

    Apache Sparkはインメモリ高速分散処理プラットフォームで、大規模データ処理用統合分析機能を提供します。

    「クラスタ全体をプログラミングするためのインターフェース」を提供し、「Java/Scala/Python/R言語用高水準API」「SQLおよび構造化データ処理機能」「機械学習機能」「グラフデータ処理機能」「ストリーミング機能」などの高機能なライブラリを搭載しています。

    ユースケース比較

    ■Pandas

    データセットが小さい場合はPandasが正しい選択となります。

    使いやすく、広く理解され、効率的で、よく管理されています。

    並列化の管理コストがオーバーヘッドをもたらすため、計算にかかる時間が100ミリ秒未満の場合、並列化せずに利用することが推奨されています。

    Pandasを高速化しようとしている多くの人々は並列処理を必要としません。多くの場合、「テキストデータのエンコード」「効率的なファイル形式の使用」「groupby.applyの回避」などの手法で、並列処理に切り替えるよりもPandasを効果的に高速化できます。

    ■Apache Spark

    大きなデータに対する「フィルタリング」「クリーニング」「集計」などの処理が必要な場合は、Apache Sparkのような並列データフレームを使用することで線形の高速化が期待できます。

    並列処理化は管理オーバーヘッドが発生するため、「20コアのコンピュータを使用したら20倍の高速化」「1000コアのクラスタを使用したら1000倍の高速化」とはならないまでも、処理速度の向上は期待できます。

    並列ソリューションは期待していたほどの性能を発揮できないケースが多々あります。ほとんどの分散システムでは、最適に実行するためにさまざまな調整作業が必要となります。

     

    参考元サイト
    Dask Working Notes →High level performance of Pandas, Dask, Spark, and Arrow

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

    「Pandas」基本情報

    概要

    Pandas(パンダス)とは、Python用データ分析ライブラリです。高性能で使いやすいデータ構造とデータ解析ツールを提供します。データフレーム形式(2次元テーブル形式)を扱うことができ、特に時系列データ分析に向いています。

    基本説明

    Pandasは、主として、Excelのような2次元テーブルを対象とするライブラリです。R言語に類似するデータフレームを提供します。

    データフレームで保存されたデータは操作しやすく、さまざまな分析を簡単に行えます。特に複雑な統計処理を数行で記述できるようになり、平均/標準偏差なども1つのコマンドで算出できます。

    「Python with Pandas」は、数値処理/統計処理/機械学習などを行う際に「NumPy」などと共に利用され、「金融」「ニューロサイエンス」「経済」「統計/分析」などの幅広い学術および商用ドメインで利用されています。

    TOPに戻る

    主な特徴

    データフレーム形式

    データフレームとは行と列を持っており、「RDBのテーブル」「CSV」「Excel」のような形式です。

    Pandasは、データフレーム形式でデータを扱い、列方向に各項目を保持して、行方向に実際に観測されたデータなどを記録していきます。

    テーブルのような形式でデータを扱うため、データ操作もSQLとの対比として分かりやすいメリットがあります。

    高速処理

    Pandasは、Cython/C言語で実装されており、高速処理を行えます。

    豊富な関数/ライブラリ/ツール

    Pandasと連携できる豊富な関数/ライブラリ/ツールが用意されています。

    主な機能

    ・DataFrameオブジェクト---統合インデックス作成による高速で効率的なデータ操作

    ・データアクセス---メモリ内のデータ構造と異なるフォーマット間でデータを読み書き(CSVファイル/テキストファイル/Microsoft Excel/SQLデータベース/HDF5形式など)

    ・データ統合処理---計算でラベルベースの自動整列を取得し、乱雑なデータを整然としたフォームに変換

    ・データセットの柔軟な再形成およびピボット

    ・インテリジェントラベルベース---スライシング、ファンシーインデックス、大規模データセットのサブセット

    ・列操作---サイズの変更可能性のためにデータ構造体から挿入および削除

    ・階層軸インデックス---低次元のデータ構造で高次元のデータを扱う直感的な方法を提供

    ・時系列関数---日付範囲の生成/変換、移動ウィンドウ統計、移動ウィンドウ線形回帰

    TOPに戻る

    同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Numpy」「Scipy」など。

    TOPに戻る

    オフィシャルサイト

    オフィシャルサイト

    →Pandas(Python Data Analysis Library)

    ライセンス情報

    Pandasのライセンスは「BSD 3-Clause License」です。

    詳細について、こちらを参照ください。
    →Pandas →Package overview →License

    ダウンロード

    →Pandas →Get pandas!

    TOPに戻る

    参考元サイト

    TOPに戻る

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。


    「Apache Spark」基本情報

    ■概要

    Apache Spark(アパッチスパーク)とは、インメモリ高速分散処理プラットフォームで、大規模データ処理用統合分析機能を提供します。

    ■基本説明

    Apache Sparkは、オープンソースの分散型クラスタコンピューティングフレームワークです。「高速」かつ「汎用的」であることを目標に設計されており、Java派生言語「Scala」で実装されています。

    「クラスタ全体をプログラミングするためのインターフェース」を提供し、「Java/Scala/Python/R言語用高水準API」「SQLおよび構造化データ処理機能」「機械学習機能」「グラフデータ処理機能」「ストリーミング機能」などの高機能なライブラリを搭載しています。

    ■経緯

    ・2014年 初版リリース

    Sparkのコードベースはカリフォルニア大学バークレー校のAMPLabで開発されました。その後、Apache Software Foundationに寄贈され、Apacheトップレベルプロジェクトの1つとして開発が進められています。

    ■ユースケース

    機械学習

    Apache Sparkは「RDD(Resillient Distributed Datasets)」という独自キャッシュ機構を搭載しています。分散メモリRDDを活用することで、機械学習のような特定のデータに対して繰り返しアクセスするような処理を得意としています。

    リアルタイム処理

    Apache Sparkには、リアルタイム処理を実現するためのフレームワークも備わっています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →Apache Spark(Unified Analytics Engine for Big Data)

    ライセンス情報

    Apache Sparkのライセンスは「Apache License 2.0」です。

    詳細について、こちらを参照ください。
    →GitHub →apache/spark →LICENSE

    動作環境

    Apache Sparkは「Windows」「Linux」「macOS」で動作します。

    ダウンロード

    →Apache Spark →Download Apache Spark

    導入事例

    Apache Sparkは、1000を超える組織やプロジェクトで採用されています。

    →Apache Spark →Project and Product names using "Spark"

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Apache Hadoop」「Apache Storm」など。