Description
Dans les dataframes pandas, certains champs peuvent être multi-lignes.
En particulier, dans le cas de jeux de données contenant des champs texte, c'est d'ailleurs souvent le cas.
Comme Khiops core ne gère pas les champs multi-lignes, cela produit des erreurs incompréhensibles.
Exemple: jeu de test Kaggle "Phishing Email Detection" https://www.kaggle.com/datasets/subhajournal/phishingemails
Questions/Ideas
Il suffit de préprocesser les data frames avec la ligne suivante
# Replace end of lines by blanks in order to obtain mono-line text fields
df = df.replace(['\r', '\n'],' ', regex=True)
Dans le cas de l'utilisation de l'API core, il faut préprocesser tout le jeu de données, avec un routine de type
def preprocess_dataset(input_file_name, output_file_name):
"""Preprocess text data to remove multi-line values"""
df = pd.read_csv(input_file_name)
# Replace end of lines by blanks in order to obtain mono-line text fields
df = df.replace(['\r', '\n'],' ', regex=True)
# Export using the tab separator
df.to_csv(output_file_name, index=False)
Cela pourrait-faire l'objet d'une Q&A pour le traitement des bases de texte
Note: Khiops Core ne gère pas les champs multi-lignes pour les raisons suivantes:
- gestion des erreurs
- un champ multi-lignes est spécifié en utilisant des double-quote
'"' en début et fin de champs
- en cas d'erreur de spécification (double-quote final manquant), il n'y a pas de reprise sur erreur possible
- avec python, une seule erreur de ce type provoque un crash indescriptible
- il faut alors lire tout jusqu'à la fin de fichier
- non robustesse: une seule erreur dans un fichier de très grande taille invalide tout un traitement
- traitement des index de lignes
- avec des champs multi-ligne, on n'a plus l'équivalence entre ligne et enregistrement identifié par un index de ligne: tout devient alors plus complexe à gérer et à manipuler (une erreur sur un enregistrement renvoie à son index de ligne...)
- limites en volumétrie
- un champs ne peut dépasser 1 Mbn une ligne ne peut dépasser 8 Mb
- il n'est pas envisageable de faire évoluer Khiops core sur ce point, mais il faudra que ceci soit bien documenté
Description
Dans les dataframes pandas, certains champs peuvent être multi-lignes.
En particulier, dans le cas de jeux de données contenant des champs texte, c'est d'ailleurs souvent le cas.
Comme Khiops core ne gère pas les champs multi-lignes, cela produit des erreurs incompréhensibles.
Exemple: jeu de test Kaggle "Phishing Email Detection" https://www.kaggle.com/datasets/subhajournal/phishingemails
Questions/Ideas
Il suffit de préprocesser les data frames avec la ligne suivante
Dans le cas de l'utilisation de l'API core, il faut préprocesser tout le jeu de données, avec un routine de type
Cela pourrait-faire l'objet d'une Q&A pour le traitement des bases de texte
Note: Khiops Core ne gère pas les champs multi-lignes pour les raisons suivantes:
'"'en début et fin de champs