CASTableでデータの概要を確認する

[SAS Viya](https://www.sas.com/ja_jp/software/viya.html)はAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです（CASはCloud Analytic Servicesの略です）。今回はCASTableでデータの状態を見る際に、その抽出条件を変更する方法を紹介します。

## データベースからテーブルを取得する

まずはSAS Viyaに接続します。

```py
import swat
conn = swat.CAS('server-name.mycompany.com', 5570, 'username', 'password')
```

次にCASTableを取得します。今回はIRISデータのCSVを利用します。

```py
tbl = conn.loadtable('data/iris.csv', caslib='casuser').casTable
```

## 情報を確認する

どういったデータがあるのかを確認する際には `describe` メソッドを使います。

```py
tbl.describe()
```

以下のように結果が返ってきます。行数、標準偏差、最小値、最大値、さらに25%/50%/75%に値するデータが確認できます。

| sepal_length | sepal_width | petal_length | petal_width
|--------------|--------------|--------------|--------------|
| 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

## パーセントを変更する

`percentiles` を変更すると、取得されるデータが変わります。以下は30%と80%のデータに変更する例です。

```py
tbl.describe(percentiles=[0.3, 0.8])
```

| sepal_length | sepal_width | petal_length | petal_width
|--------------|--------------|--------------|--------------|
| 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
| 30% | 5.250000 | 2.800000 | 1.700000 | 0.400000
| 50% | 5.800000 | 3.000000 | 4.350000 | 1.300000
| 80% | 6.550000 | 3.400000 | 5.350000 | 1.900000
| max | 7.900000 | 4.400000 | 6.900000 | 2.500000

### 全体を見る

全データを確認する際には `include='all'` を指定します。

```py
tbl.describe(include='all')
```

| sepal_length | sepal_width | petal_length | petal_width | species
|--------------|--------------|--------------|--------------|--------------
| count | 150 | 150 | 150 | 150 | 150
| unique | 35 | 23 | 43 | 22 | 3
| top | 5 | 3 | 1.5 | 0.2 | virginica
| freq | 10 | 26 | 14 | 28 | 50
| mean | 5.84333 | 3.054 | 3.75867 | 1.19867 | NaN
| std | 0.828066 | 0.433594 | 1.76442 | 0.763161 | NaN
| min | 4.3 | 2 | 1 | 0.1 | setosa
| 25% | 5.1 | 2.8 | 1.6 | 0.3 | NaN
| 50% | 5.8 | 3 | 4.35 | 1.3 | NaN
| 75% | 6.4 | 3.3 | 5.1 | 1.8 | NaN
| max | 7.9 | 4.4 | 6.9 | 2.5 | virginica


数値を浮動小数点数にもできます。

```py
tbl.describe(stats='all')
```

| sepal_length | sepal_width | petal_length | petal_width |
|--------------|--------------|--------------|--------------|
| count | 1.500000e+02 | 1.500000e+02 | 1.500000e+02 | 1.500000e+02
| unique | 3.500000e+01 | 2.300000e+01 | 4.300000e+01 | 2.200000e+01
| mean | 5.843333e+00 | 3.054000e+00 | 3.758667e+00 | 1.198667e+00
| std | 8.280661e-01 | 4.335943e-01 | 1.764420e+00 | 7.631607e-01
| min | 4.300000e+00 | 2.000000e+00 | 1.000000e+00 | 1.000000e-01
| 25% | 5.100000e+00 | 2.800000e+00 | 1.600000e+00 | 3.000000e-01
| 50% | 5.800000e+00 | 3.000000e+00 | 4.350000e+00 | 1.300000e+00
| 75% | 6.400000e+00 | 3.300000e+00 | 5.100000e+00 | 1.800000e+00
| max | 7.900000e+00 | 4.400000e+00 | 6.900000e+00 | 2.500000e+00
| nmiss | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00
| sum | 8.765000e+02 | 4.581000e+02 | 5.638000e+02 | 1.798000e+02
| stderr | 6.761132e-02 | 3.540283e-02 | 1.440643e-01 | 6.231181e-02
| var | 6.856935e-01 | 1.880040e-01 | 3.113179e+00 | 5.824143e-01
| uss | 5.223850e+03 | 1.427050e+03 | 2.583000e+03 | 3.023000e+02
| cv | 1.417113e+01 | 1.419759e+01 | 4.694272e+01 | 6.366747e+01
| tvalue | 8.642537e+01 | 8.626430e+01 | 2.609020e+01 | 1.923659e+01
| probt | 3.331256e-129 | 4.374977e-129 | 1.994305e-57 | 3.209704e-42

## まとめ

describeメソッドを使うことでCASTable内のデータについて概要を把握できるようになります。データ分析を行う際のベースとしてご利用ください。

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