Help us understand the problem. What is going on with this article?

casTableを操作する方法

More than 1 year has passed since last update.

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日間のトライアルも提供していますので、ぜひお試しください。

SAS for Developers | SAS

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした