初めて学ぶPythonと統計学・入門②~平均所得から考える度数分布とヒストグラム~

初めて学ぶPythonと統計学入門②です。本連載では初学者が例を考えながら統計学とはなんぞやということを勉強できる講座となっております。そしてデータサイエンスでは特に人気のプログラミング言語Pythonで、初心者でもコピペするだけで動かせるコードを付けますので実体験を持って勉強することができます!

それでは本記事では度数分布とヒストグラムについて学びます。

ケーススタディ ~給料がいいのはどっち?~

太郎君は大学4年生で就活も終盤のところです。幸いなことに太郎君はA社とB社から内定をもらっており、どちらの会社に就職するかを決めるだけです。しかし困ったことに太郎君が最も重視している給料がどれぐらいもらえるのかということが両社ともに発表されておらず、仕方なしに太郎君は両社に務める従業員15人に給料について聞いて回ることにしました。その結果が下です。

A社の給料の結果[300,400,200,500,600,300,900,600,500,800,300,400,200,700,1000,900,400,200,600,700]

B社の給料の結果[200,300,400,200,1500,1300,300,400,1500,300,200,400,800,600,200,200,1000,300,200,200]

さぁ、あなたが太郎君だったらどっちの会社を選びますか?という問題です。

B社の方が年収1千万越えの社員がいてよさそうですね、それともA社の方がいいんですかね。このようにただ数値の羅列だけだと状況がつかみにくいので、ぱっと見でもわかりやすいようにする便利な道具が度数分布表です。上のデータを表に整理してみましょう。

下の表では200万円ごとに分割(0円より大きく200万円以下のようにです)して、その間にいる人数を表しています。

A社とB社の度数分布

どうですか、A社では従業員全体がちょうどよく給与が分散しているのに対し、B社では給料低い人が多いが少数の人がやたら高い給料を獲得していることがわかりますね。ただ、表だけだとまだ数値で比べるので見づらいです。そこでヒストグラムという度数の分布を一目でわかるグラフを書いてみます。すると下のような画像になります。

x軸が給与、y軸が人数

さあ、今度はどうでしょうか。A社とB社の給与の方針がよくわかったのではないでしょうか。実は両社の給与平均をとると525万円で同じなのが、給与配分の実態としては大きな差がありますね。もし、太郎君が自分が超有能だと思い込みB会社でもバリバリトップ張っていけると考えたなら、最上位になればより多くの給料をもらえるB社を選択するでしょうし、逆に平均的に仕事をやってプライベートと両立させたいなぁと考えるのならばA社の方が着実に少し高めの給料を獲得することを望むでしょう。このように図示化することは意思決定をするうえで非常に重要な鍵となる情報を提供します。あなただったらどちらの会社を選択しますか?

このようにA社、B社の従業員に給料を聞きまわったデータを、度数分布表にまとめ、そしてヒストグラムを作成することで、より分かりやすくデータの概要を理解することができたのではないでしょうか。このようにデータを正しく効率的に読み取ることが記述統計学の本質ですので、その一端を感じ取ってもらえれば幸いです。

次章ではPythonのコードの解説をいたしますので、上の表やヒストグラムの作り方を学べます。今回は表やグラフの作成と表示と理解するのが少し難しいとは思いますので、是非データをコピペをして Google ColabでPythonで表やヒストグラムが作られるのを体験して楽しむのがお勧めです!

Pythonで度数分布表とヒストグラムを作ってみる(難易度★★★★☆)

まずPythonの使い方については入門①で解説していますのでそちらをご覧ください

今回は下の画像のように一つのブロックに対してコードのセットを対応させます。コード自体は画像の下にコピペできるように記載しておりますので貼り付けて実行ボタンを押してみてください!

まず一番先頭はおまじないのコードを書きます。これはPythonで使える便利な道具キットを呼び出しているみたいなコードです。

次に給料のデータを入力します。下のコードをコピペしたのち実行ボタンを押すとA社とB社の給与データを表示することができます。DataFrameというのは複数列のデータを格納することができ、列ごとに平均をとったり様々な処理ができて便利なので変換をします。

次にA社の度数分布表を作成します。これもスペルミスをすると厄介ですのでコピペするとよいと思います!salary_data_binsというのは給料の分布の幅を表しており今回は200万円刻みます。そしてsalary_AではA社の給料のみを抽出しており、salary_A_cut_dataはA社の給料をその200万円刻みで分けたどこに該当するかを表します。例えば500万円の給料の場合は(400,600]に振り分けられます。そしてpd.value_counts(salary_A_cut_data).sort_index()で度数分布表の表示します。

次にA社と同様にB社の度数分布表を作成します。

そしてA社とB社のヒストグラムを作成します。ここでは比較しやすいように両社を同じグラフ上に記載します。

どうでしたか、上の画像のように記入できていればあとは実行ボタンを押せば表やヒストグラムが作成されると思います!確認してみてください。

終わりに

度数分布表やヒストグラムといったものの道具としての有用だなぁと感じてもらえたでしょうか。

今回はいきなり難しかったですが、Pythonで実際に表やグラフを作成することができると知ればいつか本格的に勉強をしようというときに心理的な障壁が下がると思いますし、また統計学の理解も深まりますので是非コードを動かしてみることをお勧めします。

最後まで読んでくださりありがとうございました。

ツイッターのフォローは

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です