03. Excelによる探索的データ分析
3.1 Excelによる集計
3.1.1 Excel 関数を使った集計
Excel の関数を使った集計として,すでに SUMIF を学びました。ここでは Excel のデータの要約に関して,COUNT, COUNTIF, AVERAGE, AVERAGEIF, そして空白セルの扱いについて説明します。
以下では実際の状況を想定し,関数の使い方を紹介していきます。前回作成したExcelファイルに続けて実習をしていくので、ファイルを開いて準備したうえで,まずは,動画を見てみましょう。
Mac × 日本語
Windows × English
COUNT 関数
こんなシチュエーションを想像してください。 みんなは今ある会社で働いていて,各支店が請求書の内容を打ち込んだデータがあり,上司から,タスク(1) すべての支店の請求書は合計で何枚だった?と聞かれたとします。 この質問に回答するのが最初のタスクです。
1枚の請求書のデータが1行になっているので,小さなデータだったら最後の行を行番号を見て回答することもできます。表の最後の行に行くショートカットキーを覚えていますか?忘れた人はテキストの復讐をしておきましょう。
この問いに対するもうひとつの解決方法はCOUNT関数を使うことです。
=COUNTIF(F2:F201)
COUNT関数は,範囲内の数値を含むセルの個数を返してくれます。任意のセルに,COUNT関数を入力し,引数に金額の範囲(ここでは,F2セルからF201セルまでを選択)を選んでください。そうすると200という戻り値が返ってきます。 これがデータの個数,統計でいうNです。この場合,n=200と表現します。
あなたは無事上司に,200枚です!と答えることができました。
COUNTIF 関数
つぎに上司に,支店ごとの請求書はどこが多かった?と聞かれたとしましょう。つまり,タスク(2) 支店ごとの請求書の合計は何枚か?です。これは支店名の度数表を作成する作業になりますので,COUNTIF 関数を使いましょう。
=COUNTIF(検索範囲, 検索条件)
で,指定した検索範囲にある検索条件の度数を数えてください,という関数になります。検索条件が文字列のときは,文字列を""(引用符)で囲むことを忘れないでくださいね。
=COUNTIF(B$2:B$201, Q2)
ここでは,請求書が発行された支店名が記載された列(B列)を対象に,特定の支店名(Q列のセル)に一致するものがいくつ登場したか,をカウントしています。
AVERAGEIF 関数
さらに上司に,請求書の平均金額はどの支店が一番高かった?と聞かれました。タスク(3) 支店ごとの平均金額はいくらかです。 まずは,動画のように支店ごとの合計金額(R列)を支店ごとの度数(S列)で割るという数式で,平均金額を計算してみましょう。
=R2/S2
次に,関数を使った方法を実践してみましょう。AVERAGEIF関数を使えば,条件にあったグループ毎にそれぞれの平均を求めることができます。=AVERAGEIF(条件の対象となる範囲, 条件,平均する範囲)
で実行できます。
=AVERAGEIF(B$2:B$201, Q2, F$2:F$201)
ここでは,条件となる支店名(Q列)に合致する支店名をB列から探し,その請求書の金額(F列)を集計し,平均を計算しています。
空白セルの取り扱い
数式を使った結果と関数を使った結果で,計算結果は同じに見えますが,関数を使うことがお薦めです。なぜかというと,空白のセルの扱いが違うからです。
ちょっとデモンストレーションをしてみましょう。動画のように,ためしに福岡の金額データをひとつ消去してみましょう。 すると,数式で入力した方の平均値は変わりましたが,AVERAGEIF関数の平均値は減っていません。なぜでしょうか?
ちょっとデモンストレーションを見てみましょう。動画のように,ためしに福岡の金額データをひとつ(F2セル)消去してみましょう。 すると,数式で入力した方の平均値(T列)は変わりましたが,AVERAGEIF関数の平均値(U列)は減っていません。なぜでしょうか?
あ,消したF2セルのデータは,前回習ったアンドゥでちゃんと戻しておきましょう。
これは関数における空白セルの取り扱いが異なることに由来します。基本的にExcelは空白セルを0として扱うため,数式の方では平均値が小さくなりました。 他方,関数によっては,空白セルを計算に入れない欠損値と認識し,無視してくれます。
AVERAGEIF関数のリンク先の「解説」を見てください。「平均範囲内の空白のセルは無視されます。」とあります。しかし関数だからといって,すべての空白セルを一律に無視するわけでもありません。同じ「解説」には,「条件」範囲内の空白のセルは 0 と見なされるとあります。
AVERAGEIF関数のリンク先の「解説」を見てみましょう。「平均範囲内の空白のセルは無視されます。」とあります。ただし関数だからといって,すべての空白セルを一律に無視するわけでもありません。同じ「解説」の部分をよく読むと,「条件」範囲内の空白のセルは 0 と見なされるとあります。
このように,関数は空白を0とみなすか,空白を欠損値とみなして無視するか,その機能に合わせて適切に判断するよう便利に作られているので,関数があるのであればそれを使いましょう。
3.1.2 Excel テーブル
ここまでは,Excelのセル範囲の中で,関数を使って統計量を算出しました。ここでは,テーブルについて学びます。 ウィンドウ枠を固定しないでテーブルのずっと下に行っても,列のタイトル行が見えていたら,それはテーブルです。テーブルではない,今まで使っていた普通のセルの部分をExcelではセル範囲といいます。
テーブルのすごいところは,Excelがテーブルを認識してくれることです。今回は,テーブルが新たな列を認識したり,集計してくれたりすることを実習で体験します。
なかなかイメージが湧きにくいと思いますので,まずは動画を見てみましょう。
Mac × 日本語
Windows × English
以下の準備のために,動画の冒頭と同じように,新しいシートを作成し,Tableと名付けましょう。それから,「Input Data」シートの生データ部分を,「Table」シートに貼り付けておいてください。
テーブル作成には,主に3つのやり方があります。
「Table」シートの,入力セルのどこでもよいのでクリックして,(1)~(3)のどれかの操作をしてね。動画ではショートカットキーを使い,範囲でOKを押しています。
下のボタン(Download the Data)からCopyFromHere03.xlsxをダウンロードし,「カード」・「車種」・「エンジン」・「車体」・「外装」・「足回り」・「保安」の7列を,動画のように学籍番号ファイルの「Table」の横に貼り付けてください。Excelが瞬く間ににテーブルのつづきと認識して,同じテーブルの一部となるはずです。
テーブルの中のセルをクリックしてみると,画面上部のリボンにテーブルデザイン(Macはテーブル)が表れます。動画ではこのテーブルデザインから,表の縞模様をなくしていました。皆さんも,自分の好きなデザインを選んでください。
それ以外にも,集計行(Total Row)にチェックを入れると,表の最下行に集計行が追加されます。追加された後,集計行のセルをクリックすると,ドロップダウンリストから様々な基本統計量(平均など)を選ぶことができます。
最後に,テーブル形式をやめてふつうのセルに戻りたいときの話をします。これは,先ほどのテーブルデザインの中にある範囲に変換をクリックするだけです。テーブルには,またいつでも変換することができるので,次の実習に移る前に「Table」シートのテーブルを範囲に変換したままにしておいてください。
3.1.3 Excel ピボットテーブル
1節の最後として,セル範囲からピボットテーブルに変換する方法を紹介します。ピボットテーブルは,データの計算,集計,分析を行う便利なツールです。まずは動画を見てみましょう。
Mac × 日本語
Windows × English
動画の作成手順をまとめてみました。次の節では,このピボットテーブルの機能を使った実習となるため,必ず自分でやってみてください。
3.2. Excelによる可視化
可視化とはデータをグラフなどで表すことを指し,視覚的にデータの中にあるパターンを把握します。ここでは,ひとつの変数の値(量的データ)がどのように分布しているのかを見るのに使われるヒストグラムや,質的データの可視化に使われる円グラフを紹介します。
ヒストグラムは基本のグラフ機能,円グラフはピボットグラフ機能で描くことによって,Excel のこれらのグラフの機能を解説していきます。
なお,後半ではより発展的な可視化についても紹介しますので,是非自分で取り組んでみてください。
3.2.1 ヒストグラム
最初に,1つの量的データの分布を可視化する基本のグラフであるヒストグラムを作成します。ここでは量的データの例として,年齢をとりあげます。
それでは動画に従って,実習をしていきます。まずは流れを確認するため,ここまで作成したファイルを開いた状態で,一通り動画を見てください。なお,動画では,作業しやすいように数式バーの広さを白い上下矢印のカーソルで調整したり,ズームスライダーで表示を拡大したりしています。
Mac × 日本語
Windows × English
さて,では同じように作業をしてみましょう。まずはAgeのセル範囲をショートカットキーで選択し,リボンの「挿入」 > グラフ > 統計グラフの挿入 > ヒストグラムをクリックします。
動画のように,ヒストグラム自体を新しいワークシートにしたいので,出現したヒストグラムの中をクリックしてリボンにグラフのデザインを出しましょう。「グラフの移動」 > 「新しいワークシート」 > ワークシートの名前を「ヒストグラム」にして,移動させましょう。
次に,横軸を10歳代,20歳代,・・・60歳代以上に分けるのに,「軸の書式設定」ウィンドウを出します。軸の書式設定ウィンドウは,以下のいずれかの方法で開くことができます。
なお,Macでは,グラフのデザイン>グラフ要素を追加>軸>その他の軸オプション でも可能です。(以下の画像を参照)
さらに,「軸の書式設定」 > 「軸のオプション」 > 「ビンの幅」で,ヒストグラムの横幅を選びます。この場合は年代ごとなので,10に設定します。
「ビンのアンダーフロー」では,入力値以下をヒストグラムの一番左のビンとして設定します。この場合,10歳代なので19に設定します。「ビンのオーバーフロー」では,入力値より大きいをヒストグラムの一番右のビンとして設定します。この場合は60歳代以上をまとめたいので,59に設定して,59歳より大きい値(つまり60歳以上)が一番右側のビンになるようにします。
これでデータの分布を視覚化できました!カードの使用年齢なので,左側は18歳で打ち切りになっています。ただ,それを考慮しても20歳代の使用が多く,左に歪んだ分布になっています。この形は正の歪度[わいど]といいます。逆に右に歪んだ分布は歪度が負となります。左右対称の分布の場合は歪度が0です。
最後に,グラフのタイトルをつけましょう。タイトルの部分をクリックして,「年齢のヒストグラム」と入力しましょう。動画ではデモンストレーションとして色を変えたり,スタイルやデータラベルのオプションを変えたりしています。皆さんも自分の好きなスタイルにしてください。
3.2.2 円グラフ
続いて,1つの質的データの分布(比率)の可視化に用いられる円グラフを,Excel の ピボットグラフで作成,編集していく方法を紹介します。
車種A~車種Jという質的データ(質的変数)の分布を把握する円グラフを実習で作成していきます。質的データの特徴は,車種Aに1,車種Bに2と数値を振り分けたとしても,それは単なるラベルであって,車種B=2が車種A=1の2倍であるとはならない点にあります。なので,その数値は四則演算に使うことはできず,平均などでデータの全体像を把握することはできません。そのため,質的データがどのような分布となっているかは,全体に対する各データの比率を確認することで行われます。ここでのタスクは,テーブルシートの「車種」列から,どの車種がどの比率でレンタルされているかを把握することです。
集計をしてからグラフ化するには,ピボットテーブルとピボットグラフを使うのが便利です。では,動画でその流れを確認していきましょう。
Mac × 日本語
Windows × English
大まかな作業は2つです。まず,元のデータから度数分布表をピボットテーブルで集計して,それをピボットグラフにします。ピボットグラフは,基本のグラフとほぼ同様に編集できますが,違いは大きく3つあります。以下にまとめておきました!
では,動画を振り返りながら,ピボットグラフで円グラフを作ってみましょう。まず車種のデータを選択し,先ほど学んだように,ピボットテーブルを新規ワークシートに作成します(Macは特に)。「挿入」の「ピボットテーブル」をクリックし,新しいワークシートにビボットテーブルを作成してください。
次に,ビボットテーブルを作成したワークシートで,「挿入」の「ピボットグラフ」をクリックし,「円グラフ」を選択すれば,円グラフを作成できます。タイトルは「車種別レンタル比率」としておきましょう。
これはピボットグラフではない基本のグラフでも同じ編集操作ですが,円グラフに比率も表示させたい場合には,クイックレイアウトから選択しましょう。動画では,より自分好みに表示を設定するために,値ラベルを書式設定パネルから指定する方法を紹介していました。値ラベルの表示を,書式設定パネルから値と%にチェックを入れて,両方表示するよう指定しています。
また,動画では,フィールドボタンの中身を確かめたのち,フィールドボタンを消す操作をしています。特定のフィールドボタンを消すには,ピボットグラフ分析リボンのフィールドボタンの下から選びます。すべてのフィールドボタンを一気に消すには,フィールドボタンアイコンをクリックします。
上の図は,何を示したいときにどのグラフを使えばよいかというチャートで,アメリカの大学などでよく使われています。今後はcopilotのように,図の作成はAIが指示通りに作成してくれるようになるでしょう。今後必要になってくるのは,どういうときにどのような図を作るのが適切かという判断になることと思います。 このグラフの上右下左に示されているように,グラフで示したいことには大きく分けて,比較,分布,構成比,関係の4つがあります。
ここまではExcelの基本の図とピボットグラフを紹介するのに,分布からヒストグラム,構成比から円グラフを紹介しました。つぎに,より発展的な,比較の中で推移を把握する,棒グラフ・折れ線グラフ,スパークライン,トレンドラインを,中村先生が紹介してくれます。中村先生,よろしくお願いします!
3.2.3 積み上げ棒グラフ・折れ線グラフの作成と編集
こんにちは!このHPの管理をしている中村です。ここでは,よりデータの特徴を掴むために,比較を行います。
その中でも推移を把握する,積み上げ棒グラフと折れ線グラフの組み合わせグラフについて,まずは解説していきます。
なお,私のパートではグラフごとに都合の良いデータが異なるので,それぞれに合ったデータを用意しています。毎回,ダウンロードして実習を行ってください。また,動画内では講義も兼ねた解説をしているので,それも聞きながら作業を行ってみてください。
Windows × 日本語
English subtitles in YouTube: Click on the gear button for "Settings" > Subtitles > Auto-translate > Choose "English" -> Click on CC Button for Subtitles/closed captions
3.2.4 スパークライン
積み上げ棒グラフでは全体の傾向を把握することができましたが,項目ひとつひとつの推移を探索的に可視化したい場合には,スパークラインが便利です。
この機能は便利なのですが,あまり知っている人が多くありません。時系列のデータなどで上手く使えると資料やレポートをワンランクアップさせることができます。ぜひ覚えて使ってみてください。
Windows × 日本語
English subtitles in YouTube: Click on the gear button for "Settings" > Subtitles > Auto-translate > Choose "English" -> Click on CC Button for Subtitles/closed captions
3.2.5 比較(推移)の応用:トレンドライン
最後に,他の条件が同じで,今のままの推移の傾向が続いた場合の予測であるトレンドライン(近似曲線)について解説します。
データの特徴が分かるだけでなく,その傾向から,今後どのような予測が立てられるのかも知りたいですよね。そんなときに簡単に傾向と予測を可視化できる機能が,このトレンドラインです。簡単に実践することができるので,是非覚えておきましょう。
Windows × 日本語
English subtitles in YouTube: Click on the gear button for "Settings" > Subtitles > Auto-translate > Choose "English" -> Click on CC Button for Subtitles/closed captions
3.2.6 地図
ここからは,おまけのデモンストレーションです。まずは地図の作成です。新型コロナの2021年4月25日の都道府県別人口100万人あたりの感染者数のデータを塗り分けマップにする操作を見せています。動画内のデータは,札幌医科大学医学部 附属フロンティア医学研究所 ゲノム医科学部門のまとめを出典としています。
Windows × 日本語
Windows × English
Windows × 日本語
Windows × English
3.2.8 マクロ・VBAを少しだけ織り交ぜて,棒グラフレースのデモンストレーション
最後に,棒グラフレースのデモンストレーションです。時間の経過とともに,各国のGDPや都道府県ごとの人口を表す棒グラフが変化していく動画を見たことはないでしょうか?あれが棒グラフレースです。
この棒グラフレースでは,Excelのマクロという機能を使います。マクロには,VBA (Visual Basic for Applications)というプログラミング言語が使われているので,あくまで紹介に留めます。
Windows × 日本語
Windows × English
Mac × 日本語
Mac × English
動画の中で使っているVBAプログラムは,以下に掲載しておきますので,興味がある人は自分でもやってみてください。
Sub RaceBar()
'年次変化を棒グラフで辿る
Dim nCount As Integer
For nCount = 2010 To 2019
DoEvents
ActiveWorkbook.Worksheets("棒グラフレース").Range("N3") = nCount
'動きが速すぎる場合,下の1行を追加して1秒ずつ変化させることもできる。1秒でなくても,時間は自分で指定可能。
Application.Wait (Now + TimeValue("0:00:01"))
DoEvents
DoEvents
Next
End Sub
Sub RaceReset()
'西暦を2010 に戻す
ActiveWorkbook.Worksheets("棒グラフレース").Range("N3") = 2010
End Sub
© Chikako Takeishi. Designed by Chikafumi Nakamura. All Rights Reserved.