SAS ViyaはAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableで動的にカラムを追加する、算出カラムの使い方を解説します。
データベースからテーブルを取得する
まずは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
カラムを追加する
例えば sepal_length と sepal_width を足して2倍する、sepal_factorというカラムを追加します。
tbl['sepal_factor'] = ((tbl.sepal_length + tbl.sepal_width) * 2)
tbl.head()
この内容は次のようになります。確かに計算され、新しいカラムが追加されています。
sepal_length | sepal_width | petal_length | petal_width | species | sepal_factor | |
---|---|---|---|---|---|---|
0 | 7.9 | 3.8 | 6.4 | 2.0 | virginica | 23.4 |
1 | 7.7 | 2.6 | 6.9 | 2.3 | virginica | 20.6 |
2 | 7.7 | 2.8 | 6.7 | 2.0 | virginica | 21.0 |
3 | 7.7 | 3.0 | 6.1 | 2.3 | virginica | 21.4 |
4 | 7.7 | 3.8 | 6.7 | 2.2 | virginica | 23.0 |
さらにカラムを追加します。
tbl['total_factor'] = tbl.sepal_factor + tbl.petal_width + tbl.petal_length
tbl.head()
sepal_length | sepal_width | petal_length | petal_width | species | sepal_factor | total_factor | |
---|---|---|---|---|---|---|---|
0 | 7.9 | 3.8 | 6.4 | 2.0 | virginica | 23.4 | 31.8 |
1 | 7.7 | 2.6 | 6.9 | 2.3 | virginica | 20.6 | 29.8 |
2 | 7.7 | 2.8 | 6.7 | 2.0 | virginica | 21.0 | 29.7 |
3 | 7.7 | 3.0 | 6.1 | 2.3 | virginica | 21.4 | 29.8 |
4 | 7.7 | 3.8 | 6.7 | 2.2 | virginica | 23.0 | 31.9 |
単なる文字列のカラムも追加できます。
tbl['names'] = 'sepal / petal'
tbl.head()
sepal_length | sepal_width | petal_length | petal_width | species | sepal_factor | total_factor | names | |
---|---|---|---|---|---|---|---|---|
0 | 7.9 | 3.8 | 6.4 | 2.0 | virginica | 23.4 | 31.8 | sepal / petal |
1 | 7.7 | 2.6 | 6.9 | 2.3 | virginica | 20.6 | 29.8 | sepal / petal |
2 | 7.7 | 2.8 | 6.7 | 2.0 | virginica | 21.0 | 29.7 | sepal / petal |
3 | 7.7 | 3.0 | 6.1 | 2.3 | virginica | 21.4 | 29.8 | sepal / petal |
4 | 7.7 | 3.8 | 6.7 | 2.2 | virginica | 23.0 | 31.9 | sepal / petal |
動的に追加したカラムを使って、さらに動的なカラムを追加します。
tbl['cap_names'] = tbl.names.str.title()
tbl.head()
sepal_length | sepal_width | petal_length | petal_width | species | sepal_factor | total_factor | names | cap_names | |
---|---|---|---|---|---|---|---|---|---|
0 | 7.9 | 3.8 | 6.4 | 2.0 | virginica | 23.4 | 31.8 | sepal / petal | Sepal / Petal |
1 | 7.7 | 2.6 | 6.9 | 2.3 | virginica | 20.6 | 29.8 | sepal / petal | Sepal / Petal |
2 | 7.7 | 2.8 | 6.7 | 2.0 | virginica | 21.0 | 29.7 | sepal / petal | Sepal / Petal |
3 | 7.7 | 3.0 | 6.1 | 2.3 | virginica | 21.4 | 29.8 | sepal / petal | Sepal / Petal |
4 | 7.7 | 3.8 | 6.7 | 2.2 | virginica | 23.0 | 31.9 | sepal / petal | Sepal / Petal |
まとめ
SQLでも同様に計算したカラムを追加できますが、CASTableでは計算したカラムを使って、さらにカラムを追加できます。複雑な計算処理を行ったカラムも簡単に実現できますので、皆さんの分析に役立ててください。