FrovedisのDataFrameを使ったデータ操作

no.0112021.5.31

 今回はFrovedisのDataFrameを使用した操作についてご紹介します。

 データ分析に際しては、様々なデータ蓄積場所、例えばCSVファイルのような小規模データファイル、構造型・非構造型データベース、Spark、Hadoopといった大規模なデータ保管場所などから必要なデータを取り込み、何らかの前処理を実施します。Pythonではデータの取り込み先として、標準ライブラリが持つList, Dictionary, Tupleなどのデータ形式を選択することができますし、データコンテナとしての柔軟な操作機能を有するNumpyやpandasを使用することも考えられます。
 これらの中で、pandasはラベル付けされたデータ構造、データ整形のための機能をデータ分析者に提供します。pandasを使用して複数テーブルのマージ、データの集約、スライシングを実施した後に、データの統計的情報を確認することやデータ分析アルゴリズムを使った分析に進むことが可能です。ListやDictionary形式に収められたデータを扱うためには大なり小なり処理コードを作る必要に迫られますが、pandasを使うと多くのことをDataFrameが持つ機能を使って実現できます。また多くの場合に当てはまることですが、loop処理によってListやDictionary形式のデータに何らかの変更を加えるより、Numpyのユニバーサル関数やpandasのメソッドを使用するほうがより高速に実施できます。また、大規模なデータになるほどその差は広がります。

 本コラム第9回でFrovedisがSparkの分散メモリ上のデータを使用したデータ分析をSX-Aurora TSUBASAにオフロードできることを書きました。そこまで大規模なデータを扱わない場合はpandasのDataFrameでデータを取り込み、FrovedisのDataFrameに変換します。これに伴いデータはx86からSX-Aurora TSUBASAVector Engineのメモリへ転送されます。そのうえで前処理しFrovedisで分析処理することが可能です。

 FrovedisのDataFrameが提供する機能はpandas版のサブセットに相当します。Select、Join、Sort、Groupbyといった操作機能を提供するほか、pandas DataFrameとの間でデータを受け渡しする関数を使用することができます。必要に応じてNumpyの多次元配列オブジェクトを用いた数学的演算処理やpandasの時系列データの取り扱い、データ入出力機能と連携することで、柔軟なデータ整形を実施します。

 以下、Jupyter notebookを使用しながらFrovedis DataFrameの操作例を見ていきます。

 初めに小規模な架空データを使い、select、sort、groupby等によるデータ操作を実行します。


frovedis_DataFrame_demo

 続いて、KaggleのCovid-19 vaccineデータを使った操作例を見ていきます。


Frovedis_df