SAS Viyaで任意のファイルを読み込んで情報を見るまでの流れ

[SAS Viya](https://developer.sas.com/home.html)はAIプラットフォームになります。Webブラウザ上で機械学習の設計、実行ができるStudioという環境も用意されていますが、開発者はプログラミングコードで開発することも可能です。デモ版ではJupyter Notebookが使えて、簡単に使い方を学べるようになっています。

今回は機械学習でよくあるアヤメのデータをアップロードして内容を確認するまでの流れを解説します。プログラミング言語はPythonを使っています。

## データをアップロードします

最近、デモ版のJupyter NotebookでもCSVファイルなどがアップロードできるようになりました。今回は[pandas/iris.csv at master · pandas-dev/pandas](https://github.com/pandas-dev/pandas/blob/master/pandas/tests/data/iris.csv)をアップロードします。

![Screenshot_ 2018-09-24 17.06.25.png](https://qiita-image-store.s3.amazonaws.com/0/274479/06484ea9-8209-55da-763c-aebdfef1fb90.png)

## SAS Viyaに接続する

専用のライブラリであるswatを読み込んで、SAS Viyaに接続します。YOUR_EMAIL、YOUR_PASSWORDはそれぞれ自分のメールアドレス、パスワードに読み替えてください。

```py
import swat
cashost='localhost'
casport=5570
useremail='YOUR_EMAIL'
userpassword='YOUR_PASSWORD'
casauth='~/.authinfo'
sess = swat.CAS(cashost, casport, useremail, userpassword, caslib="casuser")
```

## データをSAS Viyaにインポートする

アップロードした iris.csvをインポートします。 `Data` というのはJupyter Notebookアップロード時に作成していたフォルダ名です。

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

## テーブルを取り出す

上のコードの `out` がインポート後のテーブルオブジェクトです。さらにテーブル情報を取得します。

```py
iris = out.casTable
```

## データの内容を確認する

`tableInfo` でテーブルの情報が取得できます。

```py
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-09-24T03:27:03-04:00 | 2018-09-24T03:27:03-04:00 | 2018-09-24T03:27:03-04:00 | UTF8 | 1.853393e+09 | ... | 0 | 0 | 0 |  |  | 0 | YOUR_EMAIL |  | 2018-09-24T03:27:02-04:00 | 1.853393e+09

## データの概要を確認する

`summary` でデータの概要が確認できます。

```py
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` でも可能です。

```py
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

## データを可視化する

データを可視化する際には、まずMatplotを読み込みます。

```py
import matplotlib.pyplot as plot
```

そして `plot` メソッドで Matplot 形式のデータを取得します。

```py
iris.plot()
plot.show()
```

そうするとグラフが描画できます。

![Unknown.png](https://qiita-image-store.s3.amazonaws.com/0/274479/88ac1ff3-2275-537d-3896-8a6d566f3f00.png)


さらにソートもできます。

```py
iris.sort_values(['SepalLength', 'SepalWidth']).plot()
plot.show()
```

![Unknown-2.png](https://qiita-image-store.s3.amazonaws.com/0/274479/a49c62df-59e4-cd10-1953-2100916330a0.png)


----

解析前のデータの可視化は良く行われる処理です。SAS Viyaの基本的な使い方として覚えておくと便利です。

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