casTableのサマリーをグラフ化する

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

機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はそのテーブルのサマリーを表示した際の各値の意味を解説します。

今回はステップバイステップでデータをグラフ化する流れを紹介します。


データを取り込む

今回使うのは organics.sas7bdat です。年齢、性別ごとに健康状態などが入ったデータです。まずこのデータを読み込みます。

organics = sess.upload('organics.sas7bdat')

データを確認します。

organics.casTable.summary()

Column
Min
Max
N
NMiss
Mean
Sum
Std
StdErr
Var
USS
CSS
CV
TValue
ProbT
Skewness
Kurtosis

0
DOB
-15266.00
7190.00
22223.0
0.0
-5877.324574
-1.306118e+08
4825.522949
32.370026
2.328567e+07
1.285102e+12
5.174542e+11
-82.104075
-181.566881
0.0
0.077679
-0.849240

1
EDATE
13933.00
13933.00
22223.0
0.0
13933.000000
3.096331e+08
0.000000
0.000000
0.000000e+00
4.314117e+12
0.000000e+00
0.000000
NaN
NaN
NaN
NaN

2
AGE
18.00
79.00
20715.0
1508.0
53.797152
1.114408e+06
13.206048
0.091755
1.743997e+02
6.356449e+07
3.612516e+06
24.547858
586.312118
0.0
-0.079830
-0.843893

3
LCDATE
-21914.00
13846.00
21942.0
281.0
11644.613937
2.555061e+08
2317.765457
15.647011
5.372037e+06
3.093138e+12
1.178679e+11
19.904185
744.206937
0.0
-7.631565
98.238337

4
ORGANICS
0.00
3.00
22223.0
0.0
0.294740
6.550000e+03
0.562831
0.003776
3.167786e-01
8.970000e+03
7.039455e+03
190.958650
78.066014
0.0
2.021011
4.245531

5
BILL
0.01
296313.85
22223.0
0.0
4420.590041
9.823877e+07
7559.047522
50.706745
5.713920e+07
1.704021e+12
1.269747e+12
170.996348
87.179527
0.0
8.037186
184.871517

6
ORGYN
0.00
1.00
22223.0
0.0
0.247716
5.505000e+03
0.431696
0.002896
1.863613e-01
5.505000e+03
4.141322e+03
174.270256
85.541739
0.0
1.168908
-0.633711

7
AFFL
0.00
34.00
21138.0
1085.0
8.711893
1.841520e+05
3.421125
0.023531
1.170409e+01
1.851702e+06
2.473894e+05
39.269588
370.233401
0.0
0.891684
2.096860

8
LTIME
0.00
39.00
21942.0
281.0
6.564670
1.440420e+05
4.657113
0.031440
2.168870e+01
1.421460e+06
4.758717e+05
70.942063
208.801826
0.0
2.282790
8.077622


一部のデータを取り出し

表示に利用するデータだけに絞り込みます。

varlist = ['Age', 'BILL', 'ORGYN']

result = organics.casTable.summary(input=varlist)

各データのサマリーを取り出します。

df = result['Summary']

そしてサマリーの中でも必要なデータだけを指定します。今回はMin、MeanそしてMaxの3つです。

df.index = df['Column']

stackedDf = df[['Min', 'Mean', 'Max']].stack()

出力すると次のようになります。

print(stackedDf)

各カラムにおけるMin、Mean、Max値だけが抽出されます。

Column      

AGE Min 18.000000
Mean 53.797152
Max 79.000000
BILL Min 0.010000
Mean 4420.590041
Max 296313.850000
ORGYN Min 0.000000
Mean 0.247716
Max 1.000000
dtype: float64


ビジュアル化する

このデータをグラフ化するのに使えるのが bokeh.charts になります。

from bokeh.charts import Bar, output_file, show

棒グラフの準備をします。

p = Bar(df, 'Column', 

values='Mean',
color='#1f77b4',
agg='mean',
title='',
xlabel='',
ylabel='Frequency'
)

そしてファイルを用意して出力します。

output_file('visual1.html')

show(p)

これでグラフが確認できるはずです。

graph1.png


サマリーをグラフ化する際には上記の手順でできるはずです。大量のデータをすべて閲覧するのは大変ですが、トレンドを掴むのであればサマリーを使うのが良いでしょう。