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
ソートする
ソートは sort_values
メソッドを使います。
tbl.sort_values(['sepal_length', 'sepal_width'])
この状態でデータを確認してみます。 head
メソッドは最初の行から取得します。
sorttbl.head(10)
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 4.3 | 3.0 | 1.1 | 0.1 | setosa |
1 | 4.4 | 2.9 | 1.4 | 0.2 | setosa |
2 | 4.4 | 3.0 | 1.3 | 0.2 | setosa |
3 | 4.4 | 3.2 | 1.3 | 0.2 | setosa |
4 | 4.5 | 2.3 | 1.3 | 0.3 | setosa |
5 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
6 | 4.6 | 3.2 | 1.4 | 0.2 | setosa |
7 | 4.6 | 3.4 | 1.4 | 0.3 | setosa |
8 | 4.6 | 3.6 | 1.0 | 0.2 | setosa |
9 | 4.7 | 3.2 | 1.6 | 0.2 | setosa |
逆順は tail
メソッドを使います。
sorttbl.tail(5)
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
145 | 7.7 | 2.6 | 6.9 | 2.3 | virginica |
146 | 7.7 | 2.8 | 6.7 | 2.0 | virginica |
147 | 7.7 | 3.0 | 6.1 | 2.3 | virginica |
148 | 7.7 | 3.8 | 6.7 | 2.2 | virginica |
149 | 7.9 | 3.8 | 6.4 | 2.0 | virginica |
昇順降順を指定する
ascending
オプションで並び順を細かく指定できます。
sorttbl = tbl.sort_values(['sepal_length', 'sepal_width'], ascending=[False, True])
これでデータを確認すると、データの並び順が変わっているはずです。
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 7.9 | 3.8 | 6.4 | 2.0 | virginica |
1 | 7.7 | 2.6 | 6.9 | 2.3 | virginica |
2 | 7.7 | 2.8 | 6.7 | 2.0 | virginica |
3 | 7.7 | 3.0 | 6.1 | 2.3 | virginica |
4 | 7.7 | 3.8 | 6.7 | 2.2 | virginica |
5 | 7.6 | 3.0 | 6.6 | 2.1 | virginica |
6 | 7.4 | 2.8 | 6.1 | 1.9 | virginica |
7 | 7.3 | 2.9 | 6.3 | 1.8 | virginica |
8 | 7.2 | 3.0 | 5.8 | 1.6 | virginica |
9 | 7.2 | 3.2 | 6.0 | 1.8 | virginica |
まとめ
データのソートは基本的な操作になります。sort_valuesを使いつつ、オプションで細かく条件指定を行ってください。