独自API
FireDucksはpandasにはない独自のAPIをいくつか備えています.
pandasとの変換
FireDucksのDataFrameやSeriesはto_pandas
メソッドを持っており,pandasのDataFrameやSeriesへ変換することができます.例えばpandasデータを受け取る外部ライブラリを利用する場合に便利です.
また,pandasのDataFrameやSeriesをFireDucksのものに変換するには,fireducks.pandas.from_pandas
が利用できます.
明示的な中間言語の実行
FireDucksは遅延実行を行います.遅延実行は複数のAPIをまとめて実行することを可能にし,中間言語上での最適化による高速化に重要な機能となっています.
しかし,FireDucksの動作検証として個別のAPIの実行時間を計測したい場合などには,ちょっとした工夫が必要となります.FireDucksでは,ほとんどのAPIは中間言語を生成するだけの処理であるためごく短時間で終わってしまい,APIコールの直前から直後までの時間を測ることでは実際のデータフレーム処理にかかっている時間を計測することができません.
このような場合は,明示的に実行を指示するDataFrame._evaluate
メソッドが利用できます._evaluate
が呼ばれると,その時点までに作られたそのDataFrameに関する中間言語が強制的に実行されます.そのため,計測したい処理の前後で_evaluate
を呼ぶことで,実際の処理の時間が計測できます.
groupbyの処理時間を計測する例を以下に示します.
df = pd.read_csv(...)._evaluate() # read_csvが計測範囲に入らないように終わらせる
t0 = time.time() # 時間計測開始
g = df.groupby(...).sum()._evaluate() # groupby用の中間言語を生成後,即座に実行
t1 = time.time() # 時間計測終了
特徴量生成用API
データフレームの用途のひとつとして,機械学習の前処理である特徴量生成が挙げられます.より良いモデルを作成するには,往々にして,データフレームを様々な方法で加工して学習用の特徴量を生成する必要があり,処理時間が非常に長くなる場合があります.
FireDucksは特徴量生成を高速に行うためのAPIも提供しています.現在は代表的な特徴量生成手法である以下のふたつの機能があります.これらの機能はpandasのAPIを組み合わせて実装することができますが,FireDucksでは単一のAPIとして提供されており,独自のチューニングがあらかじめ施されているため高速です.各APIの詳細はAPI Docを参照してください.
- 集約特徴量:
fireducks.pandas.aggregate
- マルチターゲットエンコーディング:
fireducks.pandas.multi_target_encoding