Compare commits
No commits in common. "63b22539ce59a22dd636e1bb9f415db555f2b259" and "cbda648900a6c968bb2b10ac191df9807ab5aee2" have entirely different histories.
63b22539ce
...
cbda648900
1 changed files with 0 additions and 79 deletions
|
|
@ -1,79 +0,0 @@
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
import pandas as pd
|
|
||||||
|
|
||||||
import main as mn
|
|
||||||
|
|
||||||
def calculate_team_points(filename):
|
|
||||||
df = pd.read_csv(filename)
|
|
||||||
# Считаем очки команд за периоды, овертаймы и булиты
|
|
||||||
h1, a1 = mn.parse_score(df, 'Период_1')
|
|
||||||
h2, a2 = mn.parse_score(df, 'Период_2')
|
|
||||||
h3, a3 = mn.parse_score(df, 'Период_3')
|
|
||||||
oth, ota = mn.parse_score(df, 'Овертайм')
|
|
||||||
soh, soa = mn.parse_score(df, 'Буллиты') # Счет по буллитам
|
|
||||||
|
|
||||||
# Складываем очки, получая итоговый счет
|
|
||||||
home_goals = h1 + h2 + h3
|
|
||||||
away_goals = a1 + a2 + a3
|
|
||||||
tie = home_goals == away_goals
|
|
||||||
|
|
||||||
# Проверка кто проиграл/выйграл по итогу матча или овертайма, или буллита
|
|
||||||
home_win = (home_goals > away_goals) | (tie & ((oth > ota) | ((oth == ota) & (soh > soa))))
|
|
||||||
away_win = (away_goals > home_goals) | (tie & ((ota > oth) | ((oth == ota) & (soa > soh))))
|
|
||||||
|
|
||||||
home_overtime_loss = tie & ((ota > oth) | ((oth == ota) & (soa > soh)))
|
|
||||||
away_overtime_loss = tie & ((oth > ota) | ((oth == ota) & (soh > soa)))
|
|
||||||
|
|
||||||
# Подсчитываем итоговое кол-во очков
|
|
||||||
home_points = 2 * home_win.astype(int) + home_overtime_loss.astype(int)
|
|
||||||
away_points = 2 * away_win.astype(int) + away_overtime_loss.astype(int)
|
|
||||||
|
|
||||||
# Соединяем 2 таблицы
|
|
||||||
points = pd.concat([
|
|
||||||
pd.DataFrame({'Команда': df['Команда_1'], 'О': home_points}),
|
|
||||||
pd.DataFrame({'Команда': df['Команда_2'], 'О': away_points}),
|
|
||||||
])
|
|
||||||
|
|
||||||
# Собираем таблицу с помощью groupby,
|
|
||||||
return points.groupby('Команда')['О'].sum().sort_values(ascending=False)
|
|
||||||
|
|
||||||
|
|
||||||
def show_points_histogram(filename, output=None):
|
|
||||||
points = calculate_team_points(filename) # Получаем очки
|
|
||||||
|
|
||||||
plt.figure(figsize=(12, 7)) # Создаем таблицу 12 на 7 дюймов
|
|
||||||
plt.bar(points.index, points.values, color='steelblue') # Строим столбчатую диаграмму, по очкам по y
|
|
||||||
plt.title('Гистограмма набранных командами очков')
|
|
||||||
plt.xlabel('Команда')
|
|
||||||
plt.ylabel('Очки')
|
|
||||||
plt.xticks(rotation=75, ha='right') # Чтобы не накладывались подписи, мы выравниваем и вращаем их
|
|
||||||
plt.grid(axis='y', alpha=0.3) # Отображение координатной сетки
|
|
||||||
plt.tight_layout() # Автоматическая настройка отступов
|
|
||||||
|
|
||||||
# Сохранение если указан нужный аргумент
|
|
||||||
if output:
|
|
||||||
plt.savefig(output, dpi=200)
|
|
||||||
print(f'Гистограмма сохранена в файл: {output}')
|
|
||||||
else:
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) not in (2, 3):
|
|
||||||
print('Использование: python3 individual_1.py <csv-файл> [файл_для_сохранения]')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
filename = sys.argv[1]
|
|
||||||
output = sys.argv[2] if len(sys.argv) == 3 else None
|
|
||||||
|
|
||||||
if not os.path.isfile(filename):
|
|
||||||
raise FileNotFoundError(f'Файл не найден: {filename}')
|
|
||||||
|
|
||||||
show_points_histogram(filename, output)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
Loading…
Reference in a new issue