From e680cd51318bb010130e349adedcbc0fa715ca2e Mon Sep 17 00:00:00 2001 From: Danil Date: Sun, 28 Jun 2026 18:57:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=BD=D0=B4=D0=B8=D0=B2=D0=B8=D0=B4?= =?UTF-8?q?=D1=83=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- individual_4.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 individual_4.py diff --git a/individual_4.py b/individual_4.py new file mode 100644 index 0000000..6dafd54 --- /dev/null +++ b/individual_4.py @@ -0,0 +1,57 @@ +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]) -- 2.45.2