LoginSignup
8
19

More than 3 years have passed since last update.

(メモ)Jupyter Notebookしゅごい、しゅごすぎて思わず統計解析した

Last updated at Posted at 2021-04-15

はじめに

最近、今更ながらJupyter Notebookを知り、あまりの便利さに思わず睡眠時間が削られ寝不足です。
何がすごいかというと。

  • インストールが簡単。試すだけならGoogle Colaboratoryがある
  • マークダウンでささっとドキュメントが書ける
  • そのドキュメントの中にpythonやらrubyやらのコードが埋め込め、ブラウザ上でそのまま実行できる
  • 実行結果がそのままブラウザに反映される
  • HTMLとかjavascriptでちょこっと書いたコードをプレビュー可能
  • matplotlib.pyplotなんかを使うとグラフが埋め込める
  • プラグインを使ってそのままpdfやHTMLやプレゼン資料にコンバートできる(!!!!!!便利すぎて涙でる!!!!!!!!!!)
  • emacsから編集も可 ←←←←←←←←←←

ほかにも色々あるかもしれませんが、メモとしてはすごく便利で、
慣れないライブラリをちょこっと試してみるときとか、
ちょっとした量のデータをあれこれ試行錯誤しながら加工するときとか、
あれこれ試行錯誤した過程も含めて記録できるのが画期的だと思います。

なにやるの、そら解析でしょ!!

pythonといえば数値解析のライブラリが充実しまくってることで有名ですが、
私も学生時代に習ったことを思い出しながら簡単な解析をしてみました。

元データとして総務省がだしてるこちらの都道府県庁所在市別・家計消費データを使いました。
中身は家計調査の⼆⼈以上の世帯の、都道府県庁所在市別、品⽬別(⾷料の全品⽬)、
1世帯当たり年間⽀出⾦額(2017年〜2019年の平均値)です。

データの読み込みと簡単なグラフ

csvでダウンロードしてきたデータを読み込みます。
(フォントファミリを指定してるのは文字化け対応です。)

import pandas as Pd
import matplotlib.pyplot as PyPlot
import numpy as Np

PyPlot.rcParams["font.family"] = "TakaoPMincho" 

d = Pd.read_csv('./SSDSE-2020C.csv', encoding="shift-jis",header=1)

続いて、各都道府県別のスパゲッティの年間支出金額をプロットしてみます。
データの中身は都道府県&市ごとに各品目のデータが入っているので、
都道府県ごとにスパゲティの金額だけ合計すると....

sum_spgty = Pd.DataFrame(d.groupby(["都道府県"])["スパゲッティ"].sum())

fig = PyPlot.figure(dpi=120, figsize=(16,9))
sum_spgty.unstack().plot.bar()

こんな感じにプロットできます。

graph-result-01.png

エクセルで列を選ぶより簡単!!

散布図をプロットする

今度はスパゲティの消費金額と餅の消費金額の相関関係を調べるため、散布図を書いてみます。

sum_tgt = Pd.DataFrame(d.groupby(["都道府県"])["もち"].sum())  #餅の分を追加で集計

fig = PyPlot.figure(dpi=120, figsize=(16,9)) #画面の大きさ調整
PyPlot.scatter(sum_spgty,sum_tgt)                             #X軸スパゲティ、Y軸もち

graph-result-02-spgty-mochi.png

相関係数は求めてませんが、右上あがりの散布図なので、
どうやらスパゲティを消費する人は餅も消費する、という相関関係がありそうです。

相関係数をまとめて求めてグラフにする

次に相関係数を求める、というのが教科書の定番ですが、
思い切って他の品目も全組み合わせ求めて一気にプロットしてみます。

import seaborn as Sb

df_corr = d.corr() # dは最初に読み込んだCSVのデータフレーム

fig = PyPlot.figure(dpi=120, figsize=(16,9)) #画面の大きさ調整

Sb.heatmap(df_corr)

こんだけで

graph-result-03-heatmap.png

このグラフ!!!
この手軽さ!!!!
エクセルにはできないでしょ!!!!!

色の白っぽい所が相関が高いところで、黒っぽい所が逆に低いところです。
このヒートマップからざっくりわかるのは、

  • 味噌とか合いびき肉は軒並み他の品目と相関が低い→そもそも合いびき肉も味噌も消費金額が低いので相関が低い
  • 野菜の消費とほかのほとんどの品目はなんとなく相関がありそう

などです。

ちなみに、相関の傾向が近いものをソートして並べてくれるクラスタマップというのもあって


fig = PyPlot.figure(dpi=120, figsize=(16,9))

Sb.clustermap(df_corr)

graph-result-04-cluster.png

といった感じです。

おわりに

まだ使い始めたばかりですが、ええからやってみなはれ精神を後押しする、
プロトタイピングとか教育用には最高のツールだなって思いました。
あーーー、またまた睡眠時間削られちゃうよーーーーー

8
19
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
8
19