Help us understand the problem. What is going on with this article?

casTableに条件を付けてデータを取り出す

More than 1 year has passed since last update.

SAS ViyaはAIプラットフォームになります。Webブラウザ上で機械学習の設計、実行ができるStudioという環境も用意されていますが、開発者はプログラミングコードで開発することも可能です。プログラミング言語はJava/Python/R/SASが選べます。

機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はそのテーブルオブジェクト(Python版)で条件を指定してデータを取得する方法を解説します。

テーブルの作り方

テーブルはCSV、HTML、他のデータベースなどから作れます。

out = sess.upload('Jupyter_Saved_Work/Data/iris.csv')

ファイルをアップロードした後、casTableとして取得します。

iris = out.casTable

条件付けはwhereを使う

SQLと同じようにcasTableでもwhereが使えます。ただし、これはPythonなので、O/Rマッパー風に使います。そこで set_params を使います。

iris.set_params('where', 'SepalLength > 6.8')

またはparamsパラメータに直接設定します。

iris.params.where = 'Name = "Iris-versicolor"'

なお、where を新しく設定すると上書きになってしまうので注意してください。以下の場合、下の条件が有効になります。

iris.set_params('where', 'SepalLength > 6.8')
iris.set_params('where', 'Name = "Iris-versicolor"')

そのため、複数条件を指定する場合には and を使います。

iris.set_params('where', 'SepalLength > 6.8 and Name = "Iris-versicolor"')

計算式を入れる

あるカラム同士を計算した結果を結果に出したい場合には computedvars という定義をします。

iris.set_params('computedvars', ['length_factor'])

そして computedvarsprogram を定義して、カラムの値を指定します。

iris.set_params('computedvarsprogram', 'length_factor = SepalLength * PetalLength')

そうすると結果にlength_factorが追加されます。

iris.fetch(to=3)
SepalLength SepalWidth PetalLength PetalWidth Name length_factor
0 7.0 3.2 4.7 1.4 Iris-versicolor
1 6.4 3.2 4.5 1.5 Iris-versicolor
2 6.9 3.1 4.9 1.5 Iris-versicolor

条件式を確認する

条件式が設定されているかどうかは has_param で確認できます。

iris.has_params('where')
=> True

その内容は get_param で確認できます。

iris.get_param('where')
=> 'Name = "Iris-versicolor"'

条件式を削除する

whereを削除する場合には del を使います。

del iris.params.where

これでwhere条件が消えます。

iris.has_params('where')
=> False

機械学習を実行する前のデータクレンジングなどの時点において、データを細かく確認したい時があるかと思います。whereの他、group byやcomputedvarsなども用意してありますので、これらをぜひ使いこなしてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away