Remplacement des null par '' close #18
This commit is contained in:
+23
-2
@@ -7,7 +7,12 @@ from dash import Input, Output, State, callback, dash_table, dcc, html, register
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from polars.exceptions import ComputeError
|
from polars.exceptions import ComputeError
|
||||||
|
|
||||||
from src.utils import add_annuaire_link, split_filter_part
|
from src.utils import (
|
||||||
|
add_annuaire_link,
|
||||||
|
booleans_to_strings,
|
||||||
|
numbers_to_strings,
|
||||||
|
split_filter_part,
|
||||||
|
)
|
||||||
|
|
||||||
logger = logging.getLogger("decp.info")
|
logger = logging.getLogger("decp.info")
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
@@ -41,6 +46,13 @@ lf = lf.drop(
|
|||||||
["titulaire_siren", "acheteur_siren", "typeGroupementOperateurs", "sourceOpenData"]
|
["titulaire_siren", "acheteur_siren", "typeGroupementOperateurs", "sourceOpenData"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Convertir les colonnes booléennes en chaînes de caractères
|
||||||
|
lf = booleans_to_strings(lf)
|
||||||
|
|
||||||
|
# Remplacer les valeurs manquantes par des chaînes vides
|
||||||
|
lf = lf.fill_null("")
|
||||||
|
|
||||||
|
|
||||||
# Ajout des liens vers l'annuaire
|
# Ajout des liens vers l'annuaire
|
||||||
lf = add_annuaire_link(lf)
|
lf = add_annuaire_link(lf)
|
||||||
|
|
||||||
@@ -56,7 +68,13 @@ datatable = dash_table.DataTable(
|
|||||||
filter_action="custom",
|
filter_action="custom",
|
||||||
filter_options={"case": "insensitive", "placeholder_text": "Filtrer..."},
|
filter_options={"case": "insensitive", "placeholder_text": "Filtrer..."},
|
||||||
columns=[
|
columns=[
|
||||||
{"name": i, "id": i, "presentation": "markdown"}
|
{
|
||||||
|
"name": i,
|
||||||
|
"id": i,
|
||||||
|
"presentation": "markdown",
|
||||||
|
"type": "text",
|
||||||
|
"format": {"nully": "N/A"},
|
||||||
|
}
|
||||||
for i in lf.collect_schema().names()
|
for i in lf.collect_schema().names()
|
||||||
],
|
],
|
||||||
selected_columns=[],
|
selected_columns=[],
|
||||||
@@ -173,6 +191,9 @@ def update_table(page_current, page_size, filter_query, data_timestamp):
|
|||||||
start_row = page_current * page_size
|
start_row = page_current * page_size
|
||||||
# end_row = (page_current + 1) * page_size
|
# end_row = (page_current + 1) * page_size
|
||||||
|
|
||||||
|
# Remplacement des valeurs numériques par des chaînes de caractères
|
||||||
|
lff = numbers_to_strings(lff)
|
||||||
|
|
||||||
dff = lff.slice(start_row, page_size).collect()
|
dff = lff.slice(start_row, page_size).collect()
|
||||||
# print("dff_sliced:", lff.select("titulaire.typeId"))
|
# print("dff_sliced:", lff.select("titulaire.typeId"))
|
||||||
dff = dff.to_dicts()
|
dff = dff.to_dicts()
|
||||||
|
|||||||
+23
-1
@@ -1,4 +1,5 @@
|
|||||||
import polars as pl
|
import polars as pl
|
||||||
|
import polars.selectors as cs
|
||||||
|
|
||||||
operators = [
|
operators = [
|
||||||
["s<", "<"],
|
["s<", "<"],
|
||||||
@@ -28,7 +29,7 @@ def add_annuaire_link(df: pl.LazyFrame):
|
|||||||
pl.col("titulaire_id")
|
pl.col("titulaire_id")
|
||||||
+ ' <a href="https://annuaire-entreprises.data.gouv.fr/etablissement/'
|
+ ' <a href="https://annuaire-entreprises.data.gouv.fr/etablissement/'
|
||||||
+ pl.col("titulaire_id")
|
+ pl.col("titulaire_id")
|
||||||
+ '" target="_blank">📑</a>'
|
+ '">📑</a>'
|
||||||
)
|
)
|
||||||
.otherwise(pl.col("titulaire_id"))
|
.otherwise(pl.col("titulaire_id"))
|
||||||
.alias("titulaire_id")
|
.alias("titulaire_id")
|
||||||
@@ -42,3 +43,24 @@ def add_annuaire_link(df: pl.LazyFrame):
|
|||||||
).alias("acheteur_id")
|
).alias("acheteur_id")
|
||||||
)
|
)
|
||||||
return df
|
return df
|
||||||
|
|
||||||
|
|
||||||
|
def booleans_to_strings(lf: pl.LazyFrame) -> pl.LazyFrame:
|
||||||
|
"""
|
||||||
|
Convert all boolean columns to string type.
|
||||||
|
"""
|
||||||
|
lf = lf.with_columns(
|
||||||
|
pl.col(cs.Boolean)
|
||||||
|
.cast(pl.String)
|
||||||
|
.str.replace("true", "oui")
|
||||||
|
.str.replace("false", "non")
|
||||||
|
)
|
||||||
|
return lf
|
||||||
|
|
||||||
|
|
||||||
|
def numbers_to_strings(lf: pl.LazyFrame) -> pl.LazyFrame:
|
||||||
|
"""
|
||||||
|
Convert all numeric columns to string type.
|
||||||
|
"""
|
||||||
|
lf = lf.with_columns(pl.col(pl.Float64, pl.Int16).cast(pl.String).fill_null(""))
|
||||||
|
return lf
|
||||||
|
|||||||
Reference in New Issue
Block a user