{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# **Introduction**","metadata":{}},{"cell_type":"markdown","source":"\n\nInjury prevention is a critical component in modern athletics. Sports that involve animals, such as horse racing, are no different than human sport. Typically, efficiency in movement correlates to both improvements in performance and injury prevention.\n\nA wealth of data is now collected, including measures for heart rate, EKG, longitudinal movement, dorsal/ventral movement, medial/lateral deviation, total power and total landing vibration. Your data science skills and analysis are needed to decipher what makes the most positive impact.\n\nIn this notebook , I will create a model to interpret one aspect of this new data, which including X/Y coordinate mapping of horses during races. Using the data to analyze jockey decision making, compare race surfaces, or measure the relative importance of drafting. \n\nThe New York Racing Association (NYRA) and the New York Thoroughbred Horsemen's Association (NYTHA) conduct world class thoroughbred racing at Aqueduct Racetrack, Belmont Park and Saratoga Race Course.\n\nThe goal of this notebook is to analyze horse racing tactics, drafting strategies, and path efficiency. The reporter will make an EDA basically, and then develop a model using never-before-released coordinate data along with basic race information.\n\nThis work will help racing horse owners, trainers, and veterinarians better understand how equine performance and welfare fit together. With better data analysis, equine welfare could significantly improve.\n\nThis notebook aims to solve the following problems:\n+ 1.Create a horse rating measuring expected finish position versus actual finish position. How does a horse’s expected finish position change through the running of a race? Does this metric rely solely on a horse’s own position or is it influenced by the position of competitors?\n+ 2.What are optimal racing strategies? Considering different venues, surfaces and race distances. Create a jockey rating based upon path efficiency?\n+ 3.Create a surface measure model which would rate the fairness of different paths on a racecourse that may be beneficial or harmful to finish position based. This may be a result of un known barometric, weather or maintenance factors.\n+ 4.Create a model measuring the existence (or not) and relevance of a drafting benefit.\n+ 5.Create a model reveal optimal gait patterns. Does the model differ for such factors as age, distance, race section or surface?\n\n","metadata":{}},{"cell_type":"markdown","source":"# **Data & Variable**","metadata":{}},{"cell_type":"markdown","source":"This competition provides 4 datasets,whcih contain a total of 18 variables, including latitude and longitude data, continuous variables and categorical variables.Detailed information please click on [this](http://www.kaggle.com/competitions/big-data-derby-2022/data).\nAdditionally, [weather data](http:/www.kaggle.com/competitions/big-data-derby-2022/discussion/346096) and [horse data](https://www.kaggle.com/datasets/themarkgreen/big-data-derby-2022-global-horse-ids-and-places) are also included.\n","metadata":{}},{"cell_type":"markdown","source":"# **Prepare data**","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np \nimport pandas as pd \nimport plotly.express as px \nimport plotly.graph_objects as go \nfrom plotly.subplots import make_subplots \nimport plotly.figure_factory as ff \nimport matplotlib.pyplot as plt \nimport seaborn as sns \n\nimport plotly.express as px\nimport plotly.graph_objs as go\n\nplt.rcParams[\"figure.figsize\"] = (12, 8)\n\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:12.452997Z","iopub.execute_input":"2022-10-25T01:42:12.453353Z","iopub.status.idle":"2022-10-25T01:42:12.465099Z","shell.execute_reply.started":"2022-10-25T01:42:12.453324Z","shell.execute_reply":"2022-10-25T01:42:12.464104Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"columns=[\"track_id\", # 区分不同马场AQU(Aqueduct)\\BEL(Belmnt)|SAR(Saratoga)\n\"race_date\", #日期\n\"race_number\", #跑道号\n\"program_number\",#项目号\n\"trakus_index\", #数据收集的编号\n\"latitude\", #经度\n\"longitude\",# 纬度\n\"distance_id\", # 跑道长度\n\"course_type\", #跑道类型  M:障碍跑   D:泥土 O:外草坪 I：内草坪 T：草坪 \n\"track_condition\",# 比赛场地的情况 Y: 多弯的 FM:坚固的 SY：溅水的 GD:良好的 FT：快速的 MY:泥泞的 SF:柔软的\n\"run_up_distance\",#比赛开始前的距离\n\"race_type\", #比赛的种类  STK锦标赛  WCL\n\"purse\",# 下注的金额\n\"post_time\",  #比赛开始时间\n\"weight_carried\", # 马的重量\n\"jockey\",#骑手\n\"odds\", #胜率\n\"position_at_finish\"] # 完赛排名\n\ncolumns0=[\"track_id\",\n\"race_date\",\n\"race_number\",\n\"program_number\",\n \"weight_carried\",\n\"jockey\",\n\"odds\",\n\"position_at_finish\"]\n\n","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:12.955871Z","iopub.execute_input":"2022-10-25T01:42:12.958403Z","iopub.status.idle":"2022-10-25T01:42:12.964467Z","shell.execute_reply.started":"2022-10-25T01:42:12.958367Z","shell.execute_reply":"2022-10-25T01:42:12.963265Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nyra_2019 = pd.read_csv(\"../input/big-data-derby-2022/nyra_2019_complete.csv\",names=columns)\nnyra_race= pd.read_csv(\"../input/big-data-derby-2022/nyra_race_table.csv\")\nnyra_start= pd.read_csv(\"../input/big-data-derby-2022/nyra_start_table.csv\",names=columns0)\nnyra_tracking = pd.read_csv(\"../input/big-data-derby-2022/nyra_tracking_table.csv\")","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:13.421741Z","iopub.execute_input":"2022-10-25T01:42:13.422487Z","iopub.status.idle":"2022-10-25T01:42:25.348263Z","shell.execute_reply.started":"2022-10-25T01:42:13.422445Z","shell.execute_reply":"2022-10-25T01:42:25.347154Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nyra_2019['is_winner'] = nyra_2019['position_at_finish'].apply(lambda x: 1 if x==1 else 0)\nnyra_2019_lnone=nyra_2019.drop([\"longitude\",\"latitude\",\"trakus_index\"],axis=1)\nnyra_2019_lnone=nyra_2019_lnone.drop_duplicates()\n\nnyra_2019_lnone_6=nyra_2019_lnone[(nyra_2019_lnone[\"position_at_finish\"]==1)|\n                               (nyra_2019_lnone[\"position_at_finish\"]==2)|\n                               (nyra_2019_lnone[\"position_at_finish\"]==3)|\n                               (nyra_2019_lnone[\"position_at_finish\"]==4)|\n                                (nyra_2019_lnone[\"position_at_finish\"]==5)|\n                                (nyra_2019_lnone[\"position_at_finish\"]==6)\n                               ]","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:25.350365Z","iopub.execute_input":"2022-10-25T01:42:25.350858Z","iopub.status.idle":"2022-10-25T01:42:31.247772Z","shell.execute_reply.started":"2022-10-25T01:42:25.350783Z","shell.execute_reply":"2022-10-25T01:42:31.246806Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nyra_2019_lnone","metadata":{"execution":{"iopub.status.busy":"2022-10-25T01:41:57.4676Z","iopub.execute_input":"2022-10-25T01:41:57.46798Z","iopub.status.idle":"2022-10-25T01:41:57.501507Z","shell.execute_reply.started":"2022-10-25T01:41:57.467943Z","shell.execute_reply":"2022-10-25T01:41:57.500464Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Exploratory Data Analysis**\n\n*In statistics, exploratory data analysis (EDA) is an approach of analyzing data sets to summarize their main characteristics, often using statistical graphics and other data visualization methods. A statistical model can be used or not, but primarily EDA is for seeing what the data can tell us beyond the formal modeling and thereby contrasts traditional hypothesis testing.*","metadata":{}},{"cell_type":"markdown","source":"## **race_date & post_time**","metadata":{}},{"cell_type":"markdown","source":"Let’s focus on those variables about time. Race_date recorded the date the race took place, post_time recorded the time of day the race began passed . When it comes to time, we inevitably ask: “When these races took place?” The following figures answer this question. This part refer to the notebook of [xxxxyyyy80008](http://www.kaggle.com/code/xxxxyyyy80008/derby-2022-eda).","metadata":{}},{"cell_type":"code","source":"from datetime import datetime\nimport datetime\ndef post_time_(x):\n    v=\"12:00\"\n    if (x is None)|(x is np.nan):\n        return v\n    else:\n        x=str(x)\n        x1_=int(x[:-2])\n        x2_=int(x[-2:])\n        if x1_<10:\n            x1_=x1_+12\n        if x2_<22:\n            v=f\"{x1_}:00\"\n        elif x2_<48:\n            v=f\"{x1_}:30\"\n        else:\n            v=f\"{x1_+1}:00\"\n    return v\n\n\nrace_date=pd.to_datetime(nyra_race[\"race_date\"])\nrd=pd.DataFrame(data={\"weekday\":race_date.dt.weekday,\n                      \"month_name\":race_date.dt.strftime(\"%b\"),\n                      \"month\":race_date.dt.month,\n                      \"week\":race_date.dt.week,\n                      \"day_name\":race_date.dt.day_name(),\n                      \"race_number\":nyra_race[\"race_number\"],\n                      \"post_time\":nyra_race[\"post_time\"].apply(post_time_),\n                      \"track\":nyra_race[\"track_id\"]\n                      \n                     })\n\ncs=pd.pivot_table(rd,index=[\"track\"],columns=[\"month\"],values=\"day_name\",aggfunc=np.size)\nmnth_map=rd[[\"month\",\"month_name\"]].drop_duplicates().sort_values(by=\"month\").set_index(keys=\"month\").to_dict()[\"month_name\"]\ncs.columns=[mnth_map[a] for a in cs.columns]\n\nplt.figure(figsize=(10,3),dpi=300)\nsns.heatmap(cs,xticklabels=cs.columns,yticklabels=cs.index,cmap=\"Blues\",center=0,annot=True,cbar=False,fmt=\".0f\",)\nplt.title(\"Which months did races take place on each track?\",fontsize=13,loc=\"left\",fontweight='heavy',pad=10)","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:45.864142Z","iopub.execute_input":"2022-10-25T01:42:45.864501Z","iopub.status.idle":"2022-10-25T01:42:46.292964Z","shell.execute_reply.started":"2022-10-25T01:42:45.86447Z","shell.execute_reply":"2022-10-25T01:42:46.29193Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cs = pd.pivot_table(rd, index=['weekday'], columns=['month'], values='day_name', aggfunc=np.size)\n\nmnth_map = rd[['month', 'month_name']].drop_duplicates().sort_values(by='month').set_index(keys='month').to_dict()['month_name']\nday_map = rd[['weekday', 'day_name']].drop_duplicates().sort_values(by='weekday').set_index(keys='weekday').to_dict()['day_name']\n\ncs.columns = [mnth_map[a] for a in cs.columns]\ncs.index = [day_map[a] for a in cs.index]\n\n# Plot\nplt.figure(figsize=(10,4), dpi= 80)\nsns.heatmap(cs, xticklabels=cs.columns, yticklabels=cs.index, cmap=\"Blues\", center=0, annot=True,  cbar=False, fmt='.0f')#YlGnBu#RdYlGn\n\n# Decorations\nplt.title('When did races take place?',fontsize=13,loc=\"left\",fontweight='heavy',pad=10)\nplt.xticks(fontsize=10)\nplt.yticks(fontsize=10)\nplt.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:48.19333Z","iopub.execute_input":"2022-10-25T01:42:48.193687Z","iopub.status.idle":"2022-10-25T01:42:48.599778Z","shell.execute_reply.started":"2022-10-25T01:42:48.193658Z","shell.execute_reply":"2022-10-25T01:42:48.59872Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cs = pd.pivot_table(rd, index=['weekday'], columns=['post_time'], values='day_name', aggfunc=np.size)\nday_map = rd[['weekday', 'day_name']].drop_duplicates().sort_values(by='weekday').set_index(keys='weekday').to_dict()['day_name']\ncs.columns.name=''\ncs.index = [day_map[a] for a in cs.index]\n\n# Plot\nplt.figure(figsize=(16,4), dpi= 80)\nsns.heatmap(cs, xticklabels=cs.columns, yticklabels=cs.index, cmap='Blues', center=0, annot=True,  cbar=False, fmt='.0f')#YlGnBu#RdYlGn\n\n# Decorations\nplt.title('What time in the day did races take place?',fontsize=13,loc=\"left\",fontweight='heavy',pad=10)\nplt.xticks(fontsize=10)\nplt.yticks(fontsize=10)\nplt.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:49.096371Z","iopub.execute_input":"2022-10-25T01:42:49.096739Z","iopub.status.idle":"2022-10-25T01:42:49.620783Z","shell.execute_reply.started":"2022-10-25T01:42:49.096707Z","shell.execute_reply":"2022-10-25T01:42:49.619737Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Clearly, in 2019, the most of races happened in August. In a week, more races were hold on weekends. In a single day, a large proportion of races happened between 13:00 and 16:00.\n \n","metadata":{}},{"cell_type":"markdown","source":"## **jockey**","metadata":{}},{"cell_type":"markdown","source":"\nObviously, the jockey is the most important variable and largely determines the outcome of the race. So, let’s check the jockey firstly. There are 112 jockeys in the data, and we only care about the top performers (at least the top six in the race), especially those who have won the championship.\n\nAccording analysis, the TOP 10 performers are **Manuel Franco, Jose Lezcano, Junior Alvarado, Irad Ortiz Jr, Dylan Davis,Jose L. Ortiz, Joel Rosario,Javier Castellano,Luis Saez, Kendrick Carmouche.**","metadata":{}},{"cell_type":"code","source":"pd.crosstab(nyra_2019_lnone_6[\"jockey\"],nyra_2019_lnone_6[\"position_at_finish\"])\ncross_rank=pd.crosstab(nyra_2019_lnone_6[\"jockey\"],nyra_2019_lnone_6[\"position_at_finish\"])\njockey_index=cross_rank.index\ncross_rank=np.array(cross_rank)\n\ndf_rank=pd.DataFrame(cross_rank,columns=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"])\ndf_rank[\"jockey\"]=jockey_index\ndf_rank=df_rank.sort_values(by=[\"First\",\"Second\",\"Third\"],ascending=False)\njockeys=df_rank[\"jockey\"][0:10]\njockeys\n","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:53.248367Z","iopub.execute_input":"2022-10-25T01:42:53.248719Z","iopub.status.idle":"2022-10-25T01:42:53.292336Z","shell.execute_reply.started":"2022-10-25T01:42:53.248688Z","shell.execute_reply":"2022-10-25T01:42:53.291458Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_rank.index=df_rank[\"jockey\"]\ndf_rank\ndf_rank.drop(\"jockey\",axis=1,inplace=True)\n","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:54.254311Z","iopub.execute_input":"2022-10-25T01:42:54.254659Z","iopub.status.idle":"2022-10-25T01:42:54.260611Z","shell.execute_reply.started":"2022-10-25T01:42:54.25463Z","shell.execute_reply":"2022-10-25T01:42:54.259673Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_rankT=df_rank.T\ndf_rankT","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:55.058723Z","iopub.execute_input":"2022-10-25T01:42:55.059706Z","iopub.status.idle":"2022-10-25T01:42:55.096065Z","shell.execute_reply.started":"2022-10-25T01:42:55.059649Z","shell.execute_reply":"2022-10-25T01:42:55.09502Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig=go.Figure()\nfor joc in jockeys:\n    fig.add_trace(go.Scatterpolar(\n          name =joc,\n          r = df_rankT[joc],\n    theta=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]))\n    fig.update_traces(fill='toself')\n\n\nfig.update_layout(title=\"Jockey rank TOP10\",\n#     template=\"plotly_dark\",\n                  font=dict(family=\"PT Sans\",size=12),\n                polar = dict(\n      radialaxis_angle = -45,\n      angularaxis = dict(\n        direction = \"clockwise\")))\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:42:55.921643Z","iopub.execute_input":"2022-10-25T01:42:55.922336Z","iopub.status.idle":"2022-10-25T01:42:56.105977Z","shell.execute_reply.started":"2022-10-25T01:42:55.922298Z","shell.execute_reply":"2022-10-25T01:42:56.104914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_rank","metadata":{"execution":{"iopub.status.busy":"2022-10-25T01:43:07.00367Z","iopub.execute_input":"2022-10-25T01:43:07.004363Z","iopub.status.idle":"2022-10-25T01:43:07.017428Z","shell.execute_reply.started":"2022-10-25T01:43:07.004326Z","shell.execute_reply":"2022-10-25T01:43:07.016475Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import plotly.express as px\nfig = px.bar(df_rank, x=df_rank.index, y=[\"First\", \"Second\", \"Third\"])\nfig.update_layout(title_text='Num of races jockey finished at 1st,2nd,3rd place',xaxis_tickangle=-45)\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:07.031421Z","iopub.execute_input":"2022-10-25T01:43:07.032203Z","iopub.status.idle":"2022-10-25T01:43:08.358709Z","shell.execute_reply.started":"2022-10-25T01:43:07.032167Z","shell.execute_reply":"2022-10-25T01:43:08.357828Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Aqueduct (AQU), Belmont (BEL) and Saratoga (SAR) are three different tracks, Clearly, some jockeys perform differently on different venues. For example, Manuel Franco, Jose Lezcano, Dylan Davis, Junior Alvarado did better in Aqueduct (AQU), others did better in Belmont (BEL).","metadata":{}},{"cell_type":"code","source":"nyra_2019_lnone_AQU=nyra_2019_lnone_6[nyra_2019_lnone_6[\"track_id\"]==\"AQU\"]\nnyra_2019_lnone_BEL=nyra_2019_lnone_6[nyra_2019_lnone_6[\"track_id\"]==\"BEL\"]\nnyra_2019_lnone_SAR=nyra_2019_lnone_6[nyra_2019_lnone_6[\"track_id\"]==\"SAR\"]\n\ncross_rank=pd.crosstab(nyra_2019_lnone_AQU[\"jockey\"],nyra_2019_lnone_AQU[\"position_at_finish\"])\ncross_rank_AQU=cross_rank.T\ncross_rank_AQU.index=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]\n\n\n\ncross_rank=pd.crosstab(nyra_2019_lnone_BEL[\"jockey\"],nyra_2019_lnone_BEL[\"position_at_finish\"])\ncross_rank_BEL=cross_rank.T\ncross_rank_BEL.index=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]\n\ncross_rank=pd.crosstab(nyra_2019_lnone_SAR[\"jockey\"],nyra_2019_lnone_SAR[\"position_at_finish\"])\ncross_rank_SAR=cross_rank.T\ncross_rank_SAR.index=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]\n","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-24T14:02:17.717113Z","iopub.execute_input":"2022-10-24T14:02:17.717552Z","iopub.status.idle":"2022-10-24T14:02:17.77009Z","shell.execute_reply.started":"2022-10-24T14:02:17.717499Z","shell.execute_reply":"2022-10-24T14:02:17.769214Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for joc in jockeys:\n    if joc==\"Reylu Gutierrez\":\n        break\n    else:\n        fig=go.Figure()\n        fig.add_trace(go.Scatterpolar(\n              name =\"AQU\",\n              r =cross_rank_AQU[joc],\n        theta=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]))\n        fig.add_trace(go.Scatterpolar(\n              name =\"BEL\",\n              r =cross_rank_BEL[joc],\n        theta=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]))\n\n        fig.add_trace(go.Scatterpolar(\n              name =\"SAR\",\n              r =cross_rank_SAR[joc],\n        theta=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"]))\n        fig.update_traces(fill='toself')\n        fig.update_layout(title=joc,font=dict(family=\"PT Sans\",size=12),\n                        polar = dict(\n              radialaxis_angle = -45,\n              angularaxis = dict(\n                direction = \"clockwise\")))\n    fig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-24T14:02:17.771609Z","iopub.execute_input":"2022-10-24T14:02:17.77195Z","iopub.status.idle":"2022-10-24T14:02:17.883534Z","shell.execute_reply.started":"2022-10-24T14:02:17.771917Z","shell.execute_reply":"2022-10-24T14:02:17.88258Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## race_number","metadata":{}},{"cell_type":"markdown","source":"Race_number represents different track numbers, each race has a total of 12 tracks, and players will ride horses on the track to compete. Although the distance from each track to the finish line is the same, the position of the track may also affect the performance of the runners and the horses. The closer the track is to the edge, the worse the runner's performance may be. It is therefore necessary to ask the question: which track has more champions? Are there differences in the performance of different players on different tracks? ","metadata":{}},{"cell_type":"code","source":"df_racewin=pd.crosstab(nyra_2019_lnone[\"race_number\"],nyra_2019_lnone[\"is_winner\"])\ndf_racewin=pd.DataFrame(np.array(df_racewin),columns=[\"None-winner\",\"Winner\"])\nfig=go.Figure()\n# fig.add_trace(go.Scatter(x=df_racewin.index,y=df_racewin[\"None-winner\"],name=\"None-winner\"))\nfig.add_trace(go.Scatter(x=df_racewin.index,y=df_racewin[\"Winner\"],name=\"Winner\"))\nfig.update_layout(title=\"Which race number is easier to win?\",    xaxis_dtick=1,\n                  xaxis_title='race_number',  # 横纵坐标的名称\n                   yaxis_title=\"winner\")\nfig.show()\n","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:20.890039Z","iopub.execute_input":"2022-10-25T01:43:20.890388Z","iopub.status.idle":"2022-10-25T01:43:20.929132Z","shell.execute_reply.started":"2022-10-25T01:43:20.890359Z","shell.execute_reply":"2022-10-25T01:43:20.928287Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_racewin=pd.crosstab(nyra_2019_lnone_6[\"race_number\"],nyra_2019_lnone_6[\"position_at_finish\"])\ndf_racewin=pd.DataFrame(np.array(df_racewin),columns=[\"First\",\"Second\",\"Third\",\"Forth\",\"Fifth\",\"Sixth\"])\nfig=go.Figure()\n# fig.add_trace(go.Scatter(x=df_racewin.index,y=df_racewin[\"None-winner\"],name=\"None-winner\"))\nfor rank in df_racewin.columns:\n    fig.add_trace(go.Scatter(x=df_racewin.index,y=df_racewin[rank],name=rank))\nfig.update_layout(title=\"Which race number is easier to win?\",\n                      xaxis_title='race_number',xaxis_dtick=1,  # 横纵坐标的名称\n                       yaxis_title=\"Counts\")\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:21.801609Z","iopub.execute_input":"2022-10-25T01:43:21.802071Z","iopub.status.idle":"2022-10-25T01:43:21.84405Z","shell.execute_reply.started":"2022-10-25T01:43:21.802032Z","shell.execute_reply":"2022-10-25T01:43:21.84302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_race_jockey=nyra_2019_lnone[nyra_2019_lnone[\"is_winner\"]==1]\ndf_race_jockey=pd.crosstab(nyra_2019_lnone[\"race_number\"],nyra_2019_lnone[\"jockey\"])\ndf_race_jockey=pd.DataFrame(np.array(df_race_jockey[jockeys]),columns=jockeys)\nfig=go.Figure()\nfor joc in jockeys:\n    fig.add_trace(go.Bar(x=df_race_jockey.index,\n                    y=df_race_jockey[joc],name=joc))\nfig.update_layout(\n     title='The performance of TOP10 jockeys on different tracks',\n    xaxis_tickfont_size=14,\n    xaxis_dtick=1,\n    xaxis_title=\"race_number\",\n    yaxis=dict(title=\"Is winner\",\n        titlefont_size=16,\n        tickfont_size=14,\n    ),\n    barmode='group',\n    bargap=0.15, # gap between bars of adjacent location coordinates.\n    bargroupgap=0.1 # gap between bars of the same location coordinate.\n)\n\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:22.797239Z","iopub.execute_input":"2022-10-25T01:43:22.797631Z","iopub.status.idle":"2022-10-25T01:43:22.903816Z","shell.execute_reply.started":"2022-10-25T01:43:22.7976Z","shell.execute_reply":"2022-10-25T01:43:22.902825Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Obviously, the players on the smaller track numbers are more likely to win, and vice versa, it is not easy to achieve good results. Manuel Franco 's strength is strong, and he can basically achieve good results on most tracks. ","metadata":{}},{"cell_type":"markdown","source":"## Longitude & latitude & trakus_index","metadata":{}},{"cell_type":"markdown","source":"Longitude and latitude recorded a player's position change during a match. Based on the latitude and longitude data, we can clearly depict a player's trajectory and speeding changes, and use this to study horse racing strategy in depth.Following is  one of Jose Lezcano’s races. (race_number is 6, took place at SAR in 2019-10-11.","metadata":{}},{"cell_type":"code","source":"jockey_J=nyra_2019[nyra_2019[\"jockey\"]==\"Jose Lezcano\"]\njockey_J_1011=jockey_J[jockey_J[\"race_date\"]==\"2019-10-11\"]\njockey_J_1011_6=jockey_J_1011[jockey_J_1011[\"race_number\"]==6]\n\nfig = px.scatter(jockey_J_1011_6, x = \"longitude\", y = \"latitude\", opacity = 0.8,\n#                      hover_data = [\"race_date\", \"distance_id\", \"purse\"],\n                 color = \"trakus_index\", color_continuous_scale = \"Turbo\", #range_color = (0, 399),\n                 title = f\"Jose Lezcano Race Pathing,  race_number: {6}, track_id = SAR , race_date:2019-10-11\")\n\nfig.update_traces(marker = dict(symbol = \"square-open\", size = 20)) # scaling the markers\nfig.update_layout(\n    template = \"plotly_dark\",\n    font = dict(family = \"PT Sans\", size = 12))\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:29.101124Z","iopub.execute_input":"2022-10-25T01:43:29.102077Z","iopub.status.idle":"2022-10-25T01:43:29.784233Z","shell.execute_reply.started":"2022-10-25T01:43:29.102039Z","shell.execute_reply":"2022-10-25T01:43:29.783322Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"jockey_J_1011_6=jockey_J_1011_6.sort_values(by=\"trakus_index\")\njockey_J_1011_6.index=range(278)\nimport math\nfrom math import radians, cos, sin, asin, sqrt\ndef haversine(lat1, lon1, lat2, lon2):\n     \n    # distance between latitudes\n    # and longitudes\n    dLat = (lat2 - lat1) * math.pi / 180.0\n    dLon = (lon2 - lon1) * math.pi / 180.0\n \n    # convert to radians\n    lat1 = (lat1) * math.pi / 180.0\n    lat2 = (lat2) * math.pi / 180.0\n \n    # apply formulae\n    a = (pow(math.sin(dLat / 2), 2) +\n         pow(math.sin(dLon / 2), 2) *\n             math.cos(lat1) * math.cos(lat2));\n    rad = 6371\n    c = 2 * math.asin(math.sqrt(a))\n    return rad * c\nv_list=[]\nfor i in range(277):\n    lat1=jockey_J_1011_6[\"latitude\"][i]\n    lat2=jockey_J_1011_6[\"latitude\"][i+1]\n    lon1=jockey_J_1011_6[\"longitude\"][i]\n    lon2=jockey_J_1011_6[\"longitude\"][i+1]\n    v=haversine(lat1,lon1,lat2,lon2)*4*3600\n    v_list.append(v)\nv_list.append(0)\n\njockey_J_1011_6v=pd.DataFrame(v_list,columns=[\"speed(km/h)\"])\nfig=px.scatter(jockey_J_1011_6v,x=jockey_J_1011_6v.index,y=\"speed(km/h)\",color=\"speed(km/h)\")\nfig.update_layout(title=f\"Jose Lezcano Race Speed,race_number:{6}, track_id = SAR , race_date:2019-10-11\", \n                  xaxis_title=\"trakus_index\",\n                  template = \"plotly_dark\",\n    font = dict(family = \"PT Sans\", size = 12\n                 ))\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:33.086625Z","iopub.execute_input":"2022-10-25T01:43:33.086989Z","iopub.status.idle":"2022-10-25T01:43:33.171424Z","shell.execute_reply.started":"2022-10-25T01:43:33.086958Z","shell.execute_reply":"2022-10-25T01:43:33.170376Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"jockey_J=nyra_2019[nyra_2019[\"jockey\"]==\"Jose Lezcano\"]\njockey_J_1011=jockey_J[jockey_J[\"race_date\"]==\"2019-10-11\"]\njockey_J_1011_6=jockey_J_1011[jockey_J_1011[\"race_number\"]==6]\njockey_J_1011_6=jockey_J_1011_6.sort_values(by=\"trakus_index\")\njockey_J_1011_6[\"speed(km/h)\"]=v_list\nfig = px.scatter(jockey_J_1011_6, x = \"longitude\", y = \"latitude\", opacity = 0.8,\n#                      hover_data = [\"race_date\", \"distance_id\", \"purse\"],\n                 color =\"speed(km/h)\", color_continuous_scale = \"Turbo\", #range_color = (0, 399),\n                 title = f\"Jose Lezcano Race Pathing,  race_number: {6}, track_id = SAR , race_date:2019-10-11\")\n\nfig.update_traces(marker = dict(symbol = \"square-open\", size = 20)) # scaling the markers\nfig.update_layout(\n    template = \"plotly_dark\",\n    font = dict(family = \"PT Sans\", size = 12))\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:38.700857Z","iopub.execute_input":"2022-10-25T01:43:38.701212Z","iopub.status.idle":"2022-10-25T01:43:39.222082Z","shell.execute_reply.started":"2022-10-25T01:43:38.701182Z","shell.execute_reply":"2022-10-25T01:43:39.220865Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Compare the speed of Dylan Davis and Heman K. Harkie in one race.**","metadata":{}},{"cell_type":"markdown","source":"The following are the movement trajectories and speed changes of the two players. It is not difficult to see that the performance of Dylan Davis is better than that of Heman K. Harkie . The peak speed of the two jockeys is between 70km/h and 75km/h. In the first half of the game, these two jockeys are neck and neck, but in the second half of the game, Heman 's speed dropped significantly and Dylan Davis ended up with better results.","metadata":{}},{"cell_type":"code","source":"race_1011=nyra_2019[nyra_2019[\"race_date\"]==\"2019-10-11\"]\nrace_1011_CLM=race_1011[race_1011[\"race_type\"]==\"CLM\"]\nrace_1011_CLM_850=race_1011_CLM[race_1011_CLM[\"distance_id\"]==850]\n\njockey_D=race_1011_CLM_850[race_1011_CLM_850[\"jockey\"]==\"Dylan Davis\"].sort_values(by=\"trakus_index\")\njockey_H=race_1011_CLM_850[race_1011_CLM_850[\"jockey\"]==\"Heman K. Harkie\"].sort_values(by=\"trakus_index\")\njockey_D.index=range(len(jockey_D))\njockey_H.index=range(len(jockey_H))\nv_list_D=[]\nv_list_H=[]\nfor i in range(len(jockey_D)-1):\n    lat1=jockey_D[\"latitude\"][i]\n    lat2=jockey_D[\"latitude\"][i+1]\n    lon1=jockey_D[\"longitude\"][i]\n    lon2=jockey_D[\"longitude\"][i+1]\n    v=haversine(lat1,lon1,lat2,lon2)*4*3600\n    v_list_D.append(v)\nv_list_D.append(v)  \n\nfor i in range(len(jockey_H)-1):\n    lat1=jockey_H[\"latitude\"][i]\n    lat2=jockey_H[\"latitude\"][i+1]\n    lon1=jockey_H[\"longitude\"][i]\n    lon2=jockey_H[\"longitude\"][i+1]\n    v=haversine(lat1,lon1,lat2,lon2)*4*3600\n    v_list_H.append(v)\nv_list_H.append(v)  \njockey_D[\"speed(km/h)\"]=v_list_D\njockey_H[\"speed(km/h)\"]=v_list_H","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:42.842817Z","iopub.execute_input":"2022-10-25T01:43:42.84376Z","iopub.status.idle":"2022-10-25T01:43:43.229008Z","shell.execute_reply.started":"2022-10-25T01:43:42.843712Z","shell.execute_reply":"2022-10-25T01:43:43.227852Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig=go.Figure()\nfig.add_trace(go.Scatter(x=jockey_D[\"longitude\"],y=jockey_D[\"latitude\"],name=\"Dylan Davis\",mode=\"markers\"))\nfig.add_trace(go.Scatter(x=jockey_H[\"longitude\"],y=jockey_H[\"latitude\"],name=\"Heman K. Harkie\",mode=\"markers\"))\nfig.update_layout(title=f\"Heman K. Harki & Dylan Davis race trajectory \", \n                  xaxis_title=\"trakus_index\",\n                  yaxis_title=\"speed(km/h)\",\n                  template = \"plotly_dark\")\n# fig.update_traces(marker = dict(symbol = \"square-open\", size = 20)) # scaling the markers\nfig.update_layout(\n    template = \"plotly_dark\",\n    font = dict(family = \"PT Sans\", size = 12))","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:45.810059Z","iopub.execute_input":"2022-10-25T01:43:45.810442Z","iopub.status.idle":"2022-10-25T01:43:45.866662Z","shell.execute_reply.started":"2022-10-25T01:43:45.81041Z","shell.execute_reply":"2022-10-25T01:43:45.86578Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"race_1011=nyra_2019[nyra_2019[\"race_date\"]==\"2019-10-11\"]\nrace_1011_CLM=race_1011[race_1011[\"race_type\"]==\"CLM\"]\nrace_1011_CLM_850=race_1011_CLM[race_1011_CLM[\"distance_id\"]==850]\n\n\njockey_D=race_1011_CLM_850[race_1011_CLM_850[\"jockey\"]==\"Dylan Davis\"].sort_values(by=\"trakus_index\")\njockey_H=race_1011_CLM_850[race_1011_CLM_850[\"jockey\"]==\"Heman K. Harkie\"].sort_values(by=\"trakus_index\")\njockey_D.index=range(len(jockey_D))\njockey_H.index=range(len(jockey_H))\nv_list_D=[]\nv_list_H=[]\nfor i in range(len(jockey_D)-1):\n    lat1=jockey_D[\"latitude\"][i]\n    lat2=jockey_D[\"latitude\"][i+1]\n    lon1=jockey_D[\"longitude\"][i]\n    lon2=jockey_D[\"longitude\"][i+1]\n    v=haversine(lat1,lon1,lat2,lon2)*4*3600\n    v_list_D.append(v)\nv_list_D.append(v)  \n\nfor i in range(len(jockey_H)-1):\n    lat1=jockey_H[\"latitude\"][i]\n    lat2=jockey_H[\"latitude\"][i+1]\n    lon1=jockey_H[\"longitude\"][i]\n    lon2=jockey_H[\"longitude\"][i+1]\n    v=haversine(lat1,lon1,lat2,lon2)*4*3600\n    v_list_H.append(v)\nv_list_H.append(v)  \njockey_D[\"speed(km/h)\"]=v_list_D\njockey_H[\"speed(km/h)\"]=v_list_H","metadata":{"execution":{"iopub.status.busy":"2022-10-25T01:43:53.835884Z","iopub.execute_input":"2022-10-25T01:43:53.836457Z","iopub.status.idle":"2022-10-25T01:43:54.171809Z","shell.execute_reply.started":"2022-10-25T01:43:53.836421Z","shell.execute_reply":"2022-10-25T01:43:54.170844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig=px.scatter(jockey_D,x=jockey_D.index,y=\"speed(km/h)\",color=\"speed(km/h)\")\nfig.update_layout(title=f\"Dylan Davis Race Speed,race_number:{8}, track_id = BEL , race_date:2019-10-11\", \n                  xaxis_title=\"trakus_index\",\n                  template = \"plotly_dark\",\n    font = dict(family = \"PT Sans\", size = 12\n                 ))\nfig.show()\n\n\nfig=px.scatter(jockey_H,x=jockey_H.index,y=\"speed(km/h)\",color=\"speed(km/h)\")\nfig.update_layout(title=f\"Heman K. Harkie Speed,race_number:{8}, track_id = BEL , race_date:2019-10-11\", \n                  xaxis_title=\"trakus_index\",\n                  template = \"plotly_dark\",\n    font = dict(family = \"PT Sans\", size = 12\n                 ))\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:43:56.484071Z","iopub.execute_input":"2022-10-25T01:43:56.484531Z","iopub.status.idle":"2022-10-25T01:43:56.64463Z","shell.execute_reply.started":"2022-10-25T01:43:56.48449Z","shell.execute_reply":"2022-10-25T01:43:56.643775Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig=go.Figure()\nfig.add_trace(go.Scatter(x=jockey_D[\"trakus_index\"],y=jockey_D[\"speed(km/h)\"],name=\"Dylan Davis\"))\nfig.add_trace(go.Scatter(x=jockey_H[\"trakus_index\"],y=jockey_H[\"speed(km/h)\"],name=\"Heman K. Harkie\"))\nfig.update_layout(title=f\"Heman K. Harki & Dylan Davis race speeding changes\", \n                  xaxis_title=\"trakus_index\",\n                  yaxis_title=\"speed(km/h)\",\n                  template = \"plotly_dark\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2022-10-24T14:02:20.174413Z","iopub.execute_input":"2022-10-24T14:02:20.175072Z","iopub.status.idle":"2022-10-24T14:02:20.207397Z","shell.execute_reply.started":"2022-10-24T14:02:20.175012Z","shell.execute_reply":"2022-10-24T14:02:20.206366Z"},"_kg_hide-input":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## course_type\n\nThe course the race was run over passed, actually, incluing “M”(Hurdle), “D”(Dirt), “O”(Outer turf), “I”(Inner turf), “T”(turf). It’s an important variable for jockeys. Because the state of the field will affect the speed of the horses, it can be seen from the picture that most of the competitions are played on the mud, followed by the turf and the inner turf, so how will the performance of the players on different fields be different?\n","metadata":{}},{"cell_type":"code","source":"course_type_cnt=nyra_2019_lnone[\"course_type\"].value_counts()\nfig=px.pie(course_type_cnt,values=course_type_cnt.values,names=course_type_cnt.index,\n       title='Proportion of course_type',color=course_type_cnt.index,\n       color_discrete_map={\"M\":'darkcyan',\n                                 'T':'cyan',\n                                 'I':'royalblue',\n                                 \"O\":'blue',\n                                 \"D\":\"darkblue\"})\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:44:02.680141Z","iopub.execute_input":"2022-10-25T01:44:02.680495Z","iopub.status.idle":"2022-10-25T01:44:02.762887Z","shell.execute_reply.started":"2022-10-25T01:44:02.680464Z","shell.execute_reply":"2022-10-25T01:44:02.76183Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.crosstab(nyra_2019_lnone[\"course_type\"],nyra_2019_lnone[\"position_at_finish\"])","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:44:05.968152Z","iopub.execute_input":"2022-10-25T01:44:05.968508Z","iopub.status.idle":"2022-10-25T01:44:05.997829Z","shell.execute_reply.started":"2022-10-25T01:44:05.968477Z","shell.execute_reply":"2022-10-25T01:44:05.996744Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cross_type=pd.crosstab(nyra_2019_lnone[\"course_type\"],nyra_2019_lnone[\"is_winner\"])\ncross_type=np.array(cross_type)\ncross_type=pd.DataFrame(cross_type,columns=[\"Non-winner\",\"winner\"],index=[\"D\",\"I\",\"M\",\"O\",\"T\"])\ncross_type[\"percent(%)\"]=(cross_type[\"winner\"]/(cross_type[\"Non-winner\"]+cross_type[\"winner\"]))*100\ncross_type","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:44:08.464138Z","iopub.execute_input":"2022-10-25T01:44:08.464496Z","iopub.status.idle":"2022-10-25T01:44:08.491585Z","shell.execute_reply.started":"2022-10-25T01:44:08.464466Z","shell.execute_reply":"2022-10-25T01:44:08.490478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nfig=go.Figure()\n\nfig.add_trace(go.Bar(x=cross_type.index,y=cross_type[\"Non-winner\"],xaxis=\"x\",yaxis=\"y1\",name=\"None-winnner\",text=cross_type[\"Non-winner\"],textposition=\"outside\"))\n\nfig.add_trace(go.Bar(x=cross_type.index,y=cross_type[\"winner\"],xaxis=\"x\",yaxis=\"y1\",name=\"winner\",text=cross_type[\"winner\"],textposition=\"outside\"))\n\nfig.add_trace(go.Scatter(x=cross_type.index,y=cross_type[\"percent(%)\"],xaxis=\"x\",yaxis=\"y2\",name=\"winner percent(%)\",mode=\"lines+text\"))\n\nfig.update_layout(title=\"How will the performance of the players on different fields be different?\",xaxis_title=\"course_type\",\n                  yaxis1=dict(title=\"counts\"),\n                  yaxis2=dict(title=\"%\",anchor='x', overlaying='y', side='right'),\n                  legend=dict(orientation=\"v\",yanchor=\"bottom\",\n    xanchor=\"right\"))\n             \n\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:44:11.048829Z","iopub.execute_input":"2022-10-25T01:44:11.049782Z","iopub.status.idle":"2022-10-25T01:44:11.085123Z","shell.execute_reply.started":"2022-10-25T01:44:11.049744Z","shell.execute_reply":"2022-10-25T01:44:11.084225Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## track_condition","metadata":{}},{"cell_type":"markdown","source":"Similar to race_type, trcak_condion also has an impact on performance of jockeys.","metadata":{}},{"cell_type":"code","source":"track_cnt=nyra_2019_lnone[\"track_condition\"].value_counts()\nfig=px.pie(track_cnt,values=track_cnt.values,names=track_cnt.index,title='Proportion of track_condition',color=track_cnt.index)\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:44:17.432585Z","iopub.execute_input":"2022-10-25T01:44:17.432978Z","iopub.status.idle":"2022-10-25T01:44:17.480072Z","shell.execute_reply.started":"2022-10-25T01:44:17.432945Z","shell.execute_reply":"2022-10-25T01:44:17.479042Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cross_track=pd.crosstab(nyra_2019_lnone[\"track_condition\"],nyra_2019_lnone[\"is_winner\"])\ncross_track.rename(columns={0:\"Non-winner\",1:\"winner\"},inplace=True)\ncross_track[\"percent(%)\"]=(cross_track[\"winner\"]/(cross_track[\"Non-winner\"]+cross_track[\"winner\"]))*100\n\ncross_track","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:44:24.39433Z","iopub.execute_input":"2022-10-25T01:44:24.39475Z","iopub.status.idle":"2022-10-25T01:44:24.432579Z","shell.execute_reply.started":"2022-10-25T01:44:24.394715Z","shell.execute_reply":"2022-10-25T01:44:24.431662Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig=go.Figure()\nfig.add_trace(go.Bar(x=cross_track.index,y=cross_track[\"Non-winner\"],name=\"Non-winner\"))\nfig.add_trace(go.Bar(x=cross_track.index,y=cross_track[\"winner\"],name=\"winner\")) \nfig.add_trace(go.Scatter(x=cross_track.index,y=cross_track[\"percent(%)\"],xaxis=\"x\",yaxis=\"y2\",name=\"winner percent(%)\",mode=\"lines+text\"))\nfig.update_layout(title=\"How will the performance of the players on different tracks be different?\",xaxis_title=\"track_condotion\",\n                  yaxis1=dict(title=\"counts\"),\n                  yaxis2=dict(title=\"%\",anchor='x', overlaying='y', side='right'),#设置坐标轴的格式，一般次坐标轴在右侧,\n                  legend=dict(orientation=\"v\",yanchor=\"bottom\",\n    xanchor=\"right\"))\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2022-10-25T01:45:01.607928Z","iopub.execute_input":"2022-10-25T01:45:01.608391Z","iopub.status.idle":"2022-10-25T01:45:01.648578Z","shell.execute_reply.started":"2022-10-25T01:45:01.608354Z","shell.execute_reply":"2022-10-25T01:45:01.644947Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## distance_id","metadata":{}},{"cell_type":"markdown","source":"Diatance_id records the distance of the track, the track distance varies from 500 furlong to 2000 furlong, the track distance may have an impact on the performance of the runner and the horse (related to the horse's endurance and the runner's strategy). We need to figure out the specifics","metadata":{}},{"cell_type":"code","source":"nyra_distance=nyra_2019_lnone[\"distance_id\"].value_counts()\ndistance=nyra_distance.index\nnyra_distance=np.array(nyra_distance)\ndf_nyra_distance=pd.DataFrame()\ndf_nyra_distance[\"distance\"]=distance\ndf_nyra_distance[\"counts\"]=nyra_distance\n\nfig=px.bar(df_nyra_distance,x=\"distance\",y=\"counts\",color=\"distance\")\nfig.update_layout(title=\"distance_id counts\",xaxis_title=\"distance\",yaxis_title=\"counts\")","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:51:21.393931Z","iopub.execute_input":"2022-10-25T01:51:21.394372Z","iopub.status.idle":"2022-10-25T01:51:21.477498Z","shell.execute_reply.started":"2022-10-25T01:51:21.394335Z","shell.execute_reply":"2022-10-25T01:51:21.476511Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nyra_2019_AQU=nyra_2019[nyra_2019[\"track_id\"]==\"AQU\"]\ndistance_600=nyra_2019_AQU[nyra_2019[\"distance_id\"]==600]\ndistance_700=nyra_2019_AQU[nyra_2019[\"distance_id\"]==700]\ndistance_800=nyra_2019_AQU[nyra_2019[\"distance_id\"]==800]\ndistance_900=nyra_2019_AQU[nyra_2019[\"distance_id\"]==900]","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-10-25T01:45:13.673995Z","iopub.execute_input":"2022-10-25T01:45:13.674354Z","iopub.status.idle":"2022-10-25T01:45:14.944046Z","shell.execute_reply.started":"2022-10-25T01:45:13.674325Z","shell.execute_reply":"2022-10-25T01:45:14.943061Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig=px.scatter(distance_600,x = \"longitude\", y = \"latitude\",color=\"race_number\",color_continuous_scale=\"rainbow\")\nfig.update_layout(title=\"distance=600\",template=\"plotly_dark\")\nfig.show()\n\nfig=px.scatter(distance_700,x = \"longitude\", y = \"latitude\",color=\"race_number\",color_continuous_scale=\"rainbow\")\nfig.update_layout(title=\"distance=700\",template=\"plotly_dark\")\nfig.show()\n","metadata":{"execution":{"iopub.status.busy":"2022-10-25T01:52:42.667401Z","iopub.execute_input":"2022-10-25T01:52:42.667772Z","iopub.status.idle":"2022-10-25T01:52:43.411165Z","shell.execute_reply.started":"2022-10-25T01:52:42.667739Z","shell.execute_reply":"2022-10-25T01:52:43.410139Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nfig=px.scatter(distance_800,x = \"longitude\", y = \"latitude\",color=\"race_number\",color_continuous_scale=\"rainbow\")\nfig.update_layout(title=\"distance=800\",template=\"plotly_dark\")\nfig.show()\n\n\nfig=px.scatter(distance_900,x = \"longitude\", y = \"latitude\",color=\"race_number\",color_continuous_scale=\"rainbow\")\nfig.update_layout(title=\"distance=900\",template=\"plotly_dark\")\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2022-10-25T01:53:00.420206Z","iopub.execute_input":"2022-10-25T01:53:00.420574Z","iopub.status.idle":"2022-10-25T01:53:01.153367Z","shell.execute_reply.started":"2022-10-25T01:53:00.420543Z","shell.execute_reply":"2022-10-25T01:53:01.152046Z"},"_kg_hide-input":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Run_up_distance","metadata":{}},{"cell_type":"markdown","source":"Run_up_distance recorded the distance in feet of the gate to the start of the race. Run-up_distance varies from 0 to 280,  however , most of them are below 100 feet. With 2189 races the run_up-distance is 54 feet. ","metadata":{}},{"cell_type":"code","source":"rud=nyra_2019_lnone[\"run_up_distance\"].value_counts()\nfig=px.bar(rud,x=rud.index,y=\"run_up_distance\")\nfig.update_layout(title=\"Counts of run_up_distance\",xaxis_title=\"run_up_distance\",yaxis_title=\"Counts\")\n\n\nfig.add_annotation(\n        x=54,y=2190,text=\"run_up_distance=54,Counts=2189\",\n        xref=\"x\",\n        yref=\"y\",\n        showarrow=True,\n        font=dict(\n            family=\"Courier New, monospace\",\n            size=16,\n            color=\"#ffffff\"\n            ),\n        align=\"center\",\n        arrowhead=2,\n        arrowsize=1,\n        arrowwidth=2,\n        arrowcolor=\"#636363\",\n        ax=20,\n        ay=-30,\n        bordercolor=\"#c7c7c7\",\n        borderwidth=2,\n        borderpad=4,\n        bgcolor=\"#ff7f0e\",\n        opacity=0.8\n        )","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:18.695421Z","iopub.execute_input":"2022-10-25T01:53:18.695768Z","iopub.status.idle":"2022-10-25T01:53:18.754218Z","shell.execute_reply.started":"2022-10-25T01:53:18.695739Z","shell.execute_reply":"2022-10-25T01:53:18.753196Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## race_type","metadata":{}},{"cell_type":"markdown","source":"race_type represents various types of races. Such as CLM, which means claming,  claiming races are the most commonly run races in the country. Horses competing in claiming races are offered for sale for a specified priced to eligible buyers, and AOC, the Allowance/Optional Claiming. This race type combines features associated with two traditional race types, Allowance and Claiming races. Horses may be entered under Allowance conditions (not eligible to be claimed, but must qualify for the conditions of the race) OR entered for a claiming price if they do not qualify for the race conditions.\n\nMore information please click on this [website](https://www.equibase.com/newfan/codes.cfm).\n","metadata":{}},{"cell_type":"code","source":"race_type_TOP=pd.crosstab(nyra_2019_lnone[\"jockey\"],nyra_2019_lnone[\"race_type\"]).T[jockeys]\nrace_type_TOP[\"total\"] =race_type_TOP.apply(lambda x:x.sum(),axis =1)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:23.753619Z","iopub.execute_input":"2022-10-25T01:53:23.754422Z","iopub.status.idle":"2022-10-25T01:53:23.783957Z","shell.execute_reply.started":"2022-10-25T01:53:23.754385Z","shell.execute_reply":"2022-10-25T01:53:23.782943Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"race_type_TOP.sort_values(by=\"total\",ascending=False)\n","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:24.196625Z","iopub.execute_input":"2022-10-25T01:53:24.197307Z","iopub.status.idle":"2022-10-25T01:53:24.210711Z","shell.execute_reply.started":"2022-10-25T01:53:24.19727Z","shell.execute_reply":"2022-10-25T01:53:24.209835Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"px.bar(race_type_TOP,x=race_type_TOP.index,y=\"total\",title=\"Counts of different race types\",color=\"total\",\n       color_continuous_scale=\"blues\")","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:24.714535Z","iopub.execute_input":"2022-10-25T01:53:24.715232Z","iopub.status.idle":"2022-10-25T01:53:24.770484Z","shell.execute_reply.started":"2022-10-25T01:53:24.715197Z","shell.execute_reply":"2022-10-25T01:53:24.769532Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"race_type_TOP.drop(\"total\",axis=1,inplace=True)\nfig=go.Figure()\nfor race in race_type_TOP.index:\n    if race==\"total\":\n        break\n    else:\n        fig.add_trace(go.Bar(x=race_type_TOP.T.index,y=race_type_TOP.T[race],name=race))\nfig.update_layout(title=\"The race type situation of Top 10 jockeys\",xaxis_title=\"jockey\",yaxis_title=\"Counts\")\n    \nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:25.359637Z","iopub.execute_input":"2022-10-25T01:53:25.360324Z","iopub.status.idle":"2022-10-25T01:53:25.390483Z","shell.execute_reply.started":"2022-10-25T01:53:25.360286Z","shell.execute_reply":"2022-10-25T01:53:25.389454Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## weather","metadata":{}},{"cell_type":"markdown","source":"Weather is an important factor that needs to be taken into account because it affects the state of the track. The 2019 weather data set for New York contains seven variable dates, the highest temperature, the lowest temperature, and the average temperature (all measured in Fahrenheit), number of hot days, number of cool days, precipitation, depth of fresh snow, and depth of snow cover. Below is a visualization of the weather conditions.","metadata":{}},{"cell_type":"code","source":"weather = pd.read_csv(\"/kaggle/input/new-york-city-weather-data-2019/nyc_temperature.csv\")\nweather[\"precipitation\"].replace(to_replace=\"T\", value=0, inplace = True)\nweather[\"new_snow\"].replace(to_replace=\"T\", value=0, inplace = True)\nweather[\"snow_depth\"].replace(to_replace=\"T\", value=0, inplace = True)\nweather[\"new_snow\"]=weather[\"new_snow\"].astype(float)\nweather[\"precipitation\"]=weather[\"precipitation\"].astype(float)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:28.452904Z","iopub.execute_input":"2022-10-25T01:53:28.453275Z","iopub.status.idle":"2022-10-25T01:53:28.472822Z","shell.execute_reply.started":"2022-10-25T01:53:28.453246Z","shell.execute_reply":"2022-10-25T01:53:28.471856Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import plotly.graph_objects as go\nfig=go.Figure()\nfig.add_trace(go.Scatter(x=weather[\"date\"],y=weather[\"tmin\"],name=\"Min_temperature\",mode=\"markers\",opacity=0.5))\nfig.add_trace(go.Scatter(x=weather[\"date\"],y=weather[\"tmax\"],name=\"Max_temperature\",mode=\"markers\",opacity=0.5))\nfig.add_trace(go.Scatter(x=weather[\"date\"],y=weather[\"tavg\"],name=\"Average_temperature\"))\nfig.update_layout(title=\"The temperature of NewYork in 2019(°F)\",xaxis_title=\"date\",yaxis_title=\"Temperature(°F)\",template=\"plotly_dark\")","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:28.961935Z","iopub.execute_input":"2022-10-25T01:53:28.962882Z","iopub.status.idle":"2022-10-25T01:53:29.006523Z","shell.execute_reply.started":"2022-10-25T01:53:28.962833Z","shell.execute_reply":"2022-10-25T01:53:29.005495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import plotly.express as px\nfig=px.bar(weather,x=\"date\",y=\"departure\",color=\"departure\",color_continuous_scale=\"rainbow\",template=\"plotly_dark\")\nfig.update_layout(title=\"Temperature depature of NewYork in 2019(°F)\")","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:29.840998Z","iopub.execute_input":"2022-10-25T01:53:29.841703Z","iopub.status.idle":"2022-10-25T01:53:29.898406Z","shell.execute_reply.started":"2022-10-25T01:53:29.841668Z","shell.execute_reply":"2022-10-25T01:53:29.897534Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"weather[\"precipitation\"]=weather[\"precipitation\"].astype(float)\nfig=px.bar(weather,x=\"date\",y=\"precipitation\",color=\"precipitation\",color_continuous_scale=\"rainbow\",template=\"plotly_dark\")\nfig.update_layout(title=\"Precipitation of NewYork in 2019(inch)\")\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:30.261949Z","iopub.execute_input":"2022-10-25T01:53:30.262292Z","iopub.status.idle":"2022-10-25T01:53:30.31861Z","shell.execute_reply.started":"2022-10-25T01:53:30.262262Z","shell.execute_reply":"2022-10-25T01:53:30.317717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import datetime\nyear=2019\ndef get_whole_year(year=year):\n    begin = datetime.date(year, 1, 1)\n    now = begin\n    end = datetime.date(year, 12, 31)\n    delta = datetime.timedelta(days=1)\n    days = []\n    while now <= end:\n        days.append(now.strftime(\"%Y-%m-%d\"))\n        now += delta\n    return days\nweather[\"date\"]=get_whole_year(year=2019)\n\ndata=weather[[\"date\",\"tavg\"]]\n\ndata_new=[]\nfor i in range(365):\n    a=tuple(data.values[i])\n    data_new.append(a)\n\nimport random\nimport datetime\nimport pyecharts.options as opts\nfrom pyecharts.charts import Calendar\nc = (\n     # 初始化\n    Calendar(init_opts=opts.InitOpts(width=\"900px\", height=\"600px\"))\n    \n    .add(\n        series_name=\"\", # 系列名称，用于 tooltip 的显示，legend 的图例筛选。\n        yaxis_data=data_new, # 系列数据，格式为 [(date1, value1), (date2, value2), ...]\n         # 日历坐标系组件配置项\n        calendar_opts=opts.CalendarOpts(\n             # calendar组件离容器左侧的距离。\n            # left 的值可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，\n            # 也可以是 'left', 'center', 'right'。\n            # 如果 left 的值为'left', 'center', 'right'，组件会根据相应的位置自动对齐。          \n            pos_left=\"30\",\n            \n            # calendar组件离容器上侧的距离。\n            # top 的值可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，\n            # 也可以是 'top', 'middle', 'bottom'。\n            # 如果 top 的值为'top', 'middle', 'bottom'，组件会根据相应的位置自动对齐。\n            pos_top=\"120\",\n            # calendar组件离容器右侧的距离。\n            pos_right=\"30\",\n\n            range_=\"2019\",\n            \n# 日历坐标的布局朝向。可选：\n# 'horizontal', 'vertical'\n            orient = None,\n\n             # 年份的样式，参考 `series_options.LabelOpts`\n            yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),\n        ),\n    )\n    #全局配置项\n    .set_global_opts(\n        # 标题\n        title_opts=opts.TitleOpts(pos_top=\"20\", pos_left=\"center\", title=\"The average Temperature of NewYork in 2019\"),\n        # 颜色映射，组件水平放置\n        visualmap_opts=opts.VisualMapOpts(\n            pos_top =40, max_=100, min_=0, orient=\"horizontal\", is_piecewise=False, range_color = ['#2874B2','#0099FF','#f44e5a',\"#FF0000\"]\n        ),\n    )\n \n)\nc.render(\"天气热图.html\")","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-10-25T01:53:57.196742Z","iopub.execute_input":"2022-10-25T01:53:57.197662Z","iopub.status.idle":"2022-10-25T01:53:57.254969Z","shell.execute_reply.started":"2022-10-25T01:53:57.197616Z","shell.execute_reply":"2022-10-25T01:53:57.25309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![dbaeb3a4309664255629ba33caef3d8.png](attachment:856b762d-5382-4f90-bc4d-498ef40661a1.png)","metadata":{},"attachments":{"856b762d-5382-4f90-bc4d-498ef40661a1.png":{"image/png":"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"}}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}