LoginSignup
3
1

More than 5 years have passed since last update.

トリム平均を求めるpythonコード

Posted at

最近統計学の勉強を始めたのですが、数学が嫌いで避けてきたこともあり、
計算が苦手やったんで計算式をコード化して考え方を身に着けようとしています。

トリム平均についての解説はネットのコピペなのでコードを追って頂いた方が正しいと思います。

トリム平均.py
# トリム平均とはデータを昇順に並び替え、最小値付近、最大値付近のデータを除外して計算する平均値のこと

# import処理
import random
import statistics


# n個 の値を持つリストを作成する。
test_data = []

# リスト内の値の個数はrandom.randint()にて100~1000個の値を生成する。
# リスト内の値は0~100の間をランダムに格納する。
for _ in range(random.randint(100, 1000)):
    test_data.append(random.randint(0, 100))

# トリム平均では最小値、最大値から指定した割合のデータを削除する必要があるので昇順ソートします。
sorted_data = sorted(test_data)

# ソートしたリスト内をすべて表示する。
print('ソートしたリスト')
print(sorted_data)
# リスト内の値の個数を表示する。
print('このリスト内の値の個数は' + str(len(sorted_data)) + '個です')
# リストの平均値を表示する。
print('このリストの平均値は' + str(statistics.mean(sorted_data)) + 'です。')

print()
print()

# 削除するデータの個数を決定します。
# ここでは0.1(10%)をリスト内の値の個数にかけることで、10%トリム平均を求めます。
trim = len(sorted_data) * 0.1
# 平均を求めると大体小数になると思うので、小数以下を切り捨てて整数に変換します。
trimed = int(trim)


# 最小値から全体10%の値を削除します。
del sorted_data[0:trimed]
# 最大値から全体10%の値を削除します。
del sorted_data[trimed * -1:]

# 削除後のリストを表示します。
print('最大値、最小値から10%を削除したリスト')
print(sorted_data)
# 削除後のリスト内の値の個数を表示します。
print('削除後のリスト内の値の個数は' + str(len(sorted_data)) + '個です')
# 10%トリム平均値を表示する。
print('10%トリム平均値は' + str(statistics.mean(sorted_data)) + 'です。')

この結果をヒストグラムにプロットすればわかりやすくなるんかな。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1