窓口の待ち時間は何分ですか
市役所の市民課で、窓口の改善を任されました。課長から「ふだんの待ち時間は何分か、一つの数で教えて」と言われます。
待ち時間は人によって違います。全員分の数を並べても、答えにはなりません。全体を表す数の選び方を、今日は三つ学びます。
このレッスンのゴール
メモ
データの平均、中央値、範囲を求めることができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| 平均 | 全部を足して、個数で割った値です。 | |
| 中央値 | 小さい順に並べた、真ん中の値です。 | |
| 範囲 | 最大の値から最小の値を引いた差です。 | |
| 外れ値 | ほかと比べて、極端に大きいか小さい値です。 | |
| sorted | 小さい順に並べた新しいリストを作る命令です。 | sorted([3, 1, 2]) |
学生が入力するセルは、このプレビューでは空白です。
平均は、足して個数で割ります
平均は、全部の値を足して、値の個数で割ったものです。
5人の待ち時間が、4分、6分、8分、10分、12分だったとします。合計は40分で、5人なので、40 ÷ 5 で平均は8分です。
Pythonでは、for 文で合計を出し、len で割ります。
平均の待ち時間を出す
# 市役所の窓口で、午前中に5人が待った時間(分)です。
waits = [4, 6, 8, 10, 12]
total = 0
for w in waits:
total = total + w
print("合計:", total, "分")
print("平均:", total / len(waits), "分")
# 50 をリストの最後に足して、平均がどう変わるか見ましょう。
中央値は、並べて真ん中を見ます
中央値は、小さい順に並べたときの真ん中の値です。
個数が奇数なら、真ん中は一つです。偶数なら真ん中が二つあるので、その二つの平均にします。
6人目に、手続きが複雑で50分待った人が入りました。並べると 4、6、8、10、12、50 で、真ん中は8と10です。中央値は9分です。
50分の人が入ると、どう変わるか
| 5人 | 6人(50分を追加) | |
|---|---|---|
| 合計 | 40分 | 90分 |
| 平均 | 8分 | 15分 |
| 中央値 | 8分 | 9分 |
| 範囲 | 12 - 4 = 8分 | 50 - 4 = 46分 |
学生が入力するセルは、このプレビューでは空白です。
よくある間違い
注意
平均がいつも「ふつうの値」だと思う人が多いです。でも外れ値が一つあると、平均は大きく動きます。6人の平均は15分ですが、15分以上待った人は一人だけです。外れ値があるときは、中央値も一緒に伝えます。
中央値と範囲を出す
waits = [12, 4, 50, 8, 6, 10]
# sorted は、小さい順に並べた新しいリストを作ります。
ordered = sorted(waits)
print("並べた順:", ordered)
n = len(ordered)
middle = n // 2
if n % 2 == 1:
median = ordered[middle]
else:
# 偶数個のときは、真ん中の二つの平均です。
median = (ordered[middle - 1] + ordered[middle]) / 2
print("中央値:", median, "分")
# 範囲は、最大から最小を引いた値です。
print("範囲:", max(waits) - min(waits), "分")
# 50 を 5 に変えて、中央値と範囲がどう動くか見ましょう。
範囲は、ばらつきの大きさです
平均や中央値だけでは、待ち時間がそろっているかどうかは分かりません。
範囲は、いちばん長い待ち時間から、いちばん短い待ち時間を引いた差です。範囲が小さければ、だれが来ても同じくらい待ちます。範囲が大きければ、長く待つ人がいるということです。
Pythonでは max(waits) - min(waits) で求めます。