print('Hello world!')
import matplotlib.pyplot as plt  # グラフを描画するためのライブラリ

# データの定義(テストの点数)
data = [66, 57, 72, 65, 77, 95, 84, 91, 58]  # ここに分析したいデータを入れる

# データの個数(何人分のデータか)
count = len(data)

# 平均(データの合計を個数で割る)
mean = sum(data) / count

# 分散(データが平均からどのくらいばらついているか)
variance = sum((x - mean) ** 2 for x in data) / count  # 1/Nで割る(不偏分散ではない)

# 標準偏差(分散の平方根をとったもの。データのばらつきの大きさを示す)
std_dev = variance ** 0.5

# 最小値と最大値
min_val = min(data)
max_val = max(data)

# 中央値
sorted_data = sorted(data)
if count % 2 == 1:
    median = sorted_data[count // 2]
else:
    median = (sorted_data[count // 2 - 1] + sorted_data[count // 2]) / 2

# 四分位点
q1_index = int(count * 0.25)
q3_index = int(count * 0.75)
q1 = sorted_data[q1_index]
q3 = sorted_data[q3_index]

# 度数分布表用の区間
bins = [50, 60, 70, 80, 90, 100]  # ← 80 を追加
freq_table = {f"{bins[i]}-{bins[i+1]}": 0 for i in range(len(bins)-1)}

# 各データを区間に振り分け
for value in data:
    for i in range(len(bins)-1):
        if bins[i] <= value < bins[i+1]:
            freq_table[f"{bins[i]}-{bins[i+1]}"] += 1
            break
        elif value == bins[-1]:  # もしデータが100なら最後の区間に含める
            freq_table[f"{bins[-2]}-{bins[-1]}"] += 1

# 結果出力
print(f"データの個数: {count}")
print(f"平均: {mean:.2f}")
print(f"分散: {variance:.2f}")
print(f"標準偏差: {std_dev:.2f}")
print(f"最小値: {min_val}")
print(f"25%点(Q1): {q1}")
print(f"中央値: {median}")
print(f"75%点(Q3): {q3}")
print(f"最大値: {max_val}")

print("\n点数の分布:")
for interval, freq in freq_table.items():
    print(f"{interval}: {freq}人")

# ヒストグラム
plt.hist(data, bins=bins, edgecolor='black', align='left')
plt.xticks(bins[:-1], [f"{bins[i]}-{bins[i+1]}" for i in range(len(bins)-1)])
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Data Distribution (Grouped)')
plt.show()

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: