SAS ViyaはAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableでデータを絞り込む、where句のような指定をプログラミングから行う方法を解説します。
データベースからテーブルを取得する
まずはSAS Viyaに接続します。
import swat
conn = swat.CAS('server-name.mycompany.com', 5570, 'username', 'password')
次にCASTableを取得します。今回はIRISデータのCSVを利用します。
tbl = conn.loadtable('data/iris.csv', caslib='casuser').casTable
データを絞り込む
例えばpetal_lengthが6.5より大きいデータだけを取得します。
expr = tbl.petal_length > 6.5
このデータを出力します。
expr.head()
これはあくまでも条件を保存しただけの結果になります。
0 0.0
1 1.0
2 1.0
3 0.0
4 1.0
Name: _gt_0_, dtype: float64
では、この絞り込み条件をCASTableに適用します。
newtbl = tbl[expr]
newtbl.head()
そうすると絞り込まれたデータが表示できます。
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 7.7 | 2.6 | 6.9 | 2.3 | virginica |
1 | 7.7 | 2.8 | 6.7 | 2.0 | virginica |
2 | 7.7 | 3.8 | 6.7 | 2.2 | virginica |
3 | 7.6 | 3.0 | 6.6 | 2.1 | virginica |
条件の指定法について
条件は次のようにキーとして渡すこともできます。
newtbl = tbl[tbl.petal_length > 6.5]
newtbl.head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 7.7 | 2.6 | 6.9 | 2.3 | virginica |
1 | 7.7 | 2.8 | 6.7 | 2.0 | virginica |
2 | 7.7 | 3.8 | 6.7 | 2.2 | virginica |
3 | 7.6 | 3.0 | 6.6 | 2.1 | virginica |
条件を追加する
さらに絞り込み条件を追加することもできます。
newbl2 = newtbl[newtbl.petal_width < 2.2]
newtbl2.head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 7.7 | 2.8 | 6.7 | 2.0 | virginica |
1 | 7.6 | 3.0 | 6.6 | 2.1 | virginica |
条件を詳細にする
条件は計算処理を指定できます。
tbl[(tbl.petal_length + tbl.petal_width) * 2 > 17.5].head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 7.7 | 2.6 | 6.9 | 2.3 | virginica |
1 | 7.7 | 3.8 | 6.7 | 2.2 | virginica |
次のように、文字列を変換した上で検索なんて指定も可能です。
tbl[tbl.species.str.upper().str.startswith('SET')].head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.8 | 4.0 | 1.2 | 0.2 | setosa |
1 | 5.7 | 3.8 | 1.7 | 0.3 | setosa |
2 | 5.7 | 4.4 | 1.5 | 0.4 | setosa |
3 | 5.5 | 3.5 | 1.3 | 0.2 | setosa |
4 | 5.5 | 4.2 | 1.4 | 0.2 | setosa |
まとめ
SAS ViyaのCASTableを使えば、SQLのような特殊な書き方を覚えずにPythonプログラミングの範囲で記述できます。条件をダイナミックに変更したり、インタラクティブに分析するのも容易です。ぜひお試しください。