dragon-ml-toolbox 10.4.2__py3-none-any.whl → 10.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dragon-ml-toolbox might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dragon-ml-toolbox
3
- Version: 10.4.2
3
+ Version: 10.5.0
4
4
  Summary: A collection of tools for data science and machine learning projects.
5
5
  Author-email: Karl Loza <luigiloza@gmail.com>
6
6
  License-Expression: MIT
@@ -1,5 +1,5 @@
1
- dragon_ml_toolbox-10.4.2.dist-info/licenses/LICENSE,sha256=2uUFNy7D0TLgHim1K5s3DIJ4q_KvxEXVilnU20cWliY,1066
2
- dragon_ml_toolbox-10.4.2.dist-info/licenses/LICENSE-THIRD-PARTY.md,sha256=lY4_rJPnLnMu7YBQaY-_iz1JRDcLdQzNCyeLAF1glJY,1837
1
+ dragon_ml_toolbox-10.5.0.dist-info/licenses/LICENSE,sha256=2uUFNy7D0TLgHim1K5s3DIJ4q_KvxEXVilnU20cWliY,1066
2
+ dragon_ml_toolbox-10.5.0.dist-info/licenses/LICENSE-THIRD-PARTY.md,sha256=lY4_rJPnLnMu7YBQaY-_iz1JRDcLdQzNCyeLAF1glJY,1837
3
3
  ml_tools/ETL_cleaning.py,sha256=lSP5q6-ukGhJBPV8dlsqJvPXAzj4du_0J-SbtEd0Pjg,19292
4
4
  ml_tools/ETL_engineering.py,sha256=a6KCWH6kRatZtjaFEF_o917ApPMK5_vRD-BjfCDAl-E,49400
5
5
  ml_tools/GUI_tools.py,sha256=kEQWg-bog3pB5tI22gMGKWaCGHnz9TB2Lvvfhf5F2CI,45412
@@ -21,7 +21,7 @@ ml_tools/__init__.py,sha256=q0y9faQ6e17XCQ7eUiCZ1FJ4Bg5EQqLjZ9f_l5REUUY,41
21
21
  ml_tools/_logger.py,sha256=wcImAiXEZKPNcwM30qBh3t7HvoPURonJY0nrgMGF0sM,4719
22
22
  ml_tools/_script_info.py,sha256=21r83LV3RubsNZ_RTEUON6RbDf7Mh4_udweNcvdF_Fk,212
23
23
  ml_tools/custom_logger.py,sha256=ry43hk54K6xKo8jRAgq1sFxUpOA9T0LIJ7sw0so2BW0,5880
24
- ml_tools/data_exploration.py,sha256=hKA_3U-piJ8TtDWhzX_T2Awkg-25e0DC5E8qloqPo6w,27206
24
+ ml_tools/data_exploration.py,sha256=4McT2BR9muK4JVVTKUfvRyThe0m_o2vpy9RJ1f_1FeY,28692
25
25
  ml_tools/ensemble_evaluation.py,sha256=xMEMfXJ5MjTkTfr1LkFOeD7iUtnVDCW3S9lm3zT-6tY,24778
26
26
  ml_tools/ensemble_inference.py,sha256=EFHnbjbu31fcVp88NBx8lWAVdu2Gpg9MY9huVZJHFfM,9350
27
27
  ml_tools/ensemble_learning.py,sha256=3s0kH4i_naj0IVl_T4knst-Hwg4TScWjEdsXX5KAi7I,21929
@@ -30,7 +30,7 @@ ml_tools/keys.py,sha256=HtPG8-MWh89C32A7eIlfuuA-DLwkxGkoDfwR2TGN9CQ,1074
30
30
  ml_tools/optimization_tools.py,sha256=P3I6lIpvZ8Xf2kX5FvvBKBmrK2pB6idBpkTzfUJxTeE,5073
31
31
  ml_tools/path_manager.py,sha256=7sRvAoNrboRY6ef9gH3_qdzoZ66iLs7Aii4P39K0kEk,13819
32
32
  ml_tools/utilities.py,sha256=SVMaSDigh6SUoAeig2_sXLLIj5w5mUs5KuVWpHvFDec,19816
33
- dragon_ml_toolbox-10.4.2.dist-info/METADATA,sha256=h1d0dElCW4RCyrk_awtDZs1wJM0-SA6kRgcDs4FlVAI,6968
34
- dragon_ml_toolbox-10.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
35
- dragon_ml_toolbox-10.4.2.dist-info/top_level.txt,sha256=wm-oxax3ciyez6VoO4zsFd-gSok2VipYXnbg3TH9PtU,9
36
- dragon_ml_toolbox-10.4.2.dist-info/RECORD,,
33
+ dragon_ml_toolbox-10.5.0.dist-info/METADATA,sha256=K4ziPX-Xx9f4E2vk_OXm6G8CR8l07arIByU4yfGC5a8,6968
34
+ dragon_ml_toolbox-10.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
35
+ dragon_ml_toolbox-10.5.0.dist-info/top_level.txt,sha256=wm-oxax3ciyez6VoO4zsFd-gSok2VipYXnbg3TH9PtU,9
36
+ dragon_ml_toolbox-10.5.0.dist-info/RECORD,,
@@ -21,6 +21,7 @@ __all__ = [
21
21
  "show_null_columns",
22
22
  "drop_columns_with_missing_data",
23
23
  "drop_macro",
24
+ "clean_column_names",
24
25
  "split_features_targets",
25
26
  "split_continuous_binary",
26
27
  "plot_correlation_heatmap",
@@ -300,6 +301,42 @@ def drop_macro(df: pd.DataFrame,
300
301
  return df_clean
301
302
 
302
303
 
304
+ def clean_column_names(df: pd.DataFrame, replacement_char: str = '-', replacement_pattern: str = r'[\[\]{}<>,:"]', verbose: bool = True) -> pd.DataFrame:
305
+ """
306
+ Cleans DataFrame column names by replacing special characters.
307
+
308
+ This function is useful for ensuring compatibility with libraries like LightGBM,
309
+ which do not support special JSON characters such as `[]{}<>,:"` in feature names.
310
+
311
+ Args:
312
+ df (pd.DataFrame): The input DataFrame.
313
+ replacement_char (str): The character to use for replacing characters.
314
+ replacement_pattern (str): Regex pattern to use for the replacement logic.
315
+ verbose (bool): If True, prints the renamed columns.
316
+
317
+ Returns:
318
+ pd.DataFrame: A new DataFrame with cleaned column names.
319
+ """
320
+ new_df = df.copy()
321
+
322
+ original_columns = new_df.columns
323
+ new_columns = original_columns.str.replace(replacement_pattern, replacement_char, regex=True)
324
+
325
+ # Create a map of changes for logging
326
+ rename_map = {old: new for old, new in zip(original_columns, new_columns) if old != new}
327
+
328
+ if verbose:
329
+ if rename_map:
330
+ _LOGGER.info(f"Cleaned {len(rename_map)} column name(s) containing special characters:")
331
+ for old, new in rename_map.items():
332
+ print(f" '{old}' -> '{new}'")
333
+ else:
334
+ _LOGGER.info("No column names required cleaning.")
335
+
336
+ new_df.columns = new_columns
337
+ return new_df
338
+
339
+
303
340
  def split_features_targets(df: pd.DataFrame, targets: list[str]):
304
341
  """
305
342
  Splits a DataFrame's columns into features and targets.