LoginSignup
0
1

More than 5 years have passed since last update.

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

Posted at

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

0
1
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
1