統計学Ⅰ(B)2026 第4回

第4回 Python統計処理入門

計算は機械に、判断は人間に

統計学Ⅰ(B) 北星学園大学
小野原 彩香

統計学Ⅰ(B)2026 第4回

今日から、あなたがコードを書く

ここまで電卓・グラフ用紙でやってきた人、お疲れさま。

これからは1秒です

第2・3回の代表値・ばらつきを、今日は自分のコードで。
やるのは空欄 ____ を埋めるだけ。

統計学Ⅰ(B)2026 第4回

前回の答案から ―― 第3回の記述

満点24名(49%)/平均57.0点

今回から「今日のColabで確認した数値を最低1つ引用する」を実際に適用

多かった型 人数
① ノートの数値を引いていない 13名
② 設問の片方が書かれていない 5名
③ SDの値から外れ値を断定した 3名
④ 因果が逆/数値の取り違え 各2名
統計学Ⅰ(B)2026 第4回

① いちばん多かったのは、これ

仮に生の体重の歪度が正の値であれば、右に長い裾を持つ分布だと分かる

ノートには +7.60 と出ている。なのに仮定の話にしてしまった。

自分で出した数字は、仮定ではなく事実

「生の体重の歪度は+7.60だった」―― これだけで通過する。

もう1つ惜しい例:「妊娠期間の歪度がほぼ0なのに正規分布ではなかった」
指摘は今回いちばん鋭い。−0.06 と書けばよかっただけ。

統計学Ⅰ(B)2026 第4回

④ そして、今日いちばん効くのがこれ

生のスケールの体重の歪みは 7.254 であった

  • 歪度 +7.60 … 分布の形を表す指標(単位なし)
  • 平均−1SD −7,254 g … ありえない体重(単位はg)

7.254 という数字は、ノートのどこにもない。

機械は数字を出す。それが何の数字かは言わない

df["体重g"].mode() → 992.4
―― 意味のある最頻値かどうかは、画面には出てこない。

計算は機械に、判断は人間に。 今日の課題B1は、ここを聞いている。

統計学Ⅰ(B)2026 第4回

エラーは失敗ではない

エラーメッセージ=「ここが違うよ」というお知らせ

  • KeyError: '列名' → 列名のスペル違い
  • SyntaxError → カッコ・全角/半角・インデント
  • 文字化け □□ → japanize のセルを実行したか

落ち着いて読めば、原因はたいてい書いてある。

統計学Ⅰ(B)2026 第4回

データは「表」= DataFrame

df = pd.read_csv(URL)   # 表を読み込む
df.shape                # (種数, 列数)
df.head()               # 先頭5行

行 = 1つの種
列 = 体重・妊娠期間などの項目

統計学Ⅰ(B)2026 第4回

代表値をコードで(第2回の再現)

df["体重g"].mean()      # 平均  → 5880.9
df["体重g"].median()    # 中央値 → 3006.0
df["体重g"].mode()      # 最頻値 → 992.4  ← ?
df["一腹産子数"].mode() # 最頻値 → 1.01   ← ?
df["科"].mode()         # 最頻値 → オナガザル科

電卓で出した値と同じ。違いは速さと正確さだけ。

統計学Ⅰ(B)2026 第4回

最頻値 992.4 g ―― 計算は通る。では何を表す?

.mode() = データに最も多く記録されている値

  • 体重の記録がある265種のうち、992.4 g が 6種でいちばん多い
  • その6種は、いずれも同じ Callicebus 属(なぜ同じ値かはCSVからは不明)
  • 連続量では、測定精度・丸め・まとめ方で「同じ値の回数」が変わる

中央値3,006 gから離れていること自体は誤りではない(歪んだ分布では普通)
最多でも、分布の山や典型的な体重を表すとはかぎらない → ヒストグラムも見る

第3回の偏差値159と同じ ――
計算が通ることと、その数字をどう読めるかは別

統計学Ⅰ(B)2026 第4回

一腹産子数 1.01 ―― 1行が何を表しているか

子の数なのに小数。この列は種ごとに整理・調整された代表値だから
(この表では1.01が74種。「1.01頭生まれる」ではない)

数えているのは種であって、出産ではない


同じ値が繰り返し現れる列なら、最頻値はそのまま読める

df["科"].mode()          # → オナガザル科
df["科"].value_counts()  # → オナガザル科 132種

=「この表にいちばん多く入っている科」と、そのまま解釈できる

統計学Ⅰ(B)2026 第4回

ばらつき・要約・集計

df["妊娠期間日"].std()                  # SD → 37.8(日)
df["妊娠期間日"].var()                  # 分散 → 1427.2(日²)
df["体重g"].describe()                  # 一気に要約
df.groupby("科")["体重g"].mean()        # 科別平均
df.isna().sum()                         # 欠損の確認
plt.hist(df["体重g"].dropna())          # グラフ1行

手計算なら数十分 → 一瞬

分散の単位は2乗(日²)。.std() / .var() の分母は既定で n−1

統計学Ⅰ(B)2026 第4回

まとめ

やりたいこと コード
列を取り出す df["列名"]
平均/中央値/最頻値 .mean() .median() .mode()
標準偏差/分散 .std() .var()
要約 .describe()
グループ集計 df.groupby("列")["列"].mean()
欠損 df.isna().sum()
統計学Ⅰ(B)2026 第4回

まとめ

計算は機械に任せ

人間は「どの数字を信じるか」に集中する

次回:相関と因果 ―― 「相関」と「因果」の決定的な違い