Python3(Numpy, pandas, Scipy)で、合計、平均、中央値、最頻値、(標本)分散、(標本)標準偏差、標準化(基準化)、偏差値を算出。

Python3コード

#!/usr/bin/env python3


"""(docstring)

使用したデータは『Rによるやさしい統計学』の第2章。
"""


# あまりスマートなimportのやり方ではないと思うが、
# ちょっと明示的に使い分けたいので。
# (あと、PEP8に従いたければ、アルファベット順にimport)。

# 主に簡単な計算用に。
import numpy as np

# 統計関連関数用に。
import pandas as pd

# 複雑めな計算があれば。
import scipy as sp
#
# 統計関連のサブパッケージ
from scipy import stats

# プロット
# import matplotlib.pyplot as plt


def main():
    """(docstring)
    """

    # matplotlibで日本語が文字化けするなら(macOSやOS Xの場合)。
    # (設定ファイルをいじれない環境にいる場合等)。
    # font = {'family': 'Osaka'}
    # (たぶん(でも、だいたいこれでいけるはず))。

    # 合計
    print(10+13+8+15+8)
    print(np.sum(10+13+8+15+8))
    # 関数名にしろ変数名にしろ、test_ から始めるのは避けたほうがいいが、
    # 書籍で、"テストa"となっているんでそれに近い名にした。
    test_a = np.array([10, 13, 8, 15, 8])
    print(test_a)
    print(np.sum(test_a))

    # 平均
    print(np.sum(test_a)/5)
    print(np.sum(test_a)/len(test_a))
    print(np.mean(test_a))

    # 中央値
    print(np.median(test_a))

    # 最頻値
    # stats.mode()だけでも可だが、明示的に。
    print(sp.stats.mode(test_a))

    # (標本)分散
    # pandasのvar()で、引数ddof=0にする。
    print(test_a.var(ddof=0))

    # (標本)標準偏差
    # pandasのstd()で、引数ddof=0にする。
    print(test_a.std(ddof=0))
    print(round(test_a.std(ddof=0), 6))
    res = round(test_a.std(ddof=0), 2)
    print(res)

    # 標準化(基準化)
    psychology_test = np.array([13, 14, 7, 12, 10,
                                6, 8, 15, 4, 14,
                                9, 6, 10, 12, 5,
                                12, 8, 8, 12, 15])
    print(sp.stats.zscore(psychology_test))

    # 偏差値
    z = sp.stats.zscore(psychology_test)
    deviation_value = 10*z+50
    print(deviation_value)

if __name__ == '__main__':
    main()

出力

54
54
[10 13  8 15  8]
54
10.8
10.8
10.8
10.0
ModeResult(mode=array([8]), count=array([2]))
7.76
2.78567765544
2.785678
2.79
[ 0.90045034  1.20060045 -0.90045034  0.60030023  0.         -1.20060045
 -0.60030023  1.50075056 -1.80090068  1.20060045 -0.30015011 -1.20060045
  0.          0.60030023 -1.50075056  0.60030023 -0.60030023 -0.60030023
  0.60030023  1.50075056]
[ 59.00450338  62.0060045   40.99549662  56.00300225  50.          37.9939955
  43.99699775  65.00750563  31.99099324  62.0060045   46.99849887
  37.9939955   50.          56.00300225  34.99249437  56.00300225
  43.99699775  43.99699775  56.00300225  65.00750563]

参考文献

Rによるやさしい統計学

Rによるやさしい統計学