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
ソートする
テーブルをソートする方法です。sort_valuesを使って別なオブジェクトを作ります。
sorttbl = tbl.sort_values(['SepalLength', 'SepalWidth'])
データを確認します。ソートされているのが分かります。
sorttbl.head(5)
SepalLength | SepalWidth | PetalLength | PetalWidth | Name |
---|---|---|---|---|
0 | 4.3 | 3.0 | 1.1 | 0.1 |
1 | 4.4 | 2.9 | 1.4 | 0.2 |
2 | 4.4 | 3.0 | 1.3 | 0.2 |
3 | 4.4 | 3.2 | 1.3 | 0.2 |
4 | 4.5 | 2.3 | 1.3 | 0.3 |
最後のデータを確認する
headは頭からのデータを出しますが、tailは逆に最後のデータを出力します。
sorttbl.tail(5)
SepalLength | SepalWidth | PetalLength | PetalWidth | Name |
---|---|---|---|---|
145 | 7.7 | 2.6 | 6.9 | 2.3 |
146 | 7.7 | 2.8 | 6.7 | 2.0 |
147 | 7.7 | 3.0 | 6.1 | 2.3 |
148 | 7.7 | 3.8 | 6.7 | 2.2 |
149 | 7.9 | 3.8 | 6.4 | 2.0 |
一部のカラムのデータだけを見る
カラムを取り出して、そのカラムのデータだけを閲覧できます。
col = sorttbl['SepalWidth']
col.head(3)
1カラムのデータだけ見られます。
0 3.8
1 2.6
2 2.8
Name: SepalWidth, dtype: float64
複数のカラムを指定することもできます。
cols = sorttbl[['SepalWidth', 'PetalWidth', 'Name']]
cols.head(3)
これで3つのカラムが取れます。
SepalWidth | PetalWidth | Name | |
---|---|---|---|
0 | 3.8 | 2.0 | Iris-virginica |
1 | 2.6 | 2.3 | Iris-virginica |
2 | 2.8 | 2.0 | Iris-virginica |
locメソッドを使うと、あるカラムからあるカラムまでのデータを取得できます。
sorttbl.loc[:, 'SepalLength':'PetalLength'].head()
この実行結果は以下のようになります。
SepalLength | SepalWidth | PetalLength | |
---|---|---|---|
0 | 7.9 | 3.8 | 6.4 |
1 | 7.7 | 2.6 | 6.9 |
2 | 7.7 | 2.8 | 6.7 |
3 | 7.7 | 3.0 | 6.1 |
4 | 7.7 | 3.8 | 6.7 |
icocはカラム名ではなくインデックスで指定します。0番目のカラムから3つのカラムといった指定をします。
sorttbl.iloc[:, 0:3].head()
SepalLength | SepalWidth | PetalLength | |
---|---|---|---|
0 | 7.9 | 3.8 | 6.4 |
1 | 7.7 | 2.6 | 6.9 |
2 | 7.7 | 2.8 | 6.7 |
3 | 7.7 | 3.0 | 6.1 |
4 | 7.7 | 3.8 | 6.7 |
ixでは名前とカラム数を組み合わせます。
sorttbl.ix[:, 0:'PetalLength'].head()
SepalLength | SepalWidth | PetalLength | |
---|---|---|---|
0 | 7.9 | 3.8 | 6.4 |
1 | 7.7 | 2.6 | 6.9 |
2 | 7.7 | 2.8 | 6.7 |
3 | 7.7 | 3.0 | 6.1 |
4 | 7.7 | 3.8 | 6.7 |
検索条件を指定する
whereに相当するデータの取得方法です。検索条件をPythonのコードとして表現します。
expr = sorttbl.PetalLength > 6.5
newtbl = sorttbl[expr]
newtbl.head()
これで検索条件にマッチするデータだけを取り出せます。
SepalLength | SepalWidth | PetalLength | PetalWidth | Name | |
---|---|---|---|---|---|
0 | 7.7 | 2.6 | 6.9 | 2.3 | Iris-virginica |
1 | 7.7 | 2.8 | 6.7 | 2.0 | Iris-virginica |
2 | 7.7 | 3.8 | 6.7 | 2.2 | Iris-virginica |
3 | 7.6 | 3.0 | 6.6 | 2.1 | Iris-virginica |
同じ条件は以下のようにも書けます。
newtbl = sorttbl[sorttbl.PetalLength > 6.5]
検索条件の組み合わせ
AND条件の書き方です。
newtbl = sorttbl[(sorttbl.PetalLength > 6.5) & (sorttbl.PetalWidth > 2.0)]
これで二つの条件による絞り込みができます。
SepalLength | SepalWidth | PetalLength | PetalWidth | Name | |
---|---|---|---|---|---|
0 | 7.7 | 2.6 | 6.9 | 2.3 | Iris-virginica |
2 | 7.7 | 3.8 | 6.7 | 2.2 | Iris-virginica |
3 | 7.6 | 3.0 | 6.6 | 2.1 | Iris-virginica |
ViyaのPythonライブラリはデータベースをラッピングし、柔軟にデータの絞り込みや並び替え、検索条件を指定できます。14日間のトライアルも提供していますので、ぜひお試しください。