SAS Viyaで使うテーブルのメソッドと取得できるデータについて

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

機械学習を用いる際に専用のテーブル（casTable）を用いますが、今回はそのテーブルオブジェクト（Python版）で取得できるデータについて解説します。

## テーブルの作り方

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

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

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

```
iris = out.casTable
```

## テーブル情報

テーブル情報は tableInfo メソッドで確認できます。

```python
iris.tableInfo()
```

| Name | Rows | Columns | IndexedColumns | Encoding | CreateTimeFormatted | ModTimeFormatted | AccessTimeFormatted | JavaCharSet | CreateTime | ... | Global | Repeated | View | SourceName | SourceCaslib | Compressed | Creator | Modifier | SourceModTimeFormatted | SourceModTime
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | IRIS | 150 | 5 | 0 | utf-8 | 2018-10-10T00:50:58-04:00 | 2018-10-10T00:50:58-04:00 | 2018-10-10T00:50:58-04:00 | UTF8 | 1.854766e+09 | ... | 0 | 0 | 0 |  |  | 0 | dev@sas.com |  | 2018-10-10T00:50:57-04:00 | 1.854766e+09

テーブルのオーナー情報は userinfo で取得できます。

```py
iris.userinfo()
```

```py
{
  'userId': 'dev@sas.com',
  'providedName': 'dev@sas.com',
  'uniqueId': 'dev@sas.com',
  'groups': [
    'sas',
    'openid',
    '_PDC_pdcesx13111'
  ],
  'providerName': 'OAuth/External PAM',
  'anonymous': False,
  'hostAccount': True,
  'guest': False
}
```

## データ概要を確認

データの内容をざっと確認したい時には summary メソッドを使います。

```python
iris.summary()
```


| Column | Min | Max | N | NMiss | Mean | Sum | Std | StdErr | Var | USS | CSS | CV | TValue | ProbT | Skewness | Kurtosis
|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
| 0 | SepalLength | 4.3 | 7.9 | 150.0 | 0.0 | 5.843333 | 876.5 | 0.828066 | 0.067611 | 0.685694 | 5223.85 | 102.168333 | 14.171126 | 86.425375 | 3.331256e-129 | 0.314911 | -0.552064
| 1 | SepalWidth | 2.0 | 4.4 | 150.0 | 0.0 | 3.054000 | 458.1 | 0.433594 | 0.035403 | 0.188004 | 1427.05 | 28.012600 | 14.197587 | 86.264297 | 4.374977e-129 | 0.334053 | 0.290781
| 2 | PetalLength | 1.0 | 6.9 | 150.0 | 0.0 | 3.758667 | 563.8 | 1.764420 | 0.144064 | 3.113179 | 2583.00 | 463.863733 | 46.942721 | 26.090198 | 1.994305e-57 | -0.274464 | -1.401921
| 3 | PetalWidth | 0.1 | 2.5 | 150.0 | 0.0 | 1.198667 | 179.8 | 0.763161 | 0.062312 | 0.582414 | 302.30 | 86.779733 | 63.667470 | 19.236588 | 3.209704e-42 | -0.104997 | -1.339754

同様に describe メソッドはデータが縦に確認できます。


```python
iris.describe()
```

| SepalLength | SepalWidth | PetalLength | PetalWidth
|---|---|---|---|
| count | 150.000000 | 150.000000 | 150.000000 | 150.000000
| mean | 5.843333 | 3.054000 | 3.758667 | 1.198667
| std | 0.828066 | 0.433594 | 1.764420 | 0.763161
| min | 4.300000 | 2.000000 | 1.000000 | 0.100000
| 25% | 5.100000 | 2.800000 | 1.600000 | 0.300000
| 50% | 5.800000 | 3.000000 | 4.350000 | 1.300000
| 75% | 6.400000 | 3.300000 | 5.100000 | 1.800000
| max | 7.900000 | 4.400000 | 6.900000 | 2.500000

## カラムの確認

カラムがどう読み込まれたかは columninfo で確認します。

```python
iris.columninfo()
```

| Column | ID | Type | RawLength | FormattedLength | NFL | NFD
|----|----|----|----|----|----|----|
| 0 | SepalLength | 1 | double | 8 | 12 | 0 | 0
| 1 | SepalWidth | 2 | double | 8 | 12 | 0 | 0
| 2 | PetalLength | 3 | double | 8 | 12 | 0 | 0
| 3 | PetalWidth | 4 | double | 8 | 12 | 0 | 0
| 4 | Name | 5 | varchar | 15 | 15 | 0 | 0


## データを閲覧する

データの閲覧は fetch メソッドを使います。 to を指定して件数を制限できます。

```py
iris.fetch(to=3)
```

| SepalLength | SepalWidth | PetalLength | PetalWidth | Name
|---|---|---|---|---|---|
| 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

## カラム情報

テーブルに存在するカラムは columns プロパティを使って確認します。

```python
iris.columns
```

```py
Index([
  'SepalLength',
  'SepalWidth',
  'PetalLength',
  'PetalWidth',
  'Name'
], dtype='object')
```

さらに型を知りたい場合は dtypes を使います。

```python
iris.dtypes
```

    SepalLength     double
    SepalWidth      double
    PetalLength     double
    PetalWidth      double
    Name           varchar
    dtype: object

info を使うと多くの情報が確認できます。


```py
iris.info()
```

```
CASTable('IRIS', caslib='CASUSER(dev@sas.com)')
Data columns (total 5 columns):
　　          N   Miss     Type
SepalLength  150  False   double
SepalWidth   150  False   double
PetalLength  150  False   double
PetalWidth   150  False   double
Name         150  False  varchar
dtypes: double(4), varchar(1)
data size: 9200
vardata size: 2000
memory usage: 9232
```

----

解析を行う際にはテーブルの内容を確認しながら行っていくと思います。これらのメソッドが役立つ場面は多いと思いますので、ぜひ覚えておいてください。

[SAS for Developers | SAS](https://developer.sas.com/home.html)