casTableのクエリで文字列を変換する

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


カラムを追加する

例えばカラム同士の計算結果を追加したい、レポート用に特定の文字列を出したいなど、様々な用途が考えられます。これは tbl にキーを追加するだけです。例えば以下は文字列として指定しているので、同じ文字が表示されます。

tbl['newColumn'] = 'SepalLength * 2'

計算を伴う場合は以下のようにtblを使います。

tbl['newColumn2'] = tbl.SepalLength * 2


カラムを加工する

そしてカラムの加工方法です。例えば title というメソッドを使うと単語の最初の文字を大文字に、後は小文字に変換できます。

tbl['NameTitle'] = tbl['Name'].str.title()

SepalLength
SepalWidth
PetalLength
PetalWidth
Name
NameTitle

0
5.1
3.5
1.4
0.2
Iris-setosa

1
4.9
3.0
1.4
0.2
Iris-setosa

2
4.7
3.2
1.3
0.2
Iris-setosa

3
4.6
3.1
1.5
0.2
Iris-setosa

4
5.0
3.6
1.4
0.2
Iris-setosa


特定の文字を探す

カラムの中にある文字を検索する際には find を使います。

tbl['NameFind'] = tbl['Name'].str.find('-')

SepalLength
SepalWidth
PetalLength
PetalWidth
Name
NameFind

0
5.1
3.5
1.4
0.2
Iris-setosa

1
4.9
3.0
1.4
0.2
Iris-setosa

2
4.7
3.2
1.3
0.2
Iris-setosa

3
4.6
3.1
1.5
0.2
Iris-setosa

4
5.0
3.6
1.4
0.2
Iris-setosa


大文字化

セル内の文字列を大文字化します。

tbl['NameUpper'] = tbl['Name'].str.upper()

SepalLength
SepalWidth
PetalLength
PetalWidth
Name
isNameUpper

0
5.1
3.5
1.4
0.2
Iris-setosa

1
4.9
3.0
1.4
0.2
Iris-setosa

2
4.7
3.2
1.3
0.2
Iris-setosa

3
4.6
3.1
1.5
0.2
Iris-setosa

4
5.0
3.6
1.4
0.2
Iris-setosa


追加したカラムを処理に利用する

新しいカラムを追加する際には、計算したカラムを利用することもできます。以下の例では大文字化したカラムがすべて大文字かどうかを判定するカラムを追加します。

tbl['isNameUpper'] = tbl['NameUpper'].str.isupper()

SepalLength
SepalWidth
PetalLength
PetalWidth
Name
NameUpper
isNameUpper

0
5.1
3.5
1.4
0.2
Iris-setosa
IRIS-SETOSA

1
4.9
3.0
1.4
0.2
Iris-setosa
IRIS-SETOSA

2
4.7
3.2
1.3
0.2
Iris-setosa
IRIS-SETOSA

3
4.6
3.1
1.5
0.2
Iris-setosa
IRIS-SETOSA

4
5.0
3.6
1.4
0.2
Iris-setosa
IRIS-SETOSA


文字列向けの関数としては他にも count / index / slice / len / contains など多数用意されています。閲覧時の簡易的なデータ加工としてご利用ください。

SAS for Developers | SAS