Spaces:
Sleeping
Sleeping
File size: 10,635 Bytes
3b184f4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
import streamlit as st
import pandas as pd
import plotly.express as px
# Import des données
results = pd.read_csv(r"./data/results.csv", sep=',')
races = pd.read_csv(r"./data/races.csv", sep=',')
circuits = pd.read_csv(r"./data/circuits.csv", sep=',')
constructors_st = pd.read_csv(r"./data/constructor_standings.csv", sep=',')
constructors = pd.read_csv(r"./data/constructors.csv", sep=',')
drivers = pd.read_csv(r"./data/drivers.csv", sep=',')
drivers_st = pd.read_csv(r"./data/driver_standings.csv", sep=',')
df1 = pd.merge(results[['driverId', 'constructorId', 'raceId', 'grid', 'positionOrder']], races[['raceId', 'year', 'circuitId']], on = 'raceId')
df3 = pd.merge(df1, circuits[['circuitId','country', 'name']], on = 'circuitId')
infos_pilotes = pd.merge(drivers_st, drivers, on=["driverId"])
#%%
infos_pilotes = infos_pilotes.rename(columns={'points' : 'points_pilotes',
'position' : 'position_pilotes',
'nationality' : 'nationality_pilotes',
'wins': 'wins_pilotes'})
#%%
col_pilotes = ["raceId", "driverId", "points_pilotes", "position_pilotes", "wins_pilotes", 'forename', 'surname']
#%%
infos_pilotes = pd.merge(infos_pilotes, races[["year", "name", "raceId"]], on=["raceId"])
infos_constructors = pd.merge(constructors_st, constructors, on=["constructorId"])
#%%
col_cons = ['raceId', 'constructorId', 'points_constructor',
'position_constructor', 'wins_constructor', 'name_cons']
#%%
infos_constructors = infos_constructors.rename(columns={'points' : 'points_constructor',
'position' : 'position_constructor',
'nationality' : 'nationality_constructor',
'wins': 'wins_constructor',
'name' : 'name_cons'})
#%%
infos_constructors = pd.merge(infos_constructors[col_cons], races[["year", "name", "raceId"]], on=["raceId"])
st.set_page_config(
page_title="Data visualisation F1",
)
st.sidebar.title("Mais qui gagnera !")
with st.sidebar:
add_radio = st.radio(
"Chapitres",
("Chapitre 1 : Histoire de la F1", "Chapitre 2 : 2020 une année importante", "Chapitre 3 : 2021 !")
)
if add_radio == "Chapitre 1 : Histoire de la F1":
st.markdown(
"""
# Chapitre 1 : Histoire de la F1
## Les débuts
La Formule 1 trouve ses racines dans les années 1950, lorsque la Fédération Internationale de l'Automobile (FIA) établit un championnat du monde de courses automobiles. La première saison officielle de la Formule 1 a lieu en 1950, avec le Grand Prix de Grande-Bretagne comme événement inaugural.
"""
)
intro_image_url = "https://static-images.lpnt.fr/cd-cw1618/images/2019/04/13/18392932lpw-18392936-article-silverstone-gp-histoire-jpg_6132152_660x287.jpg"
st.image(intro_image_url,
caption="Juan Manuel Fangio au volant de son Alfa Romeo à Silverstone, lors du premier Grand Prix de l'histoire de la Formule 1.",
use_column_width=True)
st.markdown(
"""
## L'ère des légendes
Dans les années 1950 et 1960, la Formule 1 voit émerger des pilotes légendaires tels que Juan Manuel Fangio, Alberto Ascari et Stirling Moss. Ces années sont marquées par des rivalités intenses entre écuries et des courses épiques sur des circuits légendaires comme Monza, Monaco et Spa-Francorchamps.
Les années 1990 et 2000 sont dominées par des écuries comme Williams, Ferrari et McLaren, et des pilotes emblématiques tels que Ayrton Senna, Alain Prost, Michael Schumacher et Lewis Hamilton. Ferrari en particulier connaît une période de domination avec Michael Schumacher, remportant de nombreux championnats constructeurs et pilotes.
"""
)
col1, col2 = st.columns(2)
with col1:
intro_image_url = "https://cdn.ferrari.com/cms/network/media/img/resize/5e3ac213e015050ac0c4f12a-ferrari-hero-fangio-career-full-focus-1?"
st.image(intro_image_url, caption="Juan Manuel Fangio", use_column_width=True)
with col2:
intro_image_url = "https://static1.purepeople.com/people/1/95/1/@/128138-michael-schumacher-200x200-2.jpg"
st.image(intro_image_url, caption="michael schumacher", use_column_width=True)
st.markdown(
"""
## Aujourd'hui !
Aujourd'hui, la Formule 1 reste l'une des compétitions sportives les plus regardées au monde, attirant des millions de fans passionnés chaque année. C'est une discipline qui incarne la vitesse, la technologie et le glamour, tout en conservant un héritage riche et une histoire fascinante qui continue de captiver les esprits à travers le monde.
"""
)
elif add_radio == "Chapitre 2 : 2020 une année importante":
st.markdown(
"""
# Chapitre 2 : 2020 une année importante
""")
lineup = "https://www.lsp-pilotage.com/wp-content/uploads/2020/03/3y1ipq61yh141.jpg"
st.image(lineup,
caption="Line Up des Pilotes 2020",
use_column_width=True)
st.markdown(
"""
## Présentation des Grand Prix""")
#### MAP PAR ANNÉE ####
years = list(df3['year'].unique())
years = sorted(years, reverse=True)
years = years[2:]
year_choice = st.selectbox("Sélectionnez l'année des circuits à afficher :",
options=years,
)
list_circuits = list(df3[df3['year'] == year_choice]["name"].unique())
circuits_filtered = circuits[circuits['name'].isin(list_circuits)]
# Création du graphique scatter_mapbox avec Plotly Express
fig_new = px.scatter_mapbox(circuits_filtered, lat="lat", lon="lng", hover_name="name",
color_discrete_sequence=["red"], zoom=2,
title=f"Emplacements des Grands Prix de Formule 1 - {year_choice}")
fig_new.update_layout(mapbox_style="open-street-map")
fig_new.update_layout(margin={"r": 0, "t": 0, "l": 0, "b": 0})
# Affichage du graphique dans Streamlit
st.plotly_chart(fig_new, use_container_width=True)
st.markdown("""
#### On a donc 22 grand prix réparti dans une dizaines de pays à travers le monde !
"""
)
st.markdown("""
## Résultats par pilotes et par constructeurs
"""
)
last_GP = infos_pilotes.groupby("year")["name"].last()
temp_pilotes = infos_pilotes[infos_pilotes["year"] == year_choice][
infos_pilotes["name"] == last_GP.loc[year_choice]]
fig = px.bar(temp_pilotes.sort_values(by='points_pilotes', ascending=False), x='surname', y='points_pilotes',
hover_data=['surname', 'position_pilotes', 'name'],
color='points_pilotes',
labels={'points_pilotes': 'Nombre de Points', 'surname': 'Nom'},
title='Classement des Pilotes par Nombre de Points')
st.plotly_chart(fig, use_container_width=True)
st.markdown("""
#### On remarque ici une nette domination de Lewis Hamilton. Cette domination n'est pas nouvelle, il remporte cette année la son 7ème titre de champion du monde. Son coéquipier Valtteri Bottas le suit à la deuxième position étant très proche de Max Verstappen.
"""
)
temp_ecurie = infos_constructors[infos_constructors["year"] == year_choice][
infos_constructors["name"] == last_GP.loc[year_choice]]
# %%
fig_ecurie = px.bar(temp_ecurie.sort_values(by='points_constructor', ascending=False), x='name_cons',
y='points_constructor',
hover_data=['name_cons', 'position_constructor', 'name'],
color='points_constructor',
labels={'points_constructor': 'Nombre de Points', 'name_cons': 'Nom'},
title='Classement des Constructeurs par Nombre de Points')
st.plotly_chart(fig_ecurie, use_container_width=True)
st.markdown("""
#### On voit donc la domination claire de Mercedes au classement des constructeurs, suivi de RedBull avec près de deux fois moins de points.
"""
)
st.markdown("""
## Gagnants de chaque course de la saison
"""
)
temp_courses = infos_pilotes[infos_pilotes["year"] == year_choice][infos_pilotes["position_pilotes"] == 1]
temp_courses["nom_complet"] = temp_courses["forename"] + ' ' + temp_courses["surname"]
temp_courses = temp_courses[["name", "nom_complet"]]
temp_courses = temp_courses.rename(columns={"name" : "Grand Prix", "nom_complet" : "Gagnant"})
st.dataframe(temp_courses)
elif add_radio == "Chapitre 3 : 2021 !":
st.markdown(
"""
# Chapitre 3 : 2021 !
##### Hamilton vient de remporter son 7ème titre de Champion du Monde, égalisant le record historique de la discipline détenu par Michaël Schumacher. Il va donc tenter cette année de battre un nouveau record : le premier coureur çà être 8 fois champion du monde !
##### Cependant, un pilote fait beaucoup parler de lui cette année : Max Verstappen. De part sa performance et ses capacités, il est l'un des favoris pour le titre de 2021.
"""
)
MV = "https://cdn-2.motorsport.com/images/mgl/6D1XbeV0/s800/max-verstappen-red-bull-racing.jpg"
st.image(MV,
caption="Max Verstappen",
use_column_width=True)
st.markdown("""
**Max Verstappen** :
Victoires en Grand Prix : 21
Podiums : 61
Pole positions : 10
""")
LH = "https://cdn-7.motorsport.com/images/mgl/YEQ1pGwY/s8/lewis-hamilton-mercedes.jpg"
st.image(LH,
caption="Lewis Hamilton",
use_column_width=True)
st.markdown("""
**Lewis Hamilton** :
Victoires en Grand Prix : 103 (record)
Podiums : 181
Pole positions : 103 (record)
Sept fois champion du monde de Formule 1 (2008, 2014, 2015, 2017, 2018, 2019, 2020)
Le pilote ayant remporté le plus de victoires, de pole positions et de podiums de l'histoire de la Formule 1
#### Max Verstappen va t-il mettre un terme au règne de Lewis Hamilton . Lewis Hamilton va t-il détenir le record absolu en gagnant la saison 2021 ? Pour répondre à ces questions, nous allons construire un modèle prédictif afin de déterminer qui gagnera chaque Grand Prix et donc le titre de champion de monde de Formule 1 2021.
""") |