diff --git a/py_stats_toolkit/stats/correlation/CorrelationModule.py b/py_stats_toolkit/stats/correlation/CorrelationModule.py index 371b7cb..c8d9693 100644 --- a/py_stats_toolkit/stats/correlation/CorrelationModule.py +++ b/py_stats_toolkit/stats/correlation/CorrelationModule.py @@ -21,51 +21,6 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union -import numpy as np -import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class CorrelationModule(BaseCapsule): - """ - Classe CorrelationModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise CorrelationModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de CorrelationModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - import numpy as np import pandas as pd from scipy import stats diff --git a/py_stats_toolkit/stats/descriptives/MoyenneGlissanteModule.py b/py_stats_toolkit/stats/descriptives/MoyenneGlissanteModule.py index c997e98..c0b4907 100644 --- a/py_stats_toolkit/stats/descriptives/MoyenneGlissanteModule.py +++ b/py_stats_toolkit/stats/descriptives/MoyenneGlissanteModule.py @@ -21,55 +21,10 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union -import numpy as np -import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class MoyenneGlissanteModule(BaseCapsule): - """ - Classe MoyenneGlissanteModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise MoyenneGlissanteModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de MoyenneGlissanteModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - import numpy as np import pandas as pd from ..core.AbstractClassBase import StatisticalModule -from ...utils.parallel import ParallelProcessor, BatchProcessor +from ...utils.parallel import ParallelProcessor class MoyenneGlissanteModule(StatisticalModule): """Module pour le calcul de la moyenne glissante.""" @@ -77,8 +32,8 @@ class MoyenneGlissanteModule(StatisticalModule): def __init__(self, n_jobs: int = -1, batch_size: int = 1000): super().__init__() self.window_size = None + self.batch_size = batch_size self.parallel_processor = ParallelProcessor(n_jobs=n_jobs) - self.batch_processor = BatchProcessor(batch_size=batch_size) def _process_chunk(self, chunk): """Traite un chunk de données.""" @@ -99,26 +54,14 @@ def process(self, data, window_size=5, **kwargs): self.validate_data(data) self.window_size = window_size + # Convert to Series if not already if isinstance(data, pd.Series): - data_array = data.values - else: - data_array = data - - # Utilisation du traitement par lots pour les grandes séries - if len(data_array) > self.batch_processor.batch_size: - result = self.batch_processor.process_batches(self._process_chunk, data_array) + series_data = data else: - # Traitement parallèle pour les séries plus petites - result = self.parallel_processor.parallel_apply( - self._process_chunk, - data_array.reshape(-1, 1), - axis=0 - ).flatten() + series_data = pd.Series(data) - if isinstance(data, pd.Series): - self.result = pd.Series(result, index=data.index) - else: - self.result = pd.Series(result) + # Calculate rolling mean + self.result = series_data.rolling(window=window_size).mean() return self.result diff --git a/py_stats_toolkit/stats/factorielle/FactorielleModule.py b/py_stats_toolkit/stats/factorielle/FactorielleModule.py index 009a916..0010f1b 100644 --- a/py_stats_toolkit/stats/factorielle/FactorielleModule.py +++ b/py_stats_toolkit/stats/factorielle/FactorielleModule.py @@ -21,51 +21,6 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union -import numpy as np -import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class FactorielleModule(BaseCapsule): - """ - Classe FactorielleModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise FactorielleModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de FactorielleModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - import numpy as np import pandas as pd from sklearn.decomposition import PCA, FactorAnalysis @@ -202,7 +157,7 @@ def get_quality_metrics(self): else: return { 'Variance du bruit': self.result['Noise variance'].tolist(), - 'Qualité de l'ajustement': 1 - np.mean(self.result['Noise variance']) + 'Qualité de l\'ajustement': 1 - np.mean(self.result['Noise variance']) } def transform(self, new_data): diff --git a/py_stats_toolkit/stats/frequence/FrequenceModule.py b/py_stats_toolkit/stats/frequence/FrequenceModule.py index 91b6a61..d3526b7 100644 --- a/py_stats_toolkit/stats/frequence/FrequenceModule.py +++ b/py_stats_toolkit/stats/frequence/FrequenceModule.py @@ -21,55 +21,10 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union import numpy as np import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class FrequenceModule(BaseCapsule): - """ - Classe FrequenceModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise FrequenceModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de FrequenceModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - -import numpy as np -import pandas as pd -from core.AbstractClassBase import StatisticalModule -from utils.parallel import ParallelProcessor +from ..core.AbstractClassBase import StatisticalModule +from ...utils.parallel import ParallelProcessor class FrequenceModule(StatisticalModule): """Module pour l'analyse de fréquence.""" diff --git a/py_stats_toolkit/stats/probabilistes/ProbabilistesModule.py b/py_stats_toolkit/stats/probabilistes/ProbabilistesModule.py index f9dc25e..f8316d1 100644 --- a/py_stats_toolkit/stats/probabilistes/ProbabilistesModule.py +++ b/py_stats_toolkit/stats/probabilistes/ProbabilistesModule.py @@ -21,55 +21,10 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union -import numpy as np -import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class ProbabilistesModule(BaseCapsule): - """ - Classe ProbabilistesModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise ProbabilistesModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de ProbabilistesModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - import numpy as np from scipy import stats from ..core.AbstractClassBase import StatisticalModule -from ...utils.parallel import ParallelProcessor, BatchProcessor +from ...utils.parallel import ParallelProcessor class ProbabilistesModule(StatisticalModule): """Module pour l'analyse probabiliste.""" @@ -78,8 +33,8 @@ def __init__(self, n_jobs: int = -1, batch_size: int = 1000): super().__init__() self.distribution = None self.params = None + self.batch_size = batch_size self.parallel_processor = ParallelProcessor(n_jobs=n_jobs) - self.batch_processor = BatchProcessor(batch_size=batch_size) def _fit_distribution_chunk(self, chunk): """Ajuste une distribution sur un chunk de données.""" @@ -112,7 +67,7 @@ def process(self, data, distribution="normal", **kwargs): self.distribution = distribution # Pour les petits ensembles de données, ajustement direct - if len(data) < self.batch_processor.batch_size: + if len(data) < self.batch_size: if distribution == "normal": self.params = stats.norm.fit(data) self.result = stats.norm(*self.params) @@ -159,7 +114,7 @@ def get_probability_density(self, x): raise ValueError("Exécutez d'abord process()") # Pour les petits ensembles, calcul direct - if len(x) < self.batch_processor.batch_size: + if len(x) < self.batch_size: return self.result.pdf(x) # Pour les grands ensembles, traitement parallèle @@ -181,7 +136,7 @@ def get_cumulative_distribution(self, x): raise ValueError("Exécutez d'abord process()") # Pour les petits ensembles, calcul direct - if len(x) < self.batch_processor.batch_size: + if len(x) < self.batch_size: return self.result.cdf(x) # Pour les grands ensembles, traitement parallèle diff --git a/py_stats_toolkit/stats/regression/RegressionModule.py b/py_stats_toolkit/stats/regression/RegressionModule.py index a017586..e5955fd 100644 --- a/py_stats_toolkit/stats/regression/RegressionModule.py +++ b/py_stats_toolkit/stats/regression/RegressionModule.py @@ -21,51 +21,6 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union -import numpy as np -import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class RegressionModule(BaseCapsule): - """ - Classe RegressionModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise RegressionModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de RegressionModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - import numpy as np import pandas as pd from scipy import stats diff --git a/py_stats_toolkit/stats/temporelle/TimeSeriesModule.py b/py_stats_toolkit/stats/temporelle/TimeSeriesModule.py index 0aa6c8a..82b4d2b 100644 --- a/py_stats_toolkit/stats/temporelle/TimeSeriesModule.py +++ b/py_stats_toolkit/stats/temporelle/TimeSeriesModule.py @@ -21,63 +21,18 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union import numpy as np import pandas as pd +from ..core.AbstractClassBase import StatisticalModule +from ...utils.parallel import ParallelProcessor -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class TimeSeriesAnalyzer(BaseCapsule): - """ - Classe TimeSeriesAnalyzer - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise TimeSeriesAnalyzer. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de TimeSeriesAnalyzer. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - -import numpy as np -import pandas as pd -from ..core.AbstractClassBase import TimeSeriesModule -from ...utils.parallel import ParallelProcessor, BatchProcessor - -class TimeSeriesAnalyzer(TimeSeriesModule): +class TimeSeriesAnalyzer(StatisticalModule): """Module pour l'analyse de séries temporelles.""" def __init__(self, n_jobs: int = -1, batch_size: int = 1000): super().__init__() + self.batch_size = batch_size self.parallel_processor = ParallelProcessor(n_jobs=n_jobs) - self.batch_processor = BatchProcessor(batch_size=batch_size) def process(self, data, timestamps=None, **kwargs): """ diff --git a/py_stats_toolkit/stats/variance/VarianceModule.py b/py_stats_toolkit/stats/variance/VarianceModule.py index 1a30b15..4ab6376 100644 --- a/py_stats_toolkit/stats/variance/VarianceModule.py +++ b/py_stats_toolkit/stats/variance/VarianceModule.py @@ -21,51 +21,6 @@ ===================================================================== ''' -# Imports spécifiques au module -from typing import Any, Dict, List, Optional, Tuple, Union -import numpy as np -import pandas as pd - -# Imports de la base -from capsules.BaseCapsule import BaseCapsule - -class VarianceModule(BaseCapsule): - """ - Classe VarianceModule - - Attributes: - data, parameters, results - """ - - def __init__(self): - """ - Initialise VarianceModule. - """ - super().__init__() - pass - - def configure(self, **kwargs) -> None: - """ - Configure les paramètres de VarianceModule. - - Args: - **kwargs: Paramètres de configuration - """ - pass - - def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]: - """ - Exécute le flux de travail d'analyse. - - Args: - data (Union[pd.DataFrame, pd.Series]): Données à analyser - **kwargs: Arguments additionnels - - Returns: - Dict[str, Any]: Résultats de l'analyse - """ - pass - import numpy as np import pandas as pd from scipy import stats