def get_dropdown_list_vehicle_motor(): odrive_df = ov.get_structure_data() motors = list(set(odrive_df["Motorisation"])) options = [] value = [] for m in motors: if m is not None and m is not np.nan: options.append({"label": m, "value": m}) value.append(m) return dcc.Checklist(id="odrive_select_vehicle_type", options=options, value=value, labelStyle={"display": "block"})
def get_odrive_histogram_plot_by_vehicle(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) odrive_df["Immatriculation"] = (odrive_df["Immatriculation"].astype(str) + " (" + odrive_df["Marque"] + " - " + odrive_df["Modèle"] + ")") vehicle_emissions = odrive_df.groupby(["Immatriculation"]) vehicle_emissions = vehicle_emissions.agg({ "Moyenne KM par mois": pd.Series.mean, "Emissions (g/an)": pd.Series.mean }).reset_index() vehicle_emissions["Moyenne KM par mois"] = vehicle_emissions[ "Moyenne KM par mois"] vehicle_emissions[ "Emissions (g/an)"] = vehicle_emissions["Emissions (g/an)"] / 12000 vehicle_emissions = vehicle_emissions.nlargest(50, "Moyenne KM par mois") vehicle_emissions = vehicle_emissions.sort_values("Moyenne KM par mois", ascending=[0]) fig = make_subplots(specs=[[{"secondary_y": False}]]) fig.add_trace( go.Bar( y=vehicle_emissions["Moyenne KM par mois"], x=vehicle_emissions["Immatriculation"], name="Distance parcourue (km/mois)", ), secondary_y=False, ) fig.add_trace( go.Bar(y=vehicle_emissions["Emissions (g/an)"], x=vehicle_emissions["Immatriculation"], name="Emissions (kg/mois)"), secondary_y=False, ) fig.update_layout(plot_bgcolor="white", template="plotly_white", margin={ "t": 30, "r": 30, "l": 30 }) fig.update_yaxes(title_text="Emissions (kg/mois), Distance par mois (km)", secondary_y=False) # fig.update_yaxes(title_text="CO2 (g/km)", secondary_y=True) fig.update_layout(barmode="group") return fig
def get_donut_by_entity_type(code_structure=None): odrive_df = ov.get_structure_data(code_structure) prestation_df = odrive_df.groupby( ["Entité 3"])["Emissions (g/an)"].sum().reset_index() prestation_df.entities = list(set(odrive_df["Entité 3"])) fig = go.Figure(data=[ go.Pie(labels=prestation_df["Entité 3"], values=prestation_df["Emissions (g/an)"], hole=0.3) ]) fig.update_layout(plot_bgcolor="white", template="plotly_white", margin={ "t": 30, "r": 30, "l": 30 }) return fig
def get_odrive_scatter_plot_by_vehicle_type(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) odrive_df["Marque"] = odrive_df["Marque"] + " " + odrive_df[ "Modèle"] + " (" + odrive_df["Motorisation"] + ")" vehicle_emissions = odrive_df.groupby(["Marque"]) vehicle_emissions = vehicle_emissions.agg({ "Emissions (g/an)": pd.Series.mean, "km parcours par an": pd.Series.mean, "Motorisation": lambda x: x.value_counts().index[0], "Immatriculation": pd.Series.nunique, }).reset_index() vehicle_emissions["Marque"] = ( vehicle_emissions["Marque"] + " (" + vehicle_emissions["Immatriculation"].astype(str) + " véhicule(s))") vehicle_emissions["Immatriculation"] = vehicle_emissions[ "Immatriculation"].add(5) fig = go.Figure(data=[ go.Scatter( x=vehicle_emissions["km parcours par an"], y=vehicle_emissions["Emissions (g/an)"], mode="markers", marker_size=vehicle_emissions["Immatriculation"], text=vehicle_emissions["Marque"], ) ]) # color=vehicle_emissions["Motorisation"], fig.update_layout( plot_bgcolor="white", template="plotly_white", margin={ "t": 30, "r": 30, "l": 30 }, xaxis=dict(title_text="Moyenne de distance parcourue par an (km)"), yaxis=dict(title_text="Moyenne des emissions de CO2 par an (g)"), ) return fig
def get_odrive_plot_vehicle_make(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) odrive_df["categorie_emmission"] = odrive_df["CO2 (g/km)"].apply( get_vehicle_category) vehicles_df = odrive_df.groupby( ["categorie_emmission"])["Immatriculation"].nunique().reset_index() fig = go.Figure(data=[ go.Pie(labels=vehicles_df["categorie_emmission"], values=vehicles_df["Immatriculation"], hole=0.3) ]) fig.update_layout(plot_bgcolor="white", template="plotly_white", margin={ "t": 30, "r": 30, "l": 30 }) return fig
def get_test_graph_odrive(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) prestation_df = odrive_df.groupby( ["Entité 3"])["km parcours par an"].sum().reset_index() prestation_df.entities = list(set(odrive_df["Entité 3"])) fig = go.Figure(data=[ go.Bar(y=prestation_df["km parcours par an"], x=prestation_df["Entité 3"]) ]) fig.update_layout( plot_bgcolor="white", template="plotly_white", margin={ "t": 30, "r": 30, "l": 30 }, yaxis=dict(title_text="km parcours par an"), ) return fig
def load_data(self): self.chorus_dt_df = ch.get_structure_data(self.service.code_chorus) self.odrive_df = ov.get_structure_data(self.service.code_odrive) self.osfi_df = oh.get_structure_data(self.service.code_osfi)
def get_odrive_montly_kilometer(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) count_kilometers_per_month_per_vehicle = ( odrive_df["km parcours par an"].sum() / 12) / odrive_df["Immatriculation"].nunique() return round(count_kilometers_per_month_per_vehicle, 2)
def get_kilometers_total_odive(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) count_kilometers = odrive_df["km parcours par an"].sum() return round(count_kilometers, 2)
def get_total_emisions_vehicles(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) count_emissions = odrive_df["Emissions (g/an)"].sum() return round(count_emissions / 1000, 2)
def get_fleet_vehicle(code_structure=None, filter_vehicle_type=None): odrive_df = ov.get_structure_data(code_structure, filter_vehicle_type) count_vehicles = odrive_df["Immatriculation"].nunique() return round(count_vehicles, 2)