예제 #1
0
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"})
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
 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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)