Python
SAS
AI

casTableでGroup Byを使う

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

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


テーブルの作り方

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

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

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

tbl = out.casTable


グルーピングする

グルーピングには set_param メソッドを使います。

tbl.set_param('groupby', ['Name'])

または groupby メソッドも使えます。

tbl = tbl.groupby(['Name'])

こうするとテーブル情報にも追加されます。

CASTable(

'IRIS',
caslib='CASUSER(demo@sas.com)',
groupby=['Name'])
[['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Name']]

そしてグルーピングした後のデータの取りだし方(通常はsum/max/min/averageなどになるかと思います)を指定します。

tbl.Summary(subset=['min', 'max'])

そうするとグルーピング対象の Name ごとにデータが表示されます。デフォルトではNameごとにテーブルが分かれます。

Column
Min
Max

Iris-setosa
SepalLength
4.3

Iris-setosa
SepalWidth
2.3

Iris-setosa
PetalLength
1.0

Iris-setosa
PetalWidth
0.1

Column
Min
Max

Iris-versicolor
SepalLength
4.9

Iris-versicolor
SepalWidth
2.0

Iris-versicolor
PetalLength
3.0

Iris-versicolor
PetalWidth
1.0

すべて連結する場合には以下のように concat_bygroups を使います。

tbl.summary(subset=['min', 'max']).concat_bygroups()

Column
Min
Max

Iris-setosa
SepalLength
4.3
5.8

Iris-setosa
SepalWidth
2.3
4.4

Iris-setosa
PetalLength
1.0
1.9

Iris-setosa
PetalWidth
0.1
0.6

Iris-versicolor
SepalLength
4.9
7.0

Iris-versicolor
SepalWidth
2.0
3.4

Iris-versicolor
PetalLength
3.0
5.1

Iris-versicolor
PetalWidth
1.0
1.8

Iris-virginica
SepalLength
4.9
7.9

Iris-virginica
SepalWidth
2.2
3.8

Iris-virginica
PetalLength
4.5
6.9

Iris-virginica
PetalWidth
1.4
2.5


グルーピングを解除する

グルーピングを止める場合は del_param を使ってください。

tbl.del_param('groupby')


グルーピングを行うことで大量のデータであっても素早く確認できるようになります。ぜひ活用してください。

SAS for Developers | SAS