Adaptation du graphique aux nouvelles sources #32
This commit is contained in:
+37
-15
@@ -4,13 +4,13 @@ import plotly.express as px
|
|||||||
import polars as pl
|
import polars as pl
|
||||||
|
|
||||||
|
|
||||||
def get_map_count_marches(lf):
|
def get_map_count_marches(lf: pl.LazyFrame):
|
||||||
lf = lf.with_columns(
|
lf = lf.with_columns(
|
||||||
pl.col("lieuExecution_code").str.head(2).str.zfill(2).alias("Département")
|
pl.col("lieuExecution_code").str.head(2).str.zfill(2).alias("Département")
|
||||||
)
|
)
|
||||||
lf = (
|
lf = (
|
||||||
lf.unique(subset="uid")
|
lf.select(["uid", "Département"])
|
||||||
.select(["uid", "Département"])
|
.drop_nulls()
|
||||||
.unique(subset="uid")
|
.unique(subset="uid")
|
||||||
.group_by("Département")
|
.group_by("Département")
|
||||||
.len("uid")
|
.len("uid")
|
||||||
@@ -59,34 +59,56 @@ def get_barchart_sources(lf: pl.LazyFrame, type_date: str):
|
|||||||
"datePublicationDonnees": "publication des données",
|
"datePublicationDonnees": "publication des données",
|
||||||
}
|
}
|
||||||
|
|
||||||
lf = lf.select("uid", type_date, "source")
|
lf = lf.select("uid", type_date, "sourceDataset")
|
||||||
|
|
||||||
lf = lf.unique("uid")
|
lf = lf.unique("uid")
|
||||||
|
|
||||||
|
# Rassemblement des datasets Atexo pour ne pas surcharger le graphique
|
||||||
|
lf = lf.with_columns(
|
||||||
|
pl.when(pl.col("sourceDataset").str.starts_with("atexo"))
|
||||||
|
.then(pl.lit("plateformes atexo"))
|
||||||
|
.otherwise(pl.col("sourceDataset"))
|
||||||
|
.alias("sourceDataset")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Rassemblement des datasets AWS pour ne pas surcharger le graphique
|
||||||
|
lf = lf.with_columns(
|
||||||
|
pl.when(pl.col("sourceDataset").str.contains(r"aws|marches\-publics.info"))
|
||||||
|
.then(pl.lit("aws"))
|
||||||
|
.otherwise(pl.col("sourceDataset"))
|
||||||
|
.alias("sourceDataset")
|
||||||
|
)
|
||||||
|
|
||||||
lf = lf.with_columns(pl.col(type_date).dt.year().alias("annee"))
|
lf = lf.with_columns(pl.col(type_date).dt.year().alias("annee"))
|
||||||
lf = lf.filter(
|
lf = lf.filter(
|
||||||
pl.col(type_date).is_not_null() & pl.col("annee").is_between(2018, 2025)
|
pl.col(type_date).is_not_null() & pl.col("annee").is_between(2019, 2025)
|
||||||
)
|
)
|
||||||
lf = lf.sort(by=[type_date, "source"], descending=False)
|
|
||||||
lf = lf.with_columns(pl.col(type_date).cast(pl.String).str.head(7))
|
lf = lf.with_columns(pl.col(type_date).cast(pl.String).str.head(7))
|
||||||
|
lf = (
|
||||||
lf = lf.group_by([type_date, "source"]).len()
|
lf.group_by([type_date, "sourceDataset"])
|
||||||
lf = lf.with_columns(
|
.len()
|
||||||
pl.when(pl.col("source").is_null()).then(
|
.sort(by=[type_date, "len"], descending=True)
|
||||||
pl.lit("Source inconnue").alias("source")
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
lf = lf.sort(by=[type_date, "source"], descending=False)
|
|
||||||
|
# lf = lf.with_columns(
|
||||||
|
# pl.when(pl.col("sourceDataset").is_null()).then(
|
||||||
|
# pl.lit("Source inconnue")).alias("sourceDataset")
|
||||||
|
# )
|
||||||
|
|
||||||
|
lf = lf.sort(by=["sourceDataset"], descending=False)
|
||||||
df: pl.DataFrame = lf.collect()
|
df: pl.DataFrame = lf.collect()
|
||||||
|
|
||||||
fig = px.bar(
|
fig = px.bar(
|
||||||
df,
|
df,
|
||||||
x=type_date,
|
x=type_date,
|
||||||
y="len",
|
y="len",
|
||||||
color="source",
|
color="sourceDataset",
|
||||||
title=f"Nombre de marchés attribués par date de {labels[type_date]} et source de données",
|
title=f"Nombre de marchés attribués par date de {labels[type_date]} et source de données",
|
||||||
labels={
|
labels={
|
||||||
"len": "Nombre de marchés",
|
"len": "Nombre de marchés",
|
||||||
type_date: f"Mois de {labels[type_date]}",
|
type_date: f"Mois de {labels[type_date]}",
|
||||||
"source": "Source de données",
|
"sourceDataset": "Source de données",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
return fig
|
return fig
|
||||||
|
|||||||
Reference in New Issue
Block a user