Описание данных

Вам предоставляется история команд-участников в следующем виде:

  • Файл selected_team_matches.csv содержит общую информацию о турнирных матчах команд.
    1. дата матча,
    2. название турнира,
    3. имя команды, которая играла за сторону radiant,
    4. имя команды, которая играла за сторону dire,
    5. победившая сторона,
    6. id матча.
In [2]:
import pandas as pd

matches_info = pd.read_csv('selected_team_matches.csv')
matches_info.head()
Out[2]:
date tournament radiant dire winner match_id
0 2012-06-24 The Defense 2 WhA EG DIRE 22270148
1 2012-06-28 The Defense 2 Unknown EG DIRE 22959375
2 2012-06-29 StarSeries II Finals EG Empire DIRE 23152391
3 2012-06-29 StarSeries II Finals EG NEXT.kz RADIANT 23160256
4 2012-07-11 The Defense 2 EG Unknown DIRE 25449321
  • Файл selected_team_match_info.jsonlines содержит детальную информацию на конец матча. Пример:
{
    # информация по команде dire
    'dire_captain': 140153524,       # id пользователя, который является капитаном
    'dire_logo': 438325350317236404, # id логотипа команды
    'dire_name': u'CDEC Gaming',     # имя команды
    'dire_team_complete': 1,         # 1, если команда играет в полном составе
    'dire_team_id': 1520578,         # id команды

    # информация по команде radiant
    'radiant_captain': 101695162,
    'radiant_logo': 35248220277958798,
    'radiant_name': u'Vici Gaming',
    'radiant_team_complete': 1,
    'radiant_team_id': 726228,

    # информация на конец матча
    'radiant_win': False,          # true, если победила сторона radiant
    'start_time': 1438225184,      # время начала матча в формате UNIX timestamp
    'duration': 2446,              # длительность матча в секундах
    'first_blood_time': 227,       # время первого убийства в секундах от начала матча
    'game_mode': 2,                # режим игры 2 == captains_mode
    'leagueid': 2733,              # id лиги
    'match_id': 1671421953,        # id матча
    'match_seq_num': 1489986726,   # порядковый номер матча
    'negative_votes': 128,         # число отрицательных оценок зрителей
    'positive_votes': 2423,        # число положительных оценок зрителей
    'barracks_status_dire': 63,    # состояние бараков
    'barracks_status_radiant': 63, # (см. ниже битовую маску) 
    'tower_status_dire': 1972,     # состояние вышек 
    'tower_status_radiant': 1796   # (см. ниже битовую маску) 

    # выбор героев (стадия пиков и банов)
    'picks_bans': [
        {
            'hero_id': 52,     # id героя
            'is_pick': False,  # true, если герой был выбран командой, false, если запрещён
            'order': 0,        # порядковый номер действия
            'team': 1          # 0, если действие совершила команда radiant, 1, если команда dire
        },
        ...
    ],

    # информация про игроков
    'players': [
        {
            # информация про изучения способностей
            'ability_upgrades': [
                {
                    'ability': 5582, # id способности
                    'level': 2,      # уровень героя, на котором способность была изучена
                    'time': 937      # время в секундах от начала матча, когда способность была изучена
                },
                ...
            ],
            'account_id': 101695162, # id пользователя
            'assists': 3,            # кол-во "ассистов"
            'deaths': 6,             # кол-во смертей
            'denies': 5,             # кол-во добитых союзных "крипов"
            'gold': 787,             # золото игрока по окончанию матча
            'gold_per_min': 221,     # среднее заработанное золото в минуту
            'gold_spent': 7520,      # потраченное золото
            'hero_damage': 6170,     # нанесённый урон
            'hero_healing': 543,     # кол-во восстановленного здоровья себе и союзникам
            'hero_id': 101,          # id героя
            'item_0': 79,            # id предмета в 0 слоте рюкзака
            'item_1': 187,
            'item_2': 46,
            'item_3': 0,
            'item_4': 180,
            'item_5': 77,
            'kills': 3,              # кол-во совершённых убийств
            'last_hits': 66,         # кол-во добитых вражеских "крипов"
            'leaver_status': 0,      # 0, если игрок не покидал игру до конца игры
            'level': 13,             # уровень героя на конец игры
            'tower_damage': 0,       # урон, нанесённый героем по вышкам
            'xp_per_min': 223        # средний получаемый опыт в минуту
        },
        ...
    ]

}

Состояние вышек

Состояние вышек закодировано 16-ю битами. Правые 11 бит показывают состояние каждой вышки соответствующей команды, левые 5 бит не используются.

  • 1 - вышка есть
  • 0 - вышки нет
    ┌─┬─┬─┬─┬─────────────────────── Not used.
    │ │ │ │ │ ┌───────────────────── Ancient Bottom
    │ │ │ │ │ │ ┌─────────────────── Ancient Top
    │ │ │ │ │ │ │ ┌───────────────── Bottom Tier 3
    │ │ │ │ │ │ │ │ ┌─────────────── Bottom Tier 2
    │ │ │ │ │ │ │ │ │ ┌───────────── Bottom Tier 1
    │ │ │ │ │ │ │ │ │ │ ┌─────────── Middle Tier 3
    │ │ │ │ │ │ │ │ │ │ │ ┌───────── Middle Tier 2
    │ │ │ │ │ │ │ │ │ │ │ │ ┌─────── Middle Tier 1
    │ │ │ │ │ │ │ │ │ │ │ │ │ ┌───── Top Tier 3
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─── Top Tier 2
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─ Top Tier 1
    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Состояние бараков

Аналогично состоянию вышек, состояние бараков кодируется 8-битным числом. Правые 6 бит показывают состояние соответсвующих бараков, а левые 2 бита не используются.

  • 1 - барак есть
  • 0 - барака нет
   ┌─┬───────────── Not used.
   │ │ ┌─────────── Bottom Ranged
   │ │ │ ┌───────── Bottom Melee
   │ │ │ │ ┌─────── Middle Ranged
   │ │ │ │ │ ┌───── Middle Melee
   │ │ │ │ │ │ ┌─── Top Ranged
   │ │ │ │ │ │ │ ┌─ Top Melee
   │ │ │ │ │ │ │ │
   0 0 0 0 0 0 0 0

Пример загрузки матча

In [1]:
import json

with open('selected_team_match_info.jsonlines', 'r') as matches_file:
    for line in matches_file:
        match = json.loads(line)
        
        # Обработка матча
        break

+