Coursera の Google Data Analytics Certificate コース後半戦です。
Course 5: データ分析による答えの導出
データの分析プロセス:収集したデータを理解するためのプロセス
SQLのソート:
- 昇順: ORDER BY column_name [ASC]
- 降順: ORDER BY column_name DESC
リフレーミング:問題や課題を言い直し、考えうる解決策に近づけること
Data Aggregation:複数のソースからデータを集め1つの要約されたコレクションにまとめるプロセス
単純な COUNT() 関数だと、該当する行数を全てカウントしてしまうので、重複しない固有の値をカウントする場合は COUNT(DISTINCT …) 関数を使用する。
SELECT
COUNT(DISTINCT column_name)
FROM
table_name;
Excel や Google Spreadsheet の
データ検証の種類 6種:
- データ型:フィールドに定義されたデータ型と一致すること
- データ範囲:フィールドに定義された許容範囲内のデータであること
- データ制約:特定の条件や基準を満たしていること(整数のみ、など)
- データの一貫性:関連するコンテクストの中で意味をなすこと
- データ構造:設定された構造と一致していること
- コード検証:上記のデータ検証が正しくなされているかアプリケーション側で検証すること
HAVING句による集合関数の戻り値に対するフィルタ:
SELECT
column_1,
COUNT(column_2) AS new_column
FROM
table_name
GROUP BY
column_1
HAVING
COUNT(column_2) > 5;
WHERE句のフィルタでは、GROUP BY句によってグループ化される前の値をフィルタリングするが、HAVING句ではグループ化後の値をフィルタリングする。
処理の前後関係に規制があるため、GROUP BYの直後で使用する。
CASE句によって複数条件の分岐が可能:
SELECT
CASE
WHEN column1 = ‘SOME TEXT’ THEN ‘ANOTHER TEXT’
ELSE ‘YET ANOTHER TEXT’
END AS new_column1, --カラム名のエイリアス
COUNT(column2) AS new_column2
FROM
table_name
GROUP BY
1 -- カラムの番号でグループ化指定
条件が1つのみの場合 IF句で可換:
SELECT
IF(column1='SOME TEXT', 'ANOTHER TEXT', 'YET ANOTHER TEXT')
AS new_column1,
COUNT(column2) AS new_column2
FROM
table_name
GROUP BY
1
COALESCE関数で、最初の非NULL値を取得:
SELECT
column1,
COALESCE(column2, column3, column4) AS new_column
FROM
table_name
表計算ソフトやSQLを用いて、データ分析をしていく内容でした。そこそこ実践問題が多めです。
実務で使ったりしたことあれば、そこまで難しい内容ではないかなと思います。
サブクエリや使用頻度の少ない関数なんかはよい復習になります。
Course 6: データビジュアライゼーション
What Makes a Good Visualization? — David McCandless 優れたデータビジュアライゼーションの4つの要素:
- Information (data)
- Story (concept)
- Goal (function)
- Visual Form (metaphor)
Kaiser Fung’s Junk Charts Trifecta Checkup データ日ジュアライゼーションを見る側が、それを評価しその効果を判断する側面:
- What is the QUESTION?:問いは何か?
- What does the DATA say?:データは何を言っているか?
- What does the VISUAL say?:ビジュアルは何を語っているか?
効果的なビジュアルを作成するには、脳の働きに関する知見を活用し、ビジュアル要素を用いて情報を伝達することが必要
Preattentive Processing:前注意的処理、人間が視覚的情報を得たときに無意識に周囲のものと比較すること。この特性を利用した、ビジュアルを即時に認識するための要素にはマークとチャネルがある。
マークは、点、線、形のような基本的な視覚的オブジェクトのことで、4つの性質を持つ:
- 位置:特定のマークが、その他のものと比較した相対的な位置
- サイズ:マークの大きさ
- 形:特定のオブジェクトを示す表意的な形状
- カラー:マークの色
チャネルは、データの特徴を表す視覚的な側面または変数のことで3つの要素がある:
- 正確性:チャネルが、表現されている値を正確に推定するのに役立つ程度
- ポップアウト:特定の値と、それ以外の値を区別できる程度
- グループ化:データの中に存在するグループを区別できる程度
効果的なビジュアルを作成するためのデザイン原理:
- 適切なビジュアル:効果的な見た目
- データインク比率の最適化:ビジュアルに占めるデータそのものを示す(データインク)比率
- 効果的な向き:ラベルや文字の方向
- カラー:文化や人によって異なることを念頭にカラースケールを選定する
- 要素の数:見やすい要素数は概ね、線は5本まで、セグメントは7つまでが目安
誤解を招くようなグラフを避けるポイント:
- Y軸を削除しない
- Y軸を2つ利用する場合、誤解を招く表現をしない
- データの範囲を意図的に限定しない
- 問題のあるデータの分類やグループ分けをしない
- 累積グラフで傾向を隠さない
- 傾向を人工的に平滑化しない
Correlation (相関関係):統計学において、2 つの変数が互いにどの程度の関連性を持って動くかの度合いを表す指標
Causation (因果性):ある事象が特定の結果に直接的につながること
折れ線グラフ:時間の経過に伴う変化の表現に最適。棒グラフよりもより細かい変化の表現に向いている。
棒グラフ:二つ以上のデータを対比および比較する表現に最適。
ヒートマップ:二つの変数の変化を表現する際に利用される。
円グラフ:全体に対する要素の比率を表現する。
散布グラフ:異なる変数間の関係を独立した点で表現する。
分布グラフ:データセットにおける、広がりを表現する。
データの種類と相性:
- 変化:折れ線または棒グラフ
- クラスタリング:分布グラフ
- 相対性:円グラフ
- ランキング:棒グラフ
- 相関関係:散布グラフ
9つのデザイン原理:
- バランス:色や形といった視覚効果のバランス
- 強調:色や明度、サイズなどの強弱
- ムーブメント:見る人の視線の動きやデータ自体のアニメーションなど
- パターン:似たような色や形状を使う
- 反復:データに明確なセットにする
- 比率:大きさや形状、色などの相対的な変化を使用する
- リズム:ムーブメントや流れをうまく作り出す
- バラエティ:バランスを壊さない程度に表現を増やす
- 統一性:ビジュアル全体でのまとまりを持たせる
デザイン思考の5つのフェーズ:
- 共感:ビジュアルデータの受け手のニーズや感情を考えること
- 定義:ステークホルダの必要としていることを正確に把握すること
- 概念化:共感及び定義で得た知見からビジュアライゼーションのアイデアを生み出すこと
- プロトタイプ:テスト及びフィードバックのためにビジュアライゼーションをまとめること
- テスト:チームメンバなどでプロトタイプの効果を確認すること
Tableau Public:Tableau の無料バージョン。ただし、基本的に作成したデータビジュアライゼーションは公開の設定となり、個人的なデータや企業内のデータの可視化には利用不可。
Tableau は前から使いたいと思っていて、今回初めて使いましたが、さすがにかなり高機能でした。国名のリストから地理データを作成して、それぞれの国に対応するデータをサイズや色などで視覚的に表現でき、かなり強力なツールの印象です。
SQLの JOIN のような操作も GUI で直感的に行うことができます。
乱暴な例え方をすると、「ピボットテーブルをより高機能にして、データビジュアライゼーション機能を充実させたもの」のようですね。
最終的には、作成したデータビジュアライゼーションを共有する際のベストプラクティスについての解説まであり、なかなか実践的でした。プレゼンテーションのスライドを作成する際に気をつけるべき点などは実務に直結します。
また、予想される質問に対するQ&Aを事前に用意するための検討事項など、この辺りも日常業務でのプレゼンに有用です。
Course 6 はこの辺りで、いよいよR言語です。
Course 7: データ分析とR言語
まずは R言語と他の言語(Python)の比較から、ここは純粋に、Rがデータ分析や処理に特化したもので、Python は汎用のプログラミング言語ですね。
RはそもそもSという言語がベースとなっている。1970年代にベル研究所のジョン・チェンバースがS言語を開発し、社内で運用していた。後にニュージーランドオークランド大学でロス・イハカとロバート・ジェントルマンがR言語を開発。Rの名称は開発者の二人の頭文字からとっている。
データ分析をする際にR言語が好まれる理由:
- そもそもプログラミング言語として使いやすい
- データ指向型の言語であり、データ分析をより簡単、効率的かつ強力に行える設計
- オープンソースであり、無料で利用できかつ、継続的に発展している
- 活発なコミュニティがあり、そこから多くの知見を得ることができる
R言語を用いて、データ分析を行うアナリストのほとんどは、IDE である RStudio を使用してR言語を操作する。今のところ RStudio が最も一般的な環境。
MacOS環境では、homebrew を使って R言語と、homebrew + cask を使って RStudio をインストールできる。
RStudio は上記みたいな見た目、
- Console:Rをインタラクティブに操作
- Source Editor:Rスクリプトを編集して保存する
- Environment タブ:ロードされているデータなどの管理
- Plots タブ:グラフの描画エリア
その他にもいろいろなタブがある。
コンソールで、install.packages(“PACKAGE_NAME”)として、パッケージをローカルディレクトリにインストールする。この辺り、Pythonとかと違い、パッケージマネージャを使用しない?
library(LIBRARY_NAME)でライブラリをロードする。これは、Python でいうとこの import ですね。新しくインタープリタを起動してそのライブラリを利用するたびに実行が必要。
R言語の重要6つのコンセプト:
- Functions:ほとんどのプログラミングと同じ、関数名とカッコと引数のリスト
- Comments:#記号でコメント業、Pythonと一緒
- Variables:変数の代入演算子がアロー演算子 a <- 1
- Data types:データ型、静的型付け言語?
- Vectors:同じ型のみのアトミックベクトル、複数の型のリストがある
- Pipes:あんまり使ったことない、%>% で表記
R言語でかなり広く使われているパッケージ群の1つに Tidyverse がある。このうち、以下の4つはデータ分析のワークフローに不可欠な機能を提供する。
- ggplot2:データビジュアライション、特にグラフのプロットに利用
- tidyr:データクリーニング用パッケージ
- readr:データの読み込み用パッケージ
- dplyr:一般的なデータ操作に役立つ
パイプ演算子(%>%):左辺の出力を右辺の関数の第1引数とする。
summary(iris)
これは、以下のパイプを利用したコードと結果的には同じ処理
iris %>% summary()
View(DATA_FRAME_NAME)関数:Data Viewer にデータフレームを表示する
Rにおける Data frame は、データベースで言うとこのテーブルの位置付け
Tibble:要約版のデータフレームのようなもの、データセットの最初の10行だけを取得したり、変数やデータ型にはデータフレームのような自由な変更がかけられない
read_csv()関数で CSVファイルの読み込みが、read_excel()関数でエクセルファイル(.xls, .xlsx)の読み込みができる。
select()関数で特定の列のみ表示できる。列名にマイナス付合をつけるとその列以外を表示
# penguins データフレームに対してパイプ処理
penguins %>%
# species 以外の列を表示
select(-species)
group_by()関数:SQLのグループのような処理
drop_na()関数:NAデータを取り除く
summarize()関数:group_by()に対する要約処理を行い、結果を名前をつけた列に出力
# penguins データフレームに対し、species, island でグループ化して
# NAデータをドロップして、くちばしの長さの max, mean をそれぞれ計算して列を追加
penguins %>% group_by(species, island) %>% drop_na()
%>% summarize(max_bl = max(bill_length_mm), mean_bl = mean(bill_length_mm))
SimDesign ライブラリの bias()関数を利用して、予測値と実測値の差がどの程度なのか定量化できる
ggplot2:おそらくRで最も使われているデータビジュアライゼーション用のライブラリ、Grammar of Graphics の略。コンピュータグラフィックスで一般的なレイヤ構造を持ち、レイヤを重ねることで複雑なデータビジュアライゼーションを表現できる。
ggplot2 はかなり有名みたいで、サンプルワークとかみてるだけでもそれっぽくてカッコ良いプロットが見れるので、時間ある時にこのライブラリ掘り下げて調べてみたいです。
ggplot2 の基本的な概念:
- Aesthetic:プロット内のオブジェクトの視覚効果、プロットとデータとのマッピング
- Geom:データの表現をする幾何学的オブジェクト
- Facet:条件ごとにデータを分類して表示する機能
ggplot(data = penguins) + geom_point(mapping = aes(x = flipper_length_mm, y = body_mass_g))
- ggplot()関数:データをプロットする座標を作成、第1引数としてデータセットを指定
- +記号:ggplot()で生成したレイヤさらに他のレイヤを追加
- geom_point()関数:描画用のジオメトリレイヤを追加
- aes()関数:aesthetic の略で、x及びy軸にそれぞれの変数とのマッピングを指定
geom_smooth()関数:平滑化ラインのレイヤをプロットに追加
rename()関数:引数の順番に注意。rename(DATA_SET, NEW_NAME = OLD_NAME) となる。
facet()関数:データセットを複数のサブセットに分割してそれぞれプロットする
- facet_wrap()関数:変数1つのみでサブセットの分割(ファセット化)を行う
- facet_grid()関数:2つの変数でファセット化を行う
プロットに説明や題名を付け加える場合は以下の関数を利用する:
- labs():title, subtitle, caption といった引数を指定できる。グリッドの外側に要素を追加できる。
- annotate():こちらはグリッドの内側に要素を追加する。color, fontface, size などで加飾できる。
R Markdown という、ドキュメントのファイル形式がある。Notebook とも呼ばれ、Jupyter Notebook にかなり似た機能。行ったデータ分析の結果をまとめ、ドキュメンテーション化する。この際、出力ファイルにはHTML, PDF, Word など複数の形式を選択することができる。
R Markdown の文法は Github の .md ファイルとほぼ同じ:
- # HEADER:ヘッダー
- *ITEM:箇条書き
- *SOME_TEXT*:強調
- <URL>:リンク
- [SOME_TEXT](URL):リンク
- ![CAPTION](URL):埋め込み画像
Course 8: 総仕上げ、ケーススタディ
最終コースです。
こちらは、データ分析の実務というよりも、どちらかというとポートフォリオを作成したり、面接に挑むまでの準備であったり等、といった内容です。
Learning by doing:なすことによって学ぶ
この辺はさらっと流しながら目を通すだけで終了です。 作成したポートフォリオはまたこちらのブログに載せる予定です。
まとめ
長くなりましたが、以上、Google Data Analytics Professional Certificate でした。
Course 7: データ分析とR言語、が一番実践的かつ面白かったです。SQLによる実践も似たようなデータのクリーニングや分析ができますが、どうしても、データベースソフトの性質上大量のデータの一括処理に特化しているので、小回りが効きにくい印象です。
- データ収集をWebアプリなどで実施
- データベースにデータの蓄積
- SQLで必要なフィルタや結合などの処理をかけてデータを取り出す
- R や Python でデータの分析、そのままビジュアライゼーション作成
- R Markdown や Jupyter Notebook でレポート作成
- ステークホルダと共有
- データに基づいた意思決定および行動
の流れが現実的です。
今回は触れませんでしたが、R言語からWebアプリケーションとしてインターフェース構築できる Shiny というフレームワークがあるみたいで、こちらもまた使ってみたいです。
併せて、どちらかというと Tableau 寄りみたいですが、Google の提供するデータダッシュボード用のフレームワーク Looker も気になります。
日々の業務で製造業関係のデータ(生産計画や売上など)をよく分析してるので、この辺り実務に織り込んでいきたいですね。
表計算ソフトは日常使いしてるので特に目新しいことはなかったですが、全体を通してデータの収集や完全性の保証など、クリーニングから分析、共有まで業界のベストプラクティスや有名どころのツールについての知識が得られる点は有益です。
サイバーセキュリティと同様に、かなり価値のあるコースだと思います。
Cousera には、他にもコンピュータ関係の面白そうなコースがたくさんあるので、またガンガン受けていきます。
それでは、この辺で!
コメント