LogoMark.png

データサイエンス/2022/1130

第11回 データビジュアライゼーション1

データサイエンス/20222022.11.30

出席確認・その他

> Recording

CONTENTS




はじめに

進捗確認

https://design.kyusan-u.ac.jp/socialdesign/?JohnSmith/DataScience



Python プログラミングについて

ある程度、利用に慣れてきたところで、多少専門的なお話を補足します。

関数について

プログラムの基本は 入力 > 処理 > 出力 です。プログラムのことを関数と呼ぶことがありますが、関数は英語で function つまり「何らかの機能を持ったもの」という意味で、世の中のあらゆるアプリケーションは、function の集合体と捉えることができます。

中学・高校の数学で登場する「関数」を思い出して下さい。例えば・・

y = 2x + 1 ・・・ y = f ( x ) と書いたりします  

は、入力データ x を受け入れて、これに処理 f ( ) つまり「2倍して1加える」を施して、その結果を y として返す・・・つまり、入力>処理>出力の機能を数式で表現したものと言えます。

データサイエンスの演習では、その大半理を、各種ライブラリーに定義された関数を利用するだけで実現させていますが、自分自身でオリジナルの関数を作って利用することもできます。以下のように記述します。

# 自作関数の定義
def myFunc(x):  # 入力:引数(ひきすう)として x を受け取る
  y = 2*x+1        # 処理
  return y           # 出力:戻り値として y を返す

# 自作関数を利用したプログラム
s = input("数を入力して下さい >>>")   # 入力
x = float(s)                                             # 処理(文字列を数値に変換)
y = myFunc(x)                                       # 処理(計算)
print("計算結果:", y)                            # 出力

--- 実行結果 ---
数字を入力して下さい >>> 2.5
計算結果: 6

この事例は、演習の最初に作成した PythonBasics.ipnbに追記しておくことをおすすめします。
def は define(定義)という意味の英語の略です。

付記

プログラマーは、世界のあらゆる現象を関数(入力・処理・出力)として捉える思考を身につけることで、問題を効率的に解決しています。プログラミング教育の目的は、特定の言語によるコーディングの技術を身につけることではなく、プログラマー的思考を身につけることにあります。


データビジュアライゼーション

データビジュアライゼーション(Data Visualization)とは、物事の関係性を視覚的に捉えられるように、データを画像・グラフ・図表などに変換することを言います。その目的はデータから価値や知恵を生み出すことにあります。

DataInformation(構造化)→ Knowledge(知見)→ Wisdom(知恵)


様々なグラフ

Topics

1024px-Nightingale-mortality.jpg

Python によるビジュアライゼーション

Pythonを用いたデータビジュアライゼーションには、様々な関連ライブラリーのインポート、データの読み込み、各種メソッドの活用が前提となります。以下、具体的なコードとともに概要を説明します。

基本データ処理用のライブラリ

ビジュアライゼーション用のライブラリ




Pythonによる統計グラフ

今回は matplotlib と pandas の連携による基本的なグラフ描画を体験します。

データの準備

統計グラフの作成には、対象となるデータをデータフレームとして読み込む必要があります(すでに前回までに確認済み)。

df = pd.read_csv( '/path/to/xxxxx.csv' )


ヒストグラム

hist.png

ヒストグラム(柱状グラフ、度数分布図)は、横軸に階級、縦軸に度数をとった統計グラフで、データの分布状況を可視化するために用いられます。

データフレームからヒストグラムを生成するコードは非常に簡単です。

df.hist( ) 全項目一挙表示
df[ 'XXX' ] .hist(  ) 特定カラムの表示

df はデータフレーム変数の例です。

ボックスプロット

box.png

ボックスプロット(箱ひげ図)は、データのばらつきを可視化する統計グラフで、箱(box)と、その両側に出たひげ(whisker)で表現されることからその名が付けられています。

一般に以下の五数が要約(five-number summary)されて表示されます。

以下のコードは、対象カラム(XXX)をグループ(AAA)別に表示します。

df.boxplot( column='XXX' , by='AAA' )


散布図

scatter.png

散布図(scatter plot)は、縦軸、横軸に2つの量的データ項目を対応させて、各レコードのデータを点でプロットしたものです。項目間の相関の有無が可視化されます。

以下のコードは、x軸とy軸にカラム項目を指定して表示します。

df.plot.scatter( x='XXX', y='YYY' )


折れ線グラフ・棒グラフ・円グラフ

これらのグラフは項目間の推移や比較を見るために使います。数万件もある全レコードを表示しても視覚的に読み取ることはできないので、グラフにしたい内容によって、事前に「データの平均値を出す」、「クロス集計する」といった処理を行った後、それを新たなデータフレームとしてグラフの表示に利用するのが一般的です(以下、棒グラフの事例です)。

# 性別ごとに国語・英語・数学の平均値を算出
df_mean = df.groupby( 'Gender' , as_index=False ).mean( ) 
df_mean
GenderJapaneseEnglishMathematics
0F62.35000058.47500039.800000
1M56.42045541.14204539.539773
bar.png

生成された df_mean を使うと、簡単に積み重ね棒グラフができます。

df_mean.plot.bar( stacked=True )

stacked=True は、積み重ねを有効にする・・という意味です。




Pythonによる統計グラフの描画体験 01

CSVデータから統計量を視覚化するサンプルです。matplotlib と連携した pandas のグラフ描画機能を使って、様々なグラフの描画を体験します。

ノートブックの新規作成

サンプルデータ

第9回と同じ Tips のデータをサンプルとして利用します。
直接読み込むので、ダウンロードの必要はありません。
https://github.com/mwaskom/seaborn-data/blob/master/tips.csv

サンプルコード

JupyterNotebook形式(.ipynb)でプログラムを提供します。
https://github.com/koichi-inoue/DataScience2022/blob/main/StatisticalGraph01.ipynb

学科サイトにリンク掲載(演習5)

ノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。

プログラムの解説

ライブラリーの読み込み

冒頭で、グラフ描画用のライブラリーmatplotlibとデータ解析用のライブラリー pandasを読み込んでいます。

# matplotlib パッケージ から pyplot モジュールを plt として import
import matplotlib.pyplot as plt

# pandasライブラリの読み込み
import pandas as pd


ヒストグラム・ボックスプロット・散布図

棒グラフ・折れ線グラフ・円グラフ

APPENDIX

数理グラフ

数式等を用いたグラフ表示のサンプルです。時間に余裕のある方のみお試しください。取り組みは任意です。

https://github.com/koichi-inoue/DataScience2022/blob/main/Plotting.ipynb




PAGES

GUIDE

TOOL

DATA

Last-modified: 2022-11-30 (水) 10:55:57