年齢層ごと( 1~5, 6~11, 12~17, 18~39, 40~64, 65~)の肥満率を調べて、グラフに表示するプログラムを組んだのですが、実行すると写真のように6~11歳、 12~17歳の2範囲でグラフが表示されません。どこが間違っており、どのように修正すればよいのでしょうか。下に実行したプログラムを記載します。 # 1. 必要なモジュール等をインポート import pandas as pd import matplotlib.pyplot as plt # 2. 肥満率の計算に関する関数を定義 # BMIを計算する関数 def bmi(height, weight): return weight / ((height/100)**2) # ローレル指数(RI)を計算する関数 def calculate_ri(height, weight): return weight / (height ** 3) # 肥満かどうかを判別する関数 def is_obese(age, height, weight): if age >= 16 and bmi(height, weight) >= 25: return True elif 1 <= age <= 5 and bmi(height, weight) >= 17: return True elif 6 <= age <= 15 and calculate_ri(height, weight) >= 14.5: return True else: return False # 3. データの読み込み df = pd.read_csv('data.csv') # 4. データの各行についての繰り返し処理 # 各年齢層の人数・肥満人数集計用リストの初期化 # 集計する年齢層: 1~5, 6~11, 12~17, 18~39, 40~64, 65~ age_count = [0, 0, 0, 0, 0, 0] # 各年齢層の人数 obese_count = [0, 0, 0, 0, 0, 0] # 各年齢層の肥満人数 # 各行について繰り返す for index, row in df.iterrows(): # この行の年齢, 身長, 体重の値を参照 age = row['Age'] height = row['Height'] weight = row['Weight'] # if文で年齢に対応する上記リストのインデックス番号を特定 if age <= 5: idx = 0 elif 6 <= age <= 11: idx = 1 elif 12 <= age <= 17: idx = 2 elif 18 <= age <= 39: idx = 3 elif 40 <= age <= 64: idx = 4 else: idx = 5 # その値を増やす age_count[idx] += 1 # 肥満かどうかを判別 if is_obese(age, height, weight): obese_count[idx] += 1 # 5. 各年齢層の肥満率(パーセンテージ)を計算 obesity_percentage = [obese_count[i] / age_count[i] * 100 for i in range(len(age_count))] # 6. 棒グラフを描画 age_labels = ["~5", "6~11", "12~17", "18~39", "40~64", "65~"] plt.bar(age_labels, obesity_percentage) # 7. 図の設定 plt.ylim(0, 100) # 座標軸範囲を設定 plt.title('Obesity Rate of each Age Group') # 図のタイトル plt.xlabel('Age Group') # X座標軸のラベル plt.ylabel('Obesity Rate(%)') # Y座標軸のラベル plt.grid(True) # グリッド線 # 8. 図を表示 plt.show()
プログラミング