Help us understand the problem. What is going on with this article?

グルーピングしたデータごとにヒストグラムを確認する

More than 1 year has passed since last update.

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

機械学習を用いる際に専用のテーブル(casTable)を用いますが、今回はそのテーブルのヒストグラムをまとめて確認する方法を紹介します。

データを確認する

今回は organics.sas7bdat を用います。

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

データは以下のようになっています。

organics.casTable.head()
Selected Rows from Table ORGANICS
CUSTID GENDER DOB EDATE AGE AGEGRP1 AGEGRP2 TV_REG NGROUP NEIGHBORHOOD LCDATE ORGANICS BILL REGION CLASS ORGYN AFFL LTIME
0 0000000140 U 1921-09-16 1998-02-23 76.0 60-80 70-80 Wales & West C 16 1994-11-07 0.0 16000.00 Midlands Gold 0.0 10.0 4.0
1 0000000620 U 1949-02-12 1998-02-23 49.0 40-60 40-50 Wales & West D 35 1993-06-04 0.0 6000.00 Midlands Gold 0.0 4.0 5.0

データをグルーピングする

まずデータをグルーピングします。

organics.casTable.groupby = ['GENDER', 'AGEGRP1']

そしてヒストグラムを取り出します。

result = organics.casTable.histogram(
    reqpacks=[{'nicebinning': False, 'nbins': 20}],
    inputs=['AFFL']
)

そうするとGENDERとAGEGRP1ごとにデータが分かれます。結果が分かれているのに気づくでしょう。

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

情報を確認します。

result['ByGroupInfo']

結果は以下のようになっています(一部)。

ByGroupInfo
GENDER GENDER_f AGEGRP1 AGEGRP1_f _key_
0 F F <20 <20 F<20
1 F F 20-40 20-40 F20-40
2 F F 40-60 40-60 F40-60

可視化する

ではこのヒストグラムを可視化します。条件に応じて4パターン取り出します。

all_df = {
    'GENDER=Female, AGEGRP1=<20': result['ByGroup1.BinDetails'],
    'GENDER=Female, AGEGRP1=20-40': result['ByGroup2.BinDetails'],
    'GENDER=Female, AGEGRP1=40-60': result['ByGroup3.BinDetails'],
    'GENDER=Female, AGEGRP1=60-80': result['ByGroup4.BinDetails'],
}

可視化するためにpandasなどを読み込みます。

import pandas as pd
from bokeh.charts import Bar, Scatter, output_file, show, Area
from bokeh.io import gridplot

データをグラフに追加します。

all_pic = []
for this_title in all_df:
    this_pic = Bar(all_df[this_title], 'MidPoint', values='Percent',
                  color='#1f77b4', agg='mean', title=this_title, legend=None,
                  xlabel='AFFL', ylabel='Percent'
                  )
    all_pic.append(this_pic)
p = gridplot([all_pic[0], all_pic[1]], [all_pic[2], all_pic[3]])
output_file('grid.html')
show(p)

こうするとグラフが4つ描かれたHTMLファイルが出力されます。

Screenshot_ 2019-02-08 16.22.31.png

まとめ

ByGroupInfoを見ることでデータ構造が分かります。そして各グルーピングされたデータごとに傾向を見ることで、大筋でのデータ把握ができるようになります。本格的な分析を行う前に行うのがお勧めです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away