エクセルとpythonで5数要約の計算と箱ひげ図の作成

グラフ実装
Yamu
Yamu

今回はデータの中央値
四分位数と最大値で
構成される
箱ひげ図に関して
紹介、作り方を
説明していきます

[PR]※本サイトにはプロモーションが含まれています

この記事はこんな人におススメ
  • 5数要約について知りたい
  • エクセル,pythonを使って5数要約表を作りたい
  • 箱ひげ図について知りたい
  • エクセルやpythonを使って箱ひげ図を作りたい

箱ひげ図(box plot)とは?

箱ひげ図は統計データの分布を視覚的に示すために

使用される図の一種です。

データから四分位数、最大値

の5数を表現し

箱のようにグラフ化したものの事です

データの外れ値やデータのばらつき具合を

把握するのに役に立ちます

Yamu
Yamu

5数の値を視覚的に
表現したものが箱ひげ図なんですね!
次に5数について説明します

5数要約とは?

データを小さい順(降順)に並べたとき

データの四分位数、最大値

を計算し、データの特徴を

簡潔に表現する方法です。

  • 最小値
    →一番小さい値
  • 第1四分位数
    →データを小さい順に並べて、最小値から1/4番目
    (25%)にあたる点(O1)
  • 中央値
    →データの1/2番目(50%)にあたる点(Q2)
  • 第3四分位数
    →データを小さい順に並べて、最小値から3/4番目
    (75%)にあたる点(O3)
  • 最大値
    →データを小さい順に並べたとき一番大きい値

箱ひげ図の各部分と四分位数の関係

箱ひげ図(ボックスプロット)では

四分位数が以下のように視覚的に表現されます

箱の下端:第1四分位数(Q1)

箱の上端:第3四分位数(Q3)

箱の中央線:第2四分位数(Q2、中央値)

ひげ(whiskers):一般的にはQ1から1.5倍の四分位範囲(IQR)以下の最小値
       Q3から1.5倍の四分位範囲以上の最大値

外れ値:ひげの範囲を超えたデータポイント

エクセルでデータを纏めて5数計算をしよう

2018年横浜市1月の日ごと平均気温のデータ

6.5,7.6,5.7,5.7,4.4,5.8,7.7,6.6,9.1,7.4,5.8,7.7,6.6,9.1,7.4,5.8,3.5,3.6,4.9,7,8.2,9.5,9.2,8.8,7.3,7.6,2.3,5.7,3.1,0.7,1.2,2.9,3,4.9

Yamu
Yamu

エクセルに
データをセットし
5
数の計算をします

データセットと5数要約の表を用意する

セルに5数を計算するためのエクセル関数を用意する

エクセル関数
最小値=QUARTILE.INC(データ範囲,0)
または=MIN(データ範囲)
第一四分位数=QUARTILE.INC(データ範囲,1)
中央値=QUARTILE.INC(データ範囲,2)
または=MEDIAN(データ範囲)
第三四分位数=QUARTILE.INC(データ範囲,3)
最大値=QUARTILE.INC(データ範囲,4)
または=MAX(データ範囲)

セルにエクセル関数を入れ計算をして表を完成させる。

Yamu
Yamu

完成しました。
次にpythonを使った
5数計算説明します

pythonを使って5数要約の表を作ろう

1.データの入ったCSVファイルを読み込ませる

import pandas as pd
data=pd.read_csv('/input/temp.csv')
data.head()

出力結果

Yamu
Yamu

pd.read.csvでファイルを読み込んで
head()でファイルの中身を確認しています。

2.data[‘列名’].describe()を準備して要約統計量を計算する

import pandas as pd
data=pd.read_csv('/input/temp.csv')
data.head()
#要約統計量
data['Ave_temp'].describe()

出力結果

data['Ave_temp'].describe()
Yamu
Yamu

describe()で
カラム内の
データの5数の
計算ができるんですね

エクセルで箱ひげ図を作ろう

Yamu
Yamu

1月から4月の
横浜市の1日の
平均気温のデータを
持ってきました
このデータから

箱ひげ図を
実装します

データを選択、すべてのグラフ、箱ひげ図を選択する

凡例とグラフタイトルを入れて完成

pandasで箱ひげを作る

import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv('/input/temp.csv')
df.boxplot(patch_artist=True)

出力結果

Yamu
Yamu

月ごとの
平均気温の分布が
可視化できましたね!

タイトルとURLをコピーしました