Excel + football-data.co.uk
#21 OFFLINE
Posted 19 March 2015 - 22:56
Расскажу Вам механизм подготовки данных к анализу. Берется весь пакет csv-файлов с сайта. Т.к. я немного на Java пишу, то написал небольшую программу которая помогает мне в подготовке данных. В эту программу загружаются все данные с csv-файлов и парсятся по соответствующим полям. Потом рассчитываются все дополнительные поля и весь массив данных выгружается обратно, но уже в один csv-файл. Этот файл без проблем импортируется в Ексель и сразу же создается таблица со всеми нужными нам данными. Фактически, в каждой строке мы имеем некоторые данные о матче (лига, дата, раунд, финальный счет, ...), а также состояние одной и другой команды до матча (вот сюда и направлены основные расчеты). В итоге мы получаем одну большую таблицу на несколько десятков тысяч записей, которая уже исследуется с помощью сводных таблиц.
Такая объединенная таблица позволяет нам исследовать данные по разным срезам (чемпионаты, года, раунды, коэффициенты, результаты, голы...), что очень удобно. Мало того, рассчитанные нами критерии позволяют нам смотреть на то, как состояние команды до матча (а также разница некоторых показателей двух команд) влияет на результат и находить на этой основе ниши, где можно потенциально иметь положительное ROI. Конечно, открытым остается вопрос, который Вы часто задаете "А повториться ли?". Но этот вопрос скорее риторический, т.к. будущего мы знать не можем. А можем лишь надеяться, т.е. прогнозировать.
Кстати, для того, чтобы рассчитать банк не обязательно создавать столбики с единицами и нулями, хотя эти вспомогательные данные в некоторых случаях приносят определенные удобства. Мы можем просуммировать соответствующий коэффициент по одному из исходов и сравнить его с общим количеством игр. Что, кстати, делается в три движения мыши, работая с PivotTable. Плюс, если учесть, что записав простенький макрос, можно одним кликом привести сводную таблицу к требуемому виду, то менять целые срезы! кликая лишь один раз на кнопку, можно далеко не везде.
А задача, которая у меня возникла в процессе пользования данным инструментом, появлялась, конечно, не так часто. Но достаточно для того, чтобы заметить ее и попытаться решить, не нарушив при этом того, что уже сделано и обкатано. Поэтому мне нужно решить именно! эту задачу.
Единственным, на данный момент, рабочим решением является дублирование записей с изменением значений по полям. Имея вспомогательный инструментарий в виде программы, эта задача решается написанием пары лишних строк кода. Минусом такого решения является двукратное увеличение размера файла, что не очень-то и трагично. Возможно, есть и более элегантное решение. Может быть оно кроется в структуре данных, может быть где-то еще. Но, решая эту задачу я, с одной стороны разведал новые возможности Екселя, а с другой - воткнулся в его ограничения.
Там есть такая штука как PowerPivot, которая предоставляет нам возможность создавать связанную базу данных из нескольких таблиц в самом файле Екселя. У меня все была надежда, что я или в Екселе, или в Аксесе вынесу из наших данных команды в отдельную таблицу. Получиться у нас две таблицы: матчи и команды. Тогда их можно было бы связать по ключу по полям HomeTeam и AwayTeam. А это означало бы, что открыв в сводной таблице нашу БД, я бы выбрал из таблицы "Команды" названия команд и отфильтровав по одной из них, получал весь набор матчей данной команды. Но дело в том, что модель данных в Екселе поддерживает только одну связь между таблицами. Т.е. если у нас есть связь к полю HomeTeam, то связь к полю AwayTeam не активна. В итоге мы возвращаемся к тому, откуда пришли, ни на сантиметр не сдвигаясь с места.
При всей поддержке разного рода коннектов с внешними БД (будь то Access или какой-нибудь SQL-server) , мы постоянно будем впираться в это ограничение. Единственный вариант, где надо немного похимичить нашел здесь. Но это тоже немного через ..опу. И тоже с дублированием данных ))
#22 OFFLINE
Posted 20 March 2015 - 07:33
а вот у вас допустим как такая проблема будет решаться? По идее сводную таб. можно обновить...но тогда надо ж всё равно в каком-то файле их иметь готовыми ..... Дело в том что я практически не знаю Access и инструментом типа сводная таблица мне показалось пользоваться слишком замороченным делом. Вчера попробовал поразбираться в этом деле...но у меня стоит ексель 10-ка (причем левая) и там похоже не все примочки присутствуют---не смог собрать там листы книги --вот если качнуть файл all-euro-data-2013-2014 то там каждая лига на своём листе и хз как эти листы засунуть скопом в сводную таб..---я так подозреваю надо их все собрать на одном листе, а потом его использовать для сводной....
Я когда графики делал для окон и банков то тоже заморочился с похожим вопросом...потом плюнул(так как дозабивать новые данные (по общаку) в таблицы не особо хотелось и стал делать только для дома и гостя отдельно...поэтому меня в принципе ваш вопрос тоже интересует (так как это поможет избавить от лишних вычислений....ибо общих параметров может быть достаточно много если критериев и характеристик по Д/Г много).
#23 OFFLINE
Posted 20 March 2015 - 11:56
1. Загружаем файл all-euro-data-2013-2014.xls и кладем его в папку Soccer.
2. Рядом создаем файл analysis.xlsx и создаем в нем следующий макрос (взят отсюда):
4. Сохраняем его и закрываем. Он у нас будет служить как источник данных.
5. Теперь нам надо активировать надстройку PowerPivot в Excel 2013 (по умолчанию она не активирована). Когда активируем, на главной панели появиться вкладка POWERPIVOT.
6. Далее надо создать connection с нашей таблицей исходных данных. Для этого вкладка DATA->Existing Connections->Browse for More... и выбираем наш файл all-euro-data-2013-2014.xls, далее выберем лист с общими данными.
7. Появиться окошко Import Data, где отметим Only Create Connection и Add this data to the Data Model. Ексель загрузит данные с указанного листа себе в встроенную БД.
8. На выходе у нас получиться, на первый взгляд, чистый файл. Т.е. в листах данных не будет, они будут храниться в модели данных. С ней мы и будем работать.
9. Переходим на вкладку POWERPIVOT->MANAGE и заходим в наше хранилище данных. Здесь мы будем рассчитывать требуемые нам критерии с помощью вычисляемых полей (Calculated Field). Например, здесь мы можем одной формулой добавить такой критерий как ROI_D (игра флетом), например. Выглядеть формула будет следующим образом:
=CALCULATE(SUM([BbMxD]);FILTER('Combined';[FTR]="D"))-COUNTA([FTR])(У вас общая таблица после сборки будет называться Combined)
Теперь этот показатель будет у нас работать на любом срезе данных. Мы можем его смотреть в контексте лиг, команд, количества забитых голов и т.д. А можем, например, для каждого из 1х2 коэффициентов создать диапазоны с требуемым размахом и смотреть ROI для каждого исхода по диапазонам коэффициентов [1.1-1.3],[1.3-1.5],[1.5-1.7], ...
10. Некоторые из шагов делаются для того, чтобы работая с теми файлами, которые будут обновляться, мы смогли легко обновлять данные в нашем рабочем файле, сохраняя при этом все рассчитанные нами коэффициенты. Например, мы анализируем текущий сезон, а текущий файл на сайте обновляется раз в неделю. Все что надо, чтобы получить актуальные данные:
- скачать файл с сайта и поместить его в папку Soccer, заменив старый;
- открыть файл и запустить макрос по сборке листов в один;
- в рабочем файле нажать Refresh.
Данные обновятся автоматически, т.к. у нас сохраняется название и местоположение файла, из которого мы берем наши данные.
Это все, конечно, не решает поднятого мной вопроса, но создает такой себе довольно хороший инструмент для анализа, если предварительно немного попотеть и вбить в расчеты требуемые критерии. Но рассчитать можно многое. Например, сделать себе обычную турнирную таблицу с помощью вычисляемых полей и сводной таблицы не составит большого труда.
Вообще, сводная таблица - это такая себе таблица-конструктор из которого, оперируя исходными полями, можно сложить практически любой необходимый ракурс. Даже финансовые стратегии там тестировать можно. Но для этого необходимо забить формулы критериев, т.к. в чистых исходных данных мало на что можно смотреть. Хотя, когда начинал работу с этими таблицами в связи с football-data.co.uk, то и из исходных данных получалось вытягивать интересные вещи. А польза от Access’а, как я уже писал, отпадает по той причине, что импортируя данные в Excel мы теряем все преимущества хранения данных в Access'e.
P.S.: Ну а если возможности перейти на Excel 2013, то это затруднит лишь решение вопроса с обновлением данных. И в этом случае данные будут храниться в обычной таблице, но вычисляемые поля, сводные таблицы и макрос по сборке листов работать будут.
Edited by tester.nt, 20 March 2015 - 12:04.
#24 OFFLINE
Posted 20 March 2015 - 12:17
По сводным таблицам в Excel 2013 есть хорошая серия видеоуроков от lynda.com - Excel 2013: Pivot Tables in Depth. На rutracker'e можно найти.
Edited by tester.nt, 20 March 2015 - 12:24.
#25 OFFLINE
Posted 05 October 2015 - 14:39
tester.nt, on 20 March 2015 - 12:17, сказал:
А много там несостыкованных столбцов? какие еще данные кроме рефери удалить надо?
#26 OFFLINE
Posted 07 October 2015 - 18:24
Villivall, on 05 October 2015 - 14:39, сказал:
А много там несостыкованных столбцов? какие еще данные кроме рефери удалить надо?
Посмотрите в этой теме (Ссылка Здесь) моё сообщение за 15 мая. Там предложен более эффективный вариант решения данной задачи. Также там есть еще 2 интересных видео по работе с данными в екселе.
Edited by tester.nt, 07 October 2015 - 18:25.
#27 OFFLINE
Posted 08 October 2015 - 08:12
tester.nt, on 07 October 2015 - 18:24, сказал:
Edited by Bambuk, 08 October 2015 - 08:13.
#28 OFFLINE
Posted 08 October 2015 - 16:18
#29 OFFLINE
#30 OFFLINE
Posted 12 October 2015 - 12:03
#31 OFFLINE
Posted 12 October 2015 - 13:40
Nickbet, on 12 October 2015 - 12:03, сказал:
Ситуация в нете дурацкая--нет ни где ресурса где всё вместе есть: то Машка дома--Васьки нету то Васька дома--Машки нету....
Edited by Bambuk, 12 October 2015 - 13:42.
#32 OFFLINE
Posted 12 October 2015 - 14:56
Сам конвертировал все таблицы с football-data в SQL под MySQL в виде отдельных таблиц за каждый сезон E0_01_02, E0_02_03 и т.д, кое-чего можно находить , особенно при ставках на угловые+фолы+жк.
Все запросы пишу на PHP, но щас решил Питон освоить под него библиотек полно для обработки данных.
Есть ли возможность соединить эти базы? мб у кого международные турниры имеются типа ЛЧ. ЛЕ. ЧМ. ЧЕ?
В общем неплохо было бы создать хорошую бд для исследователей и капперов или что-то типа конструктора и тестера стратегий как на фондовом рынке =)
#33 OFFLINE
Posted 16 October 2015 - 08:41
tester.nt, on 07 October 2015 - 18:24, сказал:
Да я вроде все как надо делал. Прям по видео, используя этот самый файл, но у меня при загрузке строк выскакивает больше 6000 ошибок, я так понял было,что из-за нестыковки по количеству инфы в каждой конкретной лиге.
#34 OFFLINE
Posted 16 October 2015 - 10:47
Bambuk, on 12 October 2015 - 13:40, сказал:
При желании все можно найти.
Есть любая статистика и по-минутам, и по-таймам, угловым,карточкам,ударам по воротам...
Другое дело, что такая статистика не бесплатна.
ИМХО тут важен сам подход к теме
Есть четкая стратегия и хочется проверить ее, наверное стоить купить доступ к такой статистике.
А если никаких мыслей нет, а есть только надежда, что сама статитика подскажет идею, то это деньги на ветер.
Я так думаю
#35 OFFLINE
Posted 16 October 2015 - 15:00
Noname, on 16 October 2015 - 10:47, сказал:
При желании все можно найти.
Есть любая статистика и по-минутам, и по-таймам, угловым,карточкам,ударам по воротам...
Когда myscore пишет одну стату, soccerway другую, а betradar третью на один и тот же матч.....и ни редко бывает, что официальный источник не отображает нужный тебе статистический параметр.....вот он головняк начинается
#36 OFFLINE
Posted 16 October 2015 - 15:49
Vladislove, on 16 October 2015 - 15:00, сказал:
Когда myscore пишет одну стату, soccerway другую, а betradar третью на один и тот же матч.....и ни редко бывает, что официальный источник не отображает нужный тебе статистический параметр.....вот он головняк начинается
#37 OFFLINE
#38 OFFLINE
Posted 17 October 2015 - 06:37
Fedorok, on 16 October 2015 - 15:49, сказал:
MyScore и Betradar вообще подробной статистики не дают на этот матч, только на Soccerway можно посмотреть, но Soccerway доверять нельзя (ИМХО).
Если зайдем на официальный сайт Высшей футбольной Лиги Белоруссии , то мы видим, что они никаких статистических данных ни по ударам, ни по владению мячом, ни по угловым не дают. Как в такой ситуации тогда быть.....остаётся только башку чесать. Единственное, что можно сравнить, на каких минутах забивались голы и карточки. NowGoal показывает в этом матче вообще 5 желтых карточек, MyScore и Soccerway только по одной, но если обратиться к официальному источнику, то мы узнаем, что было 2 карточки.