Q11 つの数値の平方根 を計算するときに使うのはどれですか?
math と statistics — 単発計算とデータ集計
Python の math / statistics モジュールを基礎から解説します。math.sqrt / pi / floor / ceil / log による単発の数値計算、statistics.mean / median / stdev によるデータの集計関数、2 つのモジュールの役割の違いまで、ハンズオンで学べます。
Python の 数値計算系 モジュールのうち、普通の float で十分なケース を整理します。math は 1 つの値に対する計算(平方根・対数・三角関数など)を、statistics は データ列の集計(平均・中央値・標準偏差)を担当します。誤差を厳密に避けたい場合は次の記事で扱う decimal / fractions を使います。
math — 1 つの数値に対する計算
math は 1 つの数値に対する計算 を提供する標準ライブラリです。math.sqrt で平方根、math.floor / math.ceil で切り捨て・切り上げ、math.log で対数、math.sin / math.cos で三角関数など、教科書的な数学関数が一通り入っています。math.pi / math.e のように 属性として定数 も持っています(円周率・自然対数の底)。
math.pi / math.e は 値そのもの(関数ではなく属性)。| 関数 / 属性 | 意味 | 例 |
|---|---|---|
| math.sqrt(x) | 平方根 (戻り値は float) | math.sqrt(16) → 4.0 |
| math.floor(x) | 切り捨て (戻り値は int) | math.floor(3.7) → 3 |
| math.ceil(x) | 切り上げ (戻り値は int) | math.ceil(3.2) → 4 |
| math.log(x, base) | 対数 (base 省略時は自然対数) | math.log(100, 10) → 2.0 |
| math.pi | 円周率 (定数) | 3.141592653589793 |
| math.e | 自然対数の底 (定数) | 2.718281828459045 |
import math
print(math.sqrt(16)) # 4.0 (float)
print(math.floor(3.7)) # 3 (int)
print(math.ceil(3.2)) # 4 (int)
print(math.log(100, 10)) # 2.0
print(math.pi) # 3.141592653589793
print(round(math.pi, 4)) # 3.1416 (4 桁に丸め)
statistics — データ集計と要約
statistics は 複数の値(データ群)を集計 するためのモジュールです。statistics.mean で 算術平均、statistics.median で 中央値、statistics.mode で 最頻値、statistics.stdev で 標本標準偏差 を 1 行で求められます。外れ値が混じるデータでは中央値(median)が平均より代表値として安定する といった統計の基本も、この 1 モジュールで試せます。
| 関数 | 意味 | 例 |
|---|---|---|
| statistics.mean(d) | 算術平均 | mean([1,2,3]) → 2 |
| statistics.median(d) | 中央値 (外れ値に強い) | median([1,2,3,4]) → 2.5 |
| statistics.mode(d) | 最頻値 (一番多く出る値) | mode([1,2,2,3]) → 2 |
| statistics.stdev(d) | 標本標準偏差 | ばらつきの大きさ |
import statistics
prices = [1200, 1500, 1100, 1400]
print(statistics.mean(prices)) # 1300 (平均)
print(statistics.median(prices)) # 1300.0 (中央値)
print(statistics.stdev(prices)) # 約 182.57 (標準偏差)
# 外れ値があると平均と中央値の差が広がる
with_outlier = [1200, 1500, 1100, 1400, 100000]
print(statistics.mean(with_outlier)) # 21040 (外れ値に引っ張られる)
print(statistics.median(with_outlier)) # 1400 (外れ値の影響を受けにくい)
理解度チェック
まずは1問ずつ答えてみましょう。
Q2リストの平均 を求めたいとき最も適切なのはどれですか?
Q3外れ値の影響を受けにくい中央値 を求めるのはどれですか?