Python
SAS
AI

casTableを条件を指定して取得する

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

機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はそのテーブルオブジェクト(Python版)で情報を絞って取得する方法を紹介します。


テーブルの作り方

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

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

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

tbl = out.casTable


絞り込み条件をPythonで書く

casTableではSQLではなく、Pythonのコードを使ってデータの絞り込みを行えます。

tbl2 = tbl[tbl.SepalLength > 6.0]

複数条件の場合は & で繋ぎます。

tbl2 = tbl[(tbl.SepalLength > 6.0) & (tbl.PetalLength < 5.0)]


casTableの基底プロパティとぶつかった場合

例えばNameというプロパティはcasTableオブジェクトの基底プロパティです。この場合は ['Name'] といった形で指定します。

tbl2 = tbl[tbl['Name'] != 'Iris-setosa']

もし tbl.Name として指定すると以下のようなエラーが出ます。

tbl2 = tbl[tbl.Name != 'Iris-setosa']

エラーメッセージです。

KeyError                                  Traceback (most recent call last)

<ipython-input-31-035de5eb5d01> in <module>()
----> 1 tbl2 = tbl[tbl.Name != 'Iris-setosa']

/opt/sasinside/anaconda3/lib/python3.6/site-packages/swat/cas/table.py in __getitem__(self, key)
7578
7579 # Everything else
-> 7580 raise KeyError(key)
7581
7582 def groupby(self, by, axis=0, level=None, as_index=True, sort=True,

KeyError: True


WHERE句を書かず、SQLを意識せずにデータの絞り込みや閲覧ができるのは便利ではないでしょうか。Pythonコードとの親和性も高いので、プログラマブルにデータ探索が実現できます。

SAS for Developers | SAS