前回より続けています
こちらの書籍ではC++で紹介していますが、pythonにしてみたらということで書いています。
(といってもプログラミング初心者です、誰かのためになれば。)
今回統計処理ということで簡単な平均値を紹介していました。
内容的にだいぶ簡単だったのでせっかくならもう少しと思い、「偏差値」を求めるpythonを自分なりに書いてみようと思います。
偏差値
[こちらの参考サイトで偏差値の求め方](http://www.suguru.jp/nyuushi/hensachi.html)が記載ありましたので参考に作ってみました。test36.py
#!/usr/bin/env python
#coding:utf-8
Elem = [87,76,100,97,64,83,88,92,74,95]
###sum = 0
###for i in Elem:
### sum += i
###平均点との差を求める
###ave = sum / len(Elem)
###print('平均点',ave)
###value = []
###for b in Elem:
### value.append(b - ave)
###values = []
###for c in value:
### values.append(c**2)
#分散を求めている
###sums = 0
###for d in values:
### sums += d
###平均値
M = sum(Elem) / len(Elem)
print('平均値',M)
###分散
V = sum((x - M)**2 for x in Elem) / len(Elem)
print('分散',V)
#sumsの平方根を求める
#total = int(sums) #小数点を切り捨てる
#totals = str(total) #整数値を文字列へ
#平方根を自分で求めようとして挫折
### len(totals) #桁数を調べる
### a = totals[:2] #>> 11
### b = totals[2:] #>> 74
### a = int(a)
### b = int(b)
import math #ライブラリを使います
totals = math.sqrt(V) #求められた平方根が標準偏差
print('標準偏差',totals)
#平均点との差(value * 10)に10をかけて標準偏差(totals)で割る
goukei = []
###for g in value:
### goukei.append((g * 10)/totals)
# 偏差値 = (各得点 - 平均値) / 標準偏差 * 10 + 50
for g in Elem:
goukei.append(((g - M)/totals)*10+50)
print('偏差値',goukei)
kotae = [((g - M)/totals)*10+50 for g in Elem]
print('リスト内包表記',kotae)
・・・(ターミナル実行)
>>> import test36
平均値 85.6
分散 117.44000000000001
標準偏差 10.836973747315254
偏差値 [51.291873573419736, 41.14143835369326, 63.287842469460124, 60.519541954989265, 30.068236295809825, 47.60080622079193, 52.214640411576696, 55.9057077642045, 39.295677379355, 58.67400827867536]
リスト内包表記 [51.291873573419736, 41.14143835369326, 63.287842469460124, 60.519541954989265, 30.068236295809825, 47.60080622079193, 52.214640411576696, 55.90570776420455904677379355, 58.67400827867536]
>>>
たくさんのコメント頂いたおかげさまで、
かなりコードを短く修正することができました。
こんなにご指摘いただきありがたく思います!