LoginSignup
0
0

More than 5 years have passed since last update.

casTableのヒストグラムをグラフ化する

Posted at

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']]

そうするとデータは以下のように表示されます。

Descriptive Statistics for ORGANICS
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'] を見ると以下のようになっています。

Bin Details for ORGANICS
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)

これでグラフが描画されます。

Screenshot_ 2019-01-23 16.22.03.png


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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0