Counter Strike

Об источнике данных

Данные для практических заданий взяты из открытого датасета CS:GO Round Winner Classification автора Christian Lillelund, размещённого на Kaggle по адресу:
https://www.kaggle.com/datasets/christianlillelund/csgo-round-winner-classification (opens in a new tab)
Оригинальный датасет распространяется под лицензией Kaggle Community Data License Agreement (CDLA), которая разрешает образовательное использование, модификацию и распространение при условии указания авторства и соблюдения ограничений на коммерческое применение.

Получение данных

В учебной версии (урезанной нами) вес файла - около 0.8 МБ, он содержит 2 000 строк данных (в оригинальной версии 122411 строк и вес файла - 50 МБ).

Скачайте файл по ссылке ниже и сохраните его локально:

Скачать csgo_round_snapshots.csv

В итоге у вас должен быть файл csgo_round_snapshots.csv, сохранённый в папке deproschool/2_counter-strike.

deproschool
2_counter-strike
csgo_round_snapshots.csv

Если хотите быстро посмотреть данные без скачивания и без авторизации, откройте вкладку Data Card на странице датасета в Kaggle. Там в блоке Data Explorer можно увидеть строки в виде таблицы, список столбцов и краткую статистику по колонкам, также разверуть таблицу на весь экран для удобства просмотра, нажав на иконку, как показано на скриншоте ниже:

Посмотреть csgo_round_snapshots.csv онлайн

(opens in a new tab)
Просмотр файла csgo_round_snapshots.csv в разделе Data Explorer на Kaggle

Структура данных

Чтобы понять, с какими данными мы будем работать, рассмотрим структуру данных в файле csgo_round_snapshots.csv. Одна строка в этом файле - это один раунд в Counter-Strike. Создайте новый файл counterstrike.py в папке deproschool/2_counter-strike, структура проекта должна выглядеть так:

deproschool
2_counter-strike
csgo_round_snapshots.csv
counterstrike.py

В этом файле counterstrike.py будем писать код. Для начала просто выявим количество строк:

import fire
import csv
 
 
def count_csv_rows() -> str:
    with open('csgo_round_snapshots.csv', 'r', encoding='utf-8') as file:
        reader = csv.reader(file)
        row_count = sum(1 for _ in reader)
        return f"Количество строк данных: {row_count}"
 
 
if __name__ == "__main__":
    fire.Fire()

Запустите эту функцию, чтобы проверить корректность загрузки данных и увидеть количество строк. Это позволит убедиться, что файл доступен и содержит ожидаемый объём информации.

cd deproschool/2_counter-strike/
python counterstrike.py count_csv_rows

Вы должны увидеть вывод с количеством строк данных, например:
Количество строк данных: 2001.

Теперь посмотрим на первые несколько строк данных, чтобы понять их структуру. Добавьте в counterstrike.py новую функцию:

def preview_csv_data(num_rows: int = 5):
    with open('csgo_round_snapshots.csv', 'r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for _ in range(num_rows):
            print(next(reader))

Запустите эту функцию, чтобы увидеть первые строки данных:

python counterstrike.py preview_csv_data --num_rows=5
 

Вы увидите первые 5 строк данных, которые помогут вам понять, какие столбцы присутствуют и какую информацию они содержат. Это важный шаг для дальнейшего анализа и обработки данных.