import sys import pandas as pd import matplotlib.pyplot as plt # разбираем счёт "3:1" на два числа, пустой период считаем как 0 def parse_score(df, col): parts = df[col].str.split(':', expand=True) home = pd.to_numeric(parts[0], errors='coerce').fillna(0) away = pd.to_numeric(parts[1], errors='coerce').fillna(0) return home, away def task4(filename): df = pd.read_csv(filename) # счёт по периодам, овертайму и буллитам h1, a1 = parse_score(df, 'Период_1') h2, a2 = parse_score(df, 'Период_2') h3, a3 = parse_score(df, 'Период_3') oth, ota = parse_score(df, 'Овертайм') soh, soa = parse_score(df, 'Буллиты') reg_h = h1 + h2 + h3 reg_a = a1 + a2 + a3 # за победу по буллитам команде добавляется одна шайба tie = (reg_h == reg_a) win_home_so = tie & (oth == ota) & (soh > soa) win_away_so = tie & (oth == ota) & (soa > soh) goals_home = reg_h + oth + win_home_so.astype(int) goals_away = reg_a + ota + win_away_so.astype(int) # собираем шайбы обеих команд и суммируем по каждой home = pd.DataFrame({'Команда': df['Команда_1'], 'ГЗ': goals_home}) away = pd.DataFrame({'Команда': df['Команда_2'], 'ГЗ': goals_away}) both = pd.concat([home, away], ignore_index=True) totals = both.groupby('Команда')['ГЗ'].sum().astype(int) totals = totals.sort_values(ascending=False) # рисуем гистограмму plt.figure(figsize=(12, 6)) plt.bar(totals.index, totals.values, color='steelblue') plt.title('Всего заброшено шайб за сезон') plt.xlabel('Команда') plt.ylabel('Заброшено шайб') plt.xticks(rotation=90) for i, value in enumerate(totals.values): plt.text(i, value, str(value), ha='center', va='bottom') plt.tight_layout() plt.show() if __name__ == '__main__': task4(sys.argv[1])