.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples_gallery/plot_who_can_still_win_wdc.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_gallery_plot_who_can_still_win_wdc.py: Who can still win the drivers WDC? ====================================== Calculates which drivers still has chance to win the WDC. Simplified since it doesn't compare positions if points are equal. This example implements 3 functions that it then uses to calculate its result. .. GENERATED FROM PYTHON SOURCE LINES 11-16 .. code-block:: Python import fastf1 from fastf1.ergast import Ergast .. GENERATED FROM PYTHON SOURCE LINES 17-20 For this example, we are looking at the 2023 season. We want to know who can theoretically still win the drivers' championship after the first 15 races. .. GENERATED FROM PYTHON SOURCE LINES 20-25 .. code-block:: Python SEASON = 2023 ROUND = 15 .. GENERATED FROM PYTHON SOURCE LINES 26-28 Get the current driver standings from Ergast. Reference https://theoehrly.github.io/Fast-F1-Pre-Release-Documentation/ergast.html#fastf1.ergast.Ergast.get_driver_standings .. GENERATED FROM PYTHON SOURCE LINES 28-34 .. code-block:: Python def get_drivers_standings(): ergast = Ergast() standings = ergast.get_driver_standings(season=SEASON, round=ROUND) return standings.content[0] .. GENERATED FROM PYTHON SOURCE LINES 35-38 We need a function to calculates the maximum amount of points possible if a driver wins everything left of the season. https://en.wikipedia.org/wiki/List_of_Formula_One_World_Championship_points_scoring_systems .. GENERATED FROM PYTHON SOURCE LINES 38-55 .. code-block:: Python def calculate_max_points_for_remaining_season(): POINTS_FOR_SPRINT = 8 + 25 + 1 # Winning the sprint, race and fastest lap POINTS_FOR_CONVENTIONAL = 25 + 1 # Winning the race and fastest lap events = fastf1.events.get_event_schedule(SEASON, backend='ergast') events = events[events['RoundNumber'] > ROUND] # Count how many sprints and conventional races are left sprint_events = len(events.loc[events["EventFormat"] == "sprint_shootout"]) conventional_events = len(events.loc[events["EventFormat"] == "conventional"]) # Calculate points for each sprint_points = sprint_events * POINTS_FOR_SPRINT conventional_points = conventional_events * POINTS_FOR_CONVENTIONAL return sprint_points + conventional_points .. GENERATED FROM PYTHON SOURCE LINES 56-62 For each driver we will see if there is a chance to get more points than the current leader. We assume the leader gets no more points and the driver gets the theoretical maximum amount of points. We currently don't consider the case of two drivers getting equal points since its more complicated and would require comparing positions. .. GENERATED FROM PYTHON SOURCE LINES 62-76 .. code-block:: Python def calculate_who_can_win(driver_standings, max_points): LEADER_POINTS = int(driver_standings.loc[0]['points']) for i, _ in enumerate(driver_standings.iterrows()): driver = driver_standings.loc[i] driver_max_points = int(driver["points"]) + max_points can_win = 'No' if driver_max_points < LEADER_POINTS else 'Yes' print(f"{driver['position']}: {driver['givenName'] + ' ' + driver['familyName']}, " f"Current points: {driver['points']}, " f"Theoretical max points: {driver_max_points}, " f"Can win: {can_win}") .. GENERATED FROM PYTHON SOURCE LINES 77-79 Now using the 3 functions above we can use them to calculate who can still win. .. GENERATED FROM PYTHON SOURCE LINES 79-88 .. code-block:: Python # Get the current drivers standings driver_standings = get_drivers_standings() # Get the maximum amount of points points = calculate_max_points_for_remaining_season() # Print which drivers can still win calculate_who_can_win(driver_standings, points) .. rst-class:: sphx-glr-script-out .. code-block:: none 1: Max Verstappen, Current points: 374.0, Theoretical max points: 580, Can win: Yes 2: Sergio Pérez, Current points: 223.0, Theoretical max points: 429, Can win: Yes 3: Lewis Hamilton, Current points: 180.0, Theoretical max points: 386, Can win: Yes 4: Fernando Alonso, Current points: 170.0, Theoretical max points: 376, Can win: Yes 5: Carlos Sainz, Current points: 142.0, Theoretical max points: 348, Can win: No 6: Charles Leclerc, Current points: 123.0, Theoretical max points: 329, Can win: No 7: George Russell, Current points: 109.0, Theoretical max points: 315, Can win: No 8: Lando Norris, Current points: 97.0, Theoretical max points: 303, Can win: No 9: Lance Stroll, Current points: 47.0, Theoretical max points: 253, Can win: No 10: Pierre Gasly, Current points: 45.0, Theoretical max points: 251, Can win: No 11: Oscar Piastri, Current points: 42.0, Theoretical max points: 248, Can win: No 12: Esteban Ocon, Current points: 36.0, Theoretical max points: 242, Can win: No 13: Alexander Albon, Current points: 21.0, Theoretical max points: 227, Can win: No 14: Nico Hülkenberg, Current points: 9.0, Theoretical max points: 215, Can win: No 15: Valtteri Bottas, Current points: 6.0, Theoretical max points: 212, Can win: No 16: Guanyu Zhou, Current points: 4.0, Theoretical max points: 210, Can win: No 17: Yuki Tsunoda, Current points: 3.0, Theoretical max points: 209, Can win: No 18: Kevin Magnussen, Current points: 3.0, Theoretical max points: 209, Can win: No 19: Liam Lawson, Current points: 2.0, Theoretical max points: 208, Can win: No 20: Logan Sargeant, Current points: 0.0, Theoretical max points: 206, Can win: No 21: Nyck de Vries, Current points: 0.0, Theoretical max points: 206, Can win: No 22: Daniel Ricciardo, Current points: 0.0, Theoretical max points: 206, Can win: No .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 6.384 seconds) .. _sphx_glr_download_examples_gallery_plot_who_can_still_win_wdc.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_who_can_still_win_wdc.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_who_can_still_win_wdc.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_