SAS ViyaはAIプラットフォームになります。Webブラウザ上で機械学習の設計、実行ができるStudioという環境も用意されていますが、開発者はプログラミングコードで開発することも可能です。プログラミング言語はJava/Python/R/SASが選べます。
機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はグループ化したデータのヒストグラム(分布)を確認する方法を解説します。
データを取り込む
今回使うのは organics.sas7bdat
です。年齢、性別ごとに健康状態などが入ったデータです。まずこのデータを読み込みます。
organics = sess.upload('organics.sas7bdat')
グループ化するカラムを指定する
今回は複数カラムをグルーピングに指定します。
organics.casTable.groupby = ['NGroup', 'Gender']
result = organics.casTable.summary(inputs='Age')
result3 = result.concat_bygroups()
result3['Summary'][['N', 'Min', 'Mean', 'Max', 'Std']]
そうするとデータは以下のように表示されます。
N | Min | Mean | Max | Std | ||
---|---|---|---|---|---|---|
NGROUP | GENDER | |||||
57.0 | 29.0 | 54.298246 | 78.0 | 12.562650 | ||
F | 365.0 | 24.0 | 50.682192 | 79.0 | 13.316223 | |
M | 155.0 | 23.0 | 53.858065 | 78.0 | 13.177331 | |
U | 43.0 | 18.0 | 52.627907 | 78.0 | 15.104435 | |
A | 228.0 | 27.0 | 58.070175 | 79.0 | 10.859308 | |
F | 892.0 | 19.0 | 56.383408 | 79.0 | 13.528325 | |
M | 452.0 | 24.0 | 57.488938 | 79.0 | 11.934127 | |
U | 153.0 | 21.0 | 59.150327 | 79.0 | 11.843148 | |
B | 451.0 | 20.0 | 56.416851 | 79.0 | 12.255215 | |
F | 2079.0 | 19.0 | 56.823954 | 79.0 | 12.702405 | |
M | 1026.0 | 18.0 | 57.592593 | 79.0 | 12.522748 | |
U | 307.0 | 28.0 | 57.749186 | 79.0 | 11.662981 | |
U | 5.0 | 27.0 | 56.800000 | 76.0 | 18.212633 | |
F | 32.0 | 27.0 | 47.500000 | 77.0 | 16.372676 | |
M | 12.0 | 26.0 | 46.250000 | 57.0 | 10.172378 | |
U | 1.0 | 54.0 | 54.000000 | 54.0 | NaN |
ヒストグラムを取り出す
ヒストグラムは histogram
メソッドを使います。
result = organics.casTable.histogram(reqpacks=[{'nicebinning':False, 'nbins':10}], inputs=['BILL'])
key関数を使うとデータが分かれているのが分かります。
list(result.keys())
実行結果です。
['ByGroupInfo',
'ByGroup1.BinDetails',
'ByGroup2.BinDetails',
'ByGroup3.BinDetails',
'ByGroup4.BinDetails',
'ByGroup5.BinDetails',
'ByGroup6.BinDetails',
'ByGroup7.BinDetails',
'ByGroup8.BinDetails',
'ByGroup9.BinDetails',
'ByGroup10.BinDetails',
'ByGroup11.BinDetails',
'ByGroup12.BinDetails',
'ByGroup13.BinDetails',
'ByGroup14.BinDetails',
'ByGroup15.BinDetails',
'ByGroup16.BinDetails',
'ByGroup17.BinDetails',
'ByGroup18.BinDetails',
'ByGroup19.BinDetails',
'ByGroup20.BinDetails',
'ByGroup21.BinDetails']
例えば result['ByGroup1.BinDetails']
を見ると以下のようになっています。
Variable | BinSetId | BinId | BinLowerBnd | BinUpperBnd | BinWidth | NInBin | Mean | Std | Min | Max | MidPoint | Percent | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NGROUP | GENDER | |||||||||||||
A | F | BILL | 1 | 1 | 0.010 | 7000.009 | 6999.999 | 734 | 2608.377643 | 2396.778681 | 0.01 | 7000.00 | 3500.0095 | 77.100840 |
F | BILL | 1 | 2 | 7000.009 | 14000.008 | 6999.999 | 124 | 10506.032016 | 1712.541126 | 7100.00 | 14000.00 | 10500.0085 | 13.025210 | |
F | BILL | 1 | 3 | 14000.008 | 21000.007 | 6999.999 | 54 | 18051.901481 | 2189.119118 | 14105.32 | 20681.55 | 17500.0075 | 5.672269 | |
F | BILL | 1 | 4 | 21000.007 | 28000.006 | 6999.999 | 19 | 24540.320526 | 2133.572237 | 21008.63 | 27497.04 | 24500.0065 | 1.995798 | |
F | BILL | 1 | 5 | 28000.006 | 35000.005 | 6999.999 | 11 | 31520.056364 | 2326.827210 | 28113.08 | 35000.00 | 31500.0055 | 1.155462 | |
F | BILL | 1 | 6 | 35000.005 | 42000.004 | 6999.999 | 4 | 36440.122500 | 1095.197998 | 35465.20 | 38000.00 | 38500.0045 | 0.420168 | |
F | BILL | 1 | 7 | 42000.004 | 49000.003 | 6999.999 | 4 | 45857.757500 | 2592.275555 | 42160.04 | 48069.40 | 45500.0035 | 0.420168 | |
F | BILL | 1 | 8 | 49000.003 | 56000.002 | 6999.999 | 1 | 50000.000000 | NaN | 50000.00 | 50000.00 | 52500.0025 | 0.105042 | |
F | BILL | 1 | 9 | 56000.002 | 63000.001 | 6999.999 | 0 | NaN | NaN | NaN | NaN | 59500.0015 | 0.000000 | |
F | BILL | 1 | 10 | 63000.001 | 70000.000 | 6999.999 | 1 | 70000.000000 | NaN | 70000.00 | 70000.00 | 66500.0005 | 0.105042 |
そしてこれを棒グラフにしてみます。利用するのはbokeh.chartsです。
from bokeh.charts import Bar, Scatter, output_file, show, Area
棒グラフを定義します。
p = Bar(result['ByGroup1.BinDetails'], 'MidPoint', values='Percent', color='#1f77b4', agg='mean', title='', legend=None, xlabel='Bill', ylabel='Percent')
後はHTMLに出力するだけです。
output_file('visual2.html')
show(p)
これでグラフが描画されます。

データの偏りなどを調べる際にヒストグラムは便利です。ぜひお試しください。