fg-data-profiling 4.19.0__tar.gz
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.
- fg_data_profiling-4.19.0/CONTRIBUTING.md +102 -0
- fg_data_profiling-4.19.0/LICENSE +21 -0
- fg_data_profiling-4.19.0/MANIFEST.in +27 -0
- fg_data_profiling-4.19.0/PKG-INFO +362 -0
- fg_data_profiling-4.19.0/README.md +270 -0
- fg_data_profiling-4.19.0/pyproject.toml +154 -0
- fg_data_profiling-4.19.0/setup.cfg +4 -0
- fg_data_profiling-4.19.0/setup.py +18 -0
- fg_data_profiling-4.19.0/src/data_profiling/__init__.py +34 -0
- fg_data_profiling-4.19.0/src/data_profiling/compare_reports.py +359 -0
- fg_data_profiling-4.19.0/src/data_profiling/config.py +496 -0
- fg_data_profiling-4.19.0/src/data_profiling/config_default.yaml +223 -0
- fg_data_profiling-4.19.0/src/data_profiling/config_minimal.yaml +222 -0
- fg_data_profiling-4.19.0/src/data_profiling/controller/__init__.py +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/controller/console.py +125 -0
- fg_data_profiling-4.19.0/src/data_profiling/controller/pandas_decorator.py +21 -0
- fg_data_profiling-4.19.0/src/data_profiling/expectations_report.py +117 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/__init__.py +4 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/alerts.py +780 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/correlations.py +163 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/dataframe.py +35 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/describe.py +210 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/description.py +108 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/duplicates.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/expectation_algorithms.py +112 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/handler.py +81 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/missing.py +146 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pairwise.py +33 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/__init__.py +55 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/correlations_pandas.py +207 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/dataframe_pandas.py +26 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_boolean_pandas.py +43 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_categorical_pandas.py +274 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_counts_pandas.py +63 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_date_pandas.py +77 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_file_pandas.py +56 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_generic_pandas.py +36 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_image_pandas.py +255 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_numeric_pandas.py +175 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_path_pandas.py +63 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_supported_pandas.py +41 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_text_pandas.py +62 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_timeseries_pandas.py +222 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/describe_url_pandas.py +57 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/discretize_pandas.py +81 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/duplicates_pandas.py +56 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/imbalance_pandas.py +35 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/missing_pandas.py +42 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/sample_pandas.py +38 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/summary_pandas.py +101 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/table_pandas.py +56 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/timeseries_index_pandas.py +33 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/pandas/utils_pandas.py +27 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/sample.py +37 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/__init__.py +48 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/correlations_spark.py +152 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/dataframe_spark.py +34 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_boolean_spark.py +27 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_categorical_spark.py +28 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_counts_spark.py +105 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_date_spark.py +51 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_generic_spark.py +30 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_numeric_spark.py +155 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_supported_spark.py +33 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/describe_text_spark.py +25 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/duplicates_spark.py +54 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/missing_spark.py +96 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/sample_spark.py +43 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/summary_spark.py +95 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/table_spark.py +58 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/spark/timeseries_index_spark.py +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/summarizer.py +207 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/summary.py +66 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/summary_algorithms.py +276 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/table.py +10 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/timeseries_index.py +16 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/typeset.py +365 -0
- fg_data_profiling-4.19.0/src/data_profiling/model/typeset_relations.py +143 -0
- fg_data_profiling-4.19.0/src/data_profiling/profile_report.py +573 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/__init__.py +4 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/formatters.py +346 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/__init__.py +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/__init__.py +39 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/alerts.py +18 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/collapse.py +24 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/container.py +50 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/correlation_table.py +21 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/dropdown.py +44 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/duplicate.py +16 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/frequency_table.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/frequency_table_small.py +16 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/html.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/image.py +34 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/item_renderer.py +17 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/renderable.py +42 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/root.py +35 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/sample.py +20 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/scores.py +32 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/table.py +26 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/toggle_button.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/variable.py +40 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/core/variable_info.py +36 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/__init__.py +9 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/flavour_html.py +64 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/flavour_widget.py +61 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/flavours.py +43 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/__init__.py +47 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/alerts.py +10 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/collapse.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/container.py +58 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/correlation_table.py +13 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/dropdown.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/duplicate.py +24 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/frequency_table.py +20 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/frequency_table_small.py +15 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/html.py +6 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/image.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/root.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/sample.py +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/scores.py +11 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/table.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_constant.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_constant_length.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_dirty_category.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_duplicates.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_empty.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_high_cardinality.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_high_correlation.html +4 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_imbalance.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_infinite.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_missing.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_near_duplicates.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_non_stationary.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_seasonal.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_skewed.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_truncated.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_type_date.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_uniform.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_unique.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_unsupported.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_zeros.html +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/alerts.html +47 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/collapse.html +11 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/correlation_table.html +5 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/diagram.html +11 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/dropdown.html +16 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/duplicate.html +5 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/frequency_table.html +45 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/frequency_table_small.html +34 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/report.html +26 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sample.html +10 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/scores.html +78 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/batch_grid.html +16 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/grid.html +18 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/list.html +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/named_list.html +8 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/overview_tabs.html +30 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/scores.html +3 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/sections.html +13 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/select.html +40 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/tabs.html +30 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/table.html +38 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/toggle_button.html +18 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/variable.html +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/variable_info.html +49 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/bootstrap.bundle.min.js +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/bootstrap.min.css +6 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/cosmo.bootstrap.min.css +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/flatly.bootstrap.min.css +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/script.js +52 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/simplex.bootstrap.min.css +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/style.css +253 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/united.bootstrap.min.css +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/footer.html +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/javascript.html +18 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/navigation.html +36 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/style.html +53 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/templates.py +76 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/toggle_button.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/variable.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/html/variable_info.py +7 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/__init__.py +49 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/alerts.py +45 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/collapse.py +43 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/container.py +121 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/correlation_table.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/dropdown.py +31 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/duplicate.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/frequency_table.py +57 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/frequency_table_small.py +66 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/html.py +11 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/image.py +26 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/notebook.py +81 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/root.py +10 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/sample.py +14 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/table.py +30 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/toggle_button.py +17 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/variable.py +12 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/flavours/widget/variable_info.py +11 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/presentation/frequency_table_utils.py +141 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/__init__.py +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/correlations.py +123 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/overview.py +376 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/report.py +457 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/__init__.py +35 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_boolean.py +132 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_categorical.py +566 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_common.py +31 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_complex.py +102 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_count.py +172 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_date.py +143 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_file.py +70 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_generic.py +45 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_image.py +204 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_path.py +134 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_real.py +314 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_text.py +189 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_timeseries.py +371 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/structure/variables/render_url.py +132 -0
- fg_data_profiling-4.19.0/src/data_profiling/report/utils.py +34 -0
- fg_data_profiling-4.19.0/src/data_profiling/serialize_report.py +143 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/__init__.py +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/backend.py +9 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/cache.py +59 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/common.py +142 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/compat.py +31 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/dataframe.py +238 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/logger.py +53 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/notebook.py +8 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/paths.py +45 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/progress_bar.py +15 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/styles.py +22 -0
- fg_data_profiling-4.19.0/src/data_profiling/utils/versions.py +19 -0
- fg_data_profiling-4.19.0/src/data_profiling/version.py +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/visualisation/__init__.py +1 -0
- fg_data_profiling-4.19.0/src/data_profiling/visualisation/context.py +87 -0
- fg_data_profiling-4.19.0/src/data_profiling/visualisation/missing.py +138 -0
- fg_data_profiling-4.19.0/src/data_profiling/visualisation/plot.py +1158 -0
- fg_data_profiling-4.19.0/src/data_profiling/visualisation/utils.py +113 -0
- fg_data_profiling-4.19.0/src/fg_data_profiling.egg-info/PKG-INFO +362 -0
- fg_data_profiling-4.19.0/src/fg_data_profiling.egg-info/SOURCES.txt +245 -0
- fg_data_profiling-4.19.0/src/fg_data_profiling.egg-info/dependency_links.txt +1 -0
- fg_data_profiling-4.19.0/src/fg_data_profiling.egg-info/entry_points.txt +3 -0
- fg_data_profiling-4.19.0/src/fg_data_profiling.egg-info/requires.txt +68 -0
- fg_data_profiling-4.19.0/src/fg_data_profiling.egg-info/top_level.txt +2 -0
- fg_data_profiling-4.19.0/src/ydata_profiling/__init__.py +43 -0
- fg_data_profiling-4.19.0/venv/spark.yml +23 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
## How to contribute to Data-Profiling
|
|
2
|
+
|
|
3
|
+
Data-profiling aims to ease exploratory data analysis for structured datasets, including time-series.
|
|
4
|
+
Our focus is to provide users with useful and robust statistics for such datasets encountered in industry, academia and elsewhere.
|
|
5
|
+
Data-profiling is open-source and stimulates contributions from passionate community users.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
#### Themes to contribute
|
|
9
|
+
In line with our aim, we identify the following themes:
|
|
10
|
+
|
|
11
|
+
- **Exploratory data analysis**:
|
|
12
|
+
The core of the package is a dataset summarization by its main characteristics, which is complemented with warnings on data issues and visualisations.
|
|
13
|
+
|
|
14
|
+
_Suggestions for contribution_:
|
|
15
|
+
Extend the support of more data types (think of paths, location or GPS coordinates and ordinal data types),
|
|
16
|
+
text data (e.g. encoding, vocabulary size, spelling errors, language detection),
|
|
17
|
+
time series analysis,
|
|
18
|
+
or even images (e.g. dimensions, EXIF).
|
|
19
|
+
|
|
20
|
+
_Related_: [#7][i7], [#129][i129], [#190][i190], [#204][i204] or [create one](https://github.com/Data-Centric-AI-Community/data-profiling/issues/new/choose).
|
|
21
|
+
|
|
22
|
+
- **Stability, Performance and Restricted environment compatibility:**
|
|
23
|
+
Data exploration takes place in all kinds of conditions, on the latest machine learning platforms with enormous dataset to managed environments in large corporations.
|
|
24
|
+
`data-profiling` helps analysts, researchers and engineers alike in these cases.
|
|
25
|
+
We do this by fixing bugs, improving performance on big datasets and adding environment compatibility.
|
|
26
|
+
|
|
27
|
+
_Suggestions for contribution (Performance)_:
|
|
28
|
+
Perform concurrency analysis or profile execution times and leverage the gained insights for improved performance (e.g. multiprocessing, cython, numba) or test the performance of `data-profiling` with [big data sets](https://www.stats.govt.nz/large-datasets/csv-files-for-download/) and corresponding commonly used data formats (such as parquet).
|
|
29
|
+
|
|
30
|
+
_Suggestions for contribution (Stability)_:
|
|
31
|
+
Either review the code and add tests or watch the [issues page](https://github.com/Data-Centric-AI-Community/data-profiling/issues) and [Stackoverflow tag](https://stackoverflow.com/questions/tagged/ydata-profiling) to find current issues.
|
|
32
|
+
|
|
33
|
+
_Related_: [#98][i98], [#122][i122] or [create one](https://github.com/Data-Centric-AI-Community/data-profiling/issues/new/choose).
|
|
34
|
+
|
|
35
|
+
- **Interaction, presentation and user experience**:
|
|
36
|
+
As `data-profiling` eases exploratory data analysis, working with the package should reflect that.
|
|
37
|
+
Interaction and user experience plays a central role in working with the package.
|
|
38
|
+
Working on interactive and static features is possible through the modular nature of the package: the user can configure which features to use.
|
|
39
|
+
|
|
40
|
+
_Suggestions for contribution (interactivity)_:
|
|
41
|
+
Interactivity allows for more user friendly applications, including but not limited to on demand analysis (don't compute what you don't want to see) and interactive histograms and correlations.
|
|
42
|
+
This is ideal for smaller datasets, where we can compute this on-the-fly.
|
|
43
|
+
`ipywidgets` would be a great place to start (e.g. [widget based view](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20List.html)).
|
|
44
|
+
|
|
45
|
+
_Suggestions for contribution (presentation)_:
|
|
46
|
+
Other forms of distribution than HTML (for example PDF or packaged as an GUI application via [PyQt](https://riverbankcomputing.com/software/pyqt/intro))
|
|
47
|
+
Users should be able to share reports (improve size of labels in graph, add explanations to correlation matrices and allow for styling/branding).
|
|
48
|
+
|
|
49
|
+
_Related_: [#161][i161], [#175][i175], [#191][i191] or [create one](https://github.com/Data-Centric-AI-Community/data-profiling/issues/new/choose).
|
|
50
|
+
|
|
51
|
+
- **Community**:
|
|
52
|
+
The success of this package demonstrates the power of sharing and working together.
|
|
53
|
+
You are welcome as part of this community.
|
|
54
|
+
|
|
55
|
+
_Suggestions for contribution_:
|
|
56
|
+
Share with us if this package is of value to you, let us know [in our community](https://discord.com/invite/mw7xjJ7b7s).
|
|
57
|
+
We are interested in how you use `data-profiling` in your work.
|
|
58
|
+
|
|
59
|
+
_Related_: [#87][i87] or [create one](https://github.com/Data-Centric-AI-Community/data-profiling/issues/new/choose).
|
|
60
|
+
|
|
61
|
+
- **Machine learning:**
|
|
62
|
+
`data-profiling` is not a machine learning package, even though many of our users use EDA as a step prior to developing their models.
|
|
63
|
+
Our focus lies in the exploratory data analysis.
|
|
64
|
+
Any functionality that enables machine learning applications by more effective data profiling, is welcome.
|
|
65
|
+
|
|
66
|
+
_Related_: [#124][i124], [#173][i173], [#198][i198] or [create one](https://github.com/Data-Centric-AI-Community/data-profiling/issues/new/choose).
|
|
67
|
+
|
|
68
|
+
#### **Did you find a bug?**
|
|
69
|
+
|
|
70
|
+
* **Ensure the bug was not already reported** by searching on Github under [Issues](https://github.com/Data-Centric-AI-Community/data-profiling/issues).
|
|
71
|
+
|
|
72
|
+
* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/Data-Centric-AI-Community/data-profiling/issues/new/choose).
|
|
73
|
+
If possible, use the relevant bug report templates to create the issue.
|
|
74
|
+
|
|
75
|
+
#### **Did you write a patch that fixes a bug?**
|
|
76
|
+
|
|
77
|
+
* Open a new Github pull request with the patch.
|
|
78
|
+
|
|
79
|
+
* Ensure the PR description clearly describes the problem and solution.
|
|
80
|
+
Include the relevant issue number if applicable.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
#### Acknowledgements
|
|
84
|
+
|
|
85
|
+
We would like to thank everyone who has helped getting us to where we are now.
|
|
86
|
+
|
|
87
|
+
See the [Contributor Graph](https://github.com/Data-Centric-AI-Community/data-profiling/graphs/contributors)
|
|
88
|
+
|
|
89
|
+
[i7]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/7
|
|
90
|
+
[i129]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/129
|
|
91
|
+
[i190]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/190
|
|
92
|
+
[i204]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/204
|
|
93
|
+
[i98]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/98
|
|
94
|
+
[i122]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/122
|
|
95
|
+
[i124]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/24
|
|
96
|
+
[i173]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/173
|
|
97
|
+
[i198]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/198
|
|
98
|
+
[i87]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/87
|
|
99
|
+
[i161]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/161
|
|
100
|
+
[i175]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/175
|
|
101
|
+
[i191]: https://github.com/Data-Centric-AI-Community/data-profiling/issues/191
|
|
102
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2016 Jos Polfliet, 2019-2021 Simon Brugman, 2022-Present YData Labs Inc
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Requirements
|
|
2
|
+
include requirements*.txt
|
|
3
|
+
|
|
4
|
+
# Include license, Readme, etc.
|
|
5
|
+
include LICENSE
|
|
6
|
+
include *.md
|
|
7
|
+
|
|
8
|
+
# Templates and static resources
|
|
9
|
+
recursive-include src/data_profiling/report/presentation/flavours/html/templates *.html *.js *.css
|
|
10
|
+
|
|
11
|
+
# Configuration
|
|
12
|
+
include src/data_profiling/*.yaml
|
|
13
|
+
|
|
14
|
+
# Spark Dev venv
|
|
15
|
+
recursive-include venv *.yml
|
|
16
|
+
|
|
17
|
+
# Exclude development, docs, testing and example code
|
|
18
|
+
exclude .pre-commit-config.yaml
|
|
19
|
+
exclude commitlint.config.js
|
|
20
|
+
exclude .releaserc.json
|
|
21
|
+
exclude Makefile make.bat
|
|
22
|
+
exclude docs examples tests docsrc .devcontainer
|
|
23
|
+
recursive-exclude docs *
|
|
24
|
+
recursive-exclude docsrc *
|
|
25
|
+
recursive-exclude examples *
|
|
26
|
+
recursive-exclude tests *
|
|
27
|
+
recursive-exclude .devcontainer *
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fg-data-profiling
|
|
3
|
+
Version: 4.19.0
|
|
4
|
+
Summary: Generate profile report for pandas DataFrame
|
|
5
|
+
Author-email: YData Labs Inc <opensource@ydata.ai>
|
|
6
|
+
Project-URL: Homepage, https://ydata.ai
|
|
7
|
+
Project-URL: Repository, https://github.com/Data-Centric-AI-Community/data-profiling
|
|
8
|
+
Keywords: pandas,data-science,data-analysis,python,jupyter,ipython
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
17
|
+
Classifier: Intended Audience :: Healthcare Industry
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering
|
|
19
|
+
Classifier: Framework :: IPython
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
26
|
+
Requires-Python: <3.14,>=3.10
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Requires-Dist: scipy<1.17,>=1.8
|
|
30
|
+
Requires-Dist: pandas!=1.4.0,<3.0,>1.5
|
|
31
|
+
Requires-Dist: matplotlib<=3.10,>=3.5
|
|
32
|
+
Requires-Dist: pydantic<3,>=2
|
|
33
|
+
Requires-Dist: PyYAML<6.1,>=6.0.3
|
|
34
|
+
Requires-Dist: jinja2<3.2,>=3.1.6
|
|
35
|
+
Requires-Dist: visions[type_image_path]<0.8.2,>=0.7.5
|
|
36
|
+
Requires-Dist: numpy<2.4,>=1.22
|
|
37
|
+
Requires-Dist: minify-html>=0.15.0
|
|
38
|
+
Requires-Dist: filetype>=1.0.0
|
|
39
|
+
Requires-Dist: phik<0.13,>=0.12.5
|
|
40
|
+
Requires-Dist: requests<3,>=2.32.0
|
|
41
|
+
Requires-Dist: tqdm<5,>=4.66.3
|
|
42
|
+
Requires-Dist: seaborn<0.14,>=0.10.1
|
|
43
|
+
Requires-Dist: multimethod<2,>=1.4
|
|
44
|
+
Requires-Dist: statsmodels<1,>=0.13.2
|
|
45
|
+
Requires-Dist: typeguard<5,>=4
|
|
46
|
+
Requires-Dist: imagehash==4.3.2
|
|
47
|
+
Requires-Dist: wordcloud>=1.9.4
|
|
48
|
+
Requires-Dist: dacite<2,>=1.9
|
|
49
|
+
Requires-Dist: numba<0.63,>=0.60
|
|
50
|
+
Provides-Extra: dev
|
|
51
|
+
Requires-Dist: black>=20.8b1; extra == "dev"
|
|
52
|
+
Requires-Dist: isort>=5.0.7; extra == "dev"
|
|
53
|
+
Requires-Dist: pre-commit>=2.8.2; extra == "dev"
|
|
54
|
+
Requires-Dist: virtualenv>=20.0.33; extra == "dev"
|
|
55
|
+
Requires-Dist: twine; extra == "dev"
|
|
56
|
+
Requires-Dist: wheel; extra == "dev"
|
|
57
|
+
Requires-Dist: myst-parser>=0.18.1; extra == "dev"
|
|
58
|
+
Requires-Dist: sphinx_rtd_theme>=0.4.3; extra == "dev"
|
|
59
|
+
Requires-Dist: sphinx-autodoc-typehints>=1.10.3; extra == "dev"
|
|
60
|
+
Requires-Dist: sphinx-multiversion>=0.2.3; extra == "dev"
|
|
61
|
+
Requires-Dist: autodoc_pydantic; extra == "dev"
|
|
62
|
+
Requires-Dist: standard-imghdr; extra == "dev"
|
|
63
|
+
Provides-Extra: docs
|
|
64
|
+
Requires-Dist: mkdocs<1.7.0,>=1.6.0; extra == "docs"
|
|
65
|
+
Requires-Dist: mkdocs-material<10.0.0,>=9.0.12; extra == "docs"
|
|
66
|
+
Requires-Dist: mkdocs-material-extensions<2.0.0,>=1.1.1; extra == "docs"
|
|
67
|
+
Requires-Dist: mkdocs-table-reader-plugin<=2.2.0; extra == "docs"
|
|
68
|
+
Requires-Dist: mike<2.2.0,>=2.1.1; extra == "docs"
|
|
69
|
+
Requires-Dist: mkdocstrings[python]<1.0.0,>=0.20.0; extra == "docs"
|
|
70
|
+
Requires-Dist: mkdocs-badges; extra == "docs"
|
|
71
|
+
Provides-Extra: notebook
|
|
72
|
+
Requires-Dist: jupyter>=1.0.0; extra == "notebook"
|
|
73
|
+
Requires-Dist: ipywidgets>=7.5.1; extra == "notebook"
|
|
74
|
+
Provides-Extra: spark
|
|
75
|
+
Requires-Dist: pyspark>=4.0; extra == "spark"
|
|
76
|
+
Requires-Dist: pyarrow>=4.0.0; extra == "spark"
|
|
77
|
+
Requires-Dist: pandas>1.1; extra == "spark"
|
|
78
|
+
Requires-Dist: numpy>=1.16.0; extra == "spark"
|
|
79
|
+
Requires-Dist: visions[type_image_path]<0.7.7,>=0.7.5; extra == "spark"
|
|
80
|
+
Provides-Extra: test
|
|
81
|
+
Requires-Dist: pytest; extra == "test"
|
|
82
|
+
Requires-Dist: coverage<8,>=6.5; extra == "test"
|
|
83
|
+
Requires-Dist: codecov; extra == "test"
|
|
84
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
85
|
+
Requires-Dist: nbval; extra == "test"
|
|
86
|
+
Requires-Dist: pyarrow; extra == "test"
|
|
87
|
+
Requires-Dist: twine>=3.1.1; extra == "test"
|
|
88
|
+
Requires-Dist: kaggle; extra == "test"
|
|
89
|
+
Provides-Extra: unicode
|
|
90
|
+
Requires-Dist: tangled-up-in-unicode==0.2.0; extra == "unicode"
|
|
91
|
+
Dynamic: license-file
|
|
92
|
+
|
|
93
|
+
# data-profiling
|
|
94
|
+
|
|
95
|
+
[](https://github.com/ydataai/pandas-profiling/actions/workflows/tests.yml)
|
|
96
|
+
[](https://pypi.python.org/pypi/data-profiling/)
|
|
97
|
+
[](https://pypi.org/project/data-profiling/)
|
|
98
|
+
[](https://codecov.io/gh/ydataai/pandas-profiling)
|
|
99
|
+
[](https://github.com/ydataai/pandas-profiling/releases)
|
|
100
|
+
[](https://pypi.org/project/data-profiling/)
|
|
101
|
+
[](https://github.com/python/black)
|
|
102
|
+
<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=cb7e69df-af81-4352-809a-d4251756affc" />
|
|
103
|
+
|
|
104
|
+
<p align="center"><img width="300" src="https://assets.ydata.ai/oss/data-profiling_black.png" alt="YData Profiling Logo"></p>
|
|
105
|
+
|
|
106
|
+
<p align="center">
|
|
107
|
+
<a href="https://data-profiling.ydata.ai/docs/master/">Documentation</a>
|
|
108
|
+
|
|
|
109
|
+
<a href="https://tiny.ydata.ai/dcai-data-profiling">Discord</a>
|
|
110
|
+
|
|
|
111
|
+
<a href="https://stackoverflow.com/questions/tagged/pandas-profiling+or+data-profiling">Stack Overflow</a>
|
|
112
|
+
|
|
|
113
|
+
<a href="https://data-profiling.ydata.ai/docs/master/pages/reference/changelog.html#changelog">Latest changelog</a>
|
|
114
|
+
|
|
115
|
+
</p>
|
|
116
|
+
|
|
117
|
+
<p align="center">
|
|
118
|
+
Do you like this project? Show us your love and <a href="https://engage.ydata.ai">give feedback!</a>
|
|
119
|
+
</p>
|
|
120
|
+
|
|
121
|
+
`data-profiling` primary goal is to provide a one-line Exploratory Data Analysis (EDA) experience in a consistent and fast solution. Like pandas `df.describe()` function, that is so handy, data-profiling delivers an extended analysis of a DataFrame while allowing the data analysis to be exported in different formats such as **html** and **json**.
|
|
122
|
+
|
|
123
|
+
The package outputs a simple and digested analysis of a dataset, including **time-series** and **text**.
|
|
124
|
+
|
|
125
|
+
> **Looking for a scalable solution that can fully integrate with your database systems?**<br>
|
|
126
|
+
> Leverage YData Fabric Data Catalog to connect to different databases and storages (Oracle, snowflake, PostGreSQL, GCS, S3, etc.) and leverage an interactive and guided profiling experience in Fabric. Check out the [Community Version](http://ydata.ai/register?utm_source=data-profiling&utm_medium=documentation&utm_campaign=YData%20Fabric%20Community).
|
|
127
|
+
|
|
128
|
+
## ▶️ Quickstart
|
|
129
|
+
|
|
130
|
+
### Install
|
|
131
|
+
```cmd
|
|
132
|
+
pip install data-profiling
|
|
133
|
+
```
|
|
134
|
+
or
|
|
135
|
+
```cmd
|
|
136
|
+
conda install -c conda-forge data-profiling
|
|
137
|
+
```
|
|
138
|
+
### Start profiling
|
|
139
|
+
|
|
140
|
+
Start by loading your pandas `DataFrame` as you normally would, e.g. by using:
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
import numpy as np
|
|
144
|
+
import pandas as pd
|
|
145
|
+
from data_profiling import ProfileReport
|
|
146
|
+
|
|
147
|
+
df = pd.DataFrame(np.random.rand(100, 5), columns=["a", "b", "c", "d", "e"])
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
To generate the standard profiling report, merely run:
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
profile = ProfileReport(df, title="Profiling Report")
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 📊 Key features
|
|
157
|
+
|
|
158
|
+
- **Type inference**: automatic detection of columns' data types (*Categorical*, *Numerical*, *Date*, etc.)
|
|
159
|
+
- **Warnings**: A summary of the problems/challenges in the data that you might need to work on (*missing data*, *inaccuracies*, *skewness*, etc.)
|
|
160
|
+
- **Univariate analysis**: including descriptive statistics (mean, median, mode, etc) and informative visualizations such as distribution histograms
|
|
161
|
+
- **Multivariate analysis**: including correlations, a detailed analysis of missing data, duplicate rows, and visual support for variables pairwise interaction
|
|
162
|
+
- **Time-Series**: including different statistical information relative to time dependent data such as auto-correlation and seasonality, along ACF and PACF plots.
|
|
163
|
+
- **Text analysis**: most common categories (uppercase, lowercase, separator), scripts (Latin, Cyrillic) and blocks (ASCII, Cyrilic)
|
|
164
|
+
- **File and Image analysis**: file sizes, creation dates, dimensions, indication of truncated images and existence of EXIF metadata
|
|
165
|
+
- **Compare datasets**: one-line solution to enable a fast and complete report on the comparison of datasets
|
|
166
|
+
- **Flexible output formats**: all analysis can be exported to an HTML report that can be easily shared with different parties, as JSON for an easy integration in automated systems and as a widget in a Jupyter Notebook.
|
|
167
|
+
|
|
168
|
+
The report contains three additional sections:
|
|
169
|
+
|
|
170
|
+
- **Overview**: mostly global details about the dataset (number of records, number of variables, overall missigness and duplicates, memory footprint)
|
|
171
|
+
- **Alerts**: a comprehensive and automatic list of potential data quality issues (high correlation, skewness, uniformity, zeros, missing values, constant values, between others)
|
|
172
|
+
- **Reproduction**: technical details about the analysis (time, version and configuration)
|
|
173
|
+
|
|
174
|
+
### 🎁 Latest features
|
|
175
|
+
|
|
176
|
+
- Want to scale? Check the latest release with ⭐⚡[Spark support](https://data-profiling.ydata.ai/docs/master/pages/integrations/pypspark.html)!
|
|
177
|
+
- Looking for how you can do an EDA for Time-Series 🕛 ? Check [this blogpost](https://towardsdatascience.com/how-to-do-an-eda-for-time-series-cbb92b3b1913).
|
|
178
|
+
- You want to compare 2 datasets and get a report? Check [this blogpost](https://medium.com/towards-artificial-intelligence/how-to-compare-2-dataset-with-pandas-profiling-2ae3a9d7695e)
|
|
179
|
+
|
|
180
|
+
### ✨ Spark
|
|
181
|
+
|
|
182
|
+
Spark support has been released, but we are always looking for an extra pair of hands 👐.
|
|
183
|
+
[Check current work in progress!](https://github.com/ydataai/data-profiling/projects/3).
|
|
184
|
+
|
|
185
|
+
## 📝 Use cases
|
|
186
|
+
data-profiling can be used to deliver a variety of different use-case. The documentation includes guides, tips and tricks for tackling them:
|
|
187
|
+
|
|
188
|
+
| Use case | Description |
|
|
189
|
+
|----------|---------------------------------------------------------------------------------------------|
|
|
190
|
+
| [Comparing datasets](https://docs.profiling.ydata.ai/latest/features/comparing_datasets) | Comparing multiple version of the same dataset |
|
|
191
|
+
| [Profiling a Time-Series dataset](https://docs.profiling.ydata.ai/latest/features/time_series_datasets) | Generating a report for a time-series dataset with a single line of code |
|
|
192
|
+
|[Profiling large datasets](https://docs.profiling.ydata.ai/latest/features/big_data) | Tips on how to prepare data and configure `data-profiling` for working with large datasets |
|
|
193
|
+
| [Handling sensitive data](https://docs.profiling.ydata.ai/latest/features/sensitive_data) | Generating reports which are mindful about sensitive data in the input dataset |
|
|
194
|
+
| [Dataset metadata and data dictionaries](https://docs.profiling.ydata.ai/latest/features/metadata) | Complementing the report with dataset details and column-specific data dictionaries |
|
|
195
|
+
| [Customizing the report's appearance](https://docs.profiling.ydata.ai/latest/features/custom_reports) | Changing the appearance of the report's page and of the contained visualizations |
|
|
196
|
+
| [Profiling Databases](https://docs.profiling.ydata.ai/latest/features/collaborative_data_profiling) | For a seamless profiling experience in your organization's databases, check [Fabric Data Catalog](https://ydata.ai/products/data_catalog), which allows to consume data from different types of storages such as RDBMs (Azure SQL, PostGreSQL, Oracle, etc.) and object storages (Google Cloud Storage, AWS S3, Snowflake, etc.), among others. |
|
|
197
|
+
### Using inside Jupyter Notebooks
|
|
198
|
+
|
|
199
|
+
There are two interfaces to consume the report inside a Jupyter notebook: through widgets and through an embedded HTML report.
|
|
200
|
+
|
|
201
|
+
<img alt="Notebook Widgets" src="https://data-profiling.ydata.ai/docs/master/assets/widgets.gif" width="800" />
|
|
202
|
+
|
|
203
|
+
The above is achieved by simply displaying the report as a set of widgets. In a Jupyter Notebook, run:
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
profile.to_widgets()
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The HTML report can be directly embedded in a cell in a similar fashion:
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
profile.to_notebook_iframe()
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
<img alt="HTML" src="https://data-profiling.ydata.ai/docs/master/assets/iframe.gif" width="800" />
|
|
216
|
+
|
|
217
|
+
### Exporting the report to a file
|
|
218
|
+
|
|
219
|
+
To generate a HTML report file, save the `ProfileReport` to an object and use the `to_file()` function:
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
profile.to_file("your_report.html")
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Alternatively, the report's data can be obtained as a JSON file:
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
# As a JSON string
|
|
229
|
+
json_data = profile.to_json()
|
|
230
|
+
|
|
231
|
+
# As a file
|
|
232
|
+
profile.to_file("your_report.json")
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Using in the command line
|
|
236
|
+
|
|
237
|
+
For standard formatted CSV files (which can be read directly by pandas without additional settings), the `data_profiling` executable can be used in the command line. The example below generates a report named *Example Profiling Report*, using a configuration file called `default.yaml`, in the file `report.html` by processing a `data.csv` dataset.
|
|
238
|
+
|
|
239
|
+
```sh
|
|
240
|
+
data_profiling --title "Example Profiling Report" --config_file default.yaml data.csv report.html
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Additional details on the CLI are available [on the documentation](https://data-profiling.ydata.ai/docs/master/pages/getting_started/quickstart.html#command-line-usage).
|
|
244
|
+
|
|
245
|
+
## 👀 Examples
|
|
246
|
+
|
|
247
|
+
The following example reports showcase the potentialities of the package across a wide range of dataset and data types:
|
|
248
|
+
|
|
249
|
+
* [Census Income](https://data-profiling.ydata.ai/examples/master/census/census_report.html) (US Adult Census data relating income with other demographic properties)
|
|
250
|
+
* [NASA Meteorites](https://data-profiling.ydata.ai/examples/master/meteorites/meteorites_report.html) (comprehensive set of meteorite landing - object properties and locations) [](https://colab.research.google.com/github/ydataai/pandas-profiling/blob/master/examples/meteorites/meteorites_cloud.ipynb) [](https://mybinder.org/v2/gh/ydataai/pandas-profiling/master?filepath=examples%2Fmeteorites%2Fmeteorites%5Fcloud.ipynb)
|
|
251
|
+
* [Titanic](https://data-profiling.ydata.ai/examples/master/titanic/titanic_report.html) (the "Wonderwall" of datasets) [](https://colab.research.google.com/github/ydataai/pandas-profiling/blob/master/examples/titanic/titanic_cloud.ipynb) [](https://mybinder.org/v2/gh/ydataai/pandas-profiling/master?filepath=examples%2Ftitanic%2Ftitanic%5Fcloud.ipynb)
|
|
252
|
+
* [NZA](https://data-profiling.ydata.ai/examples/master/nza/nza_report.html) (open data from the Dutch Healthcare Authority)
|
|
253
|
+
* [Stata Auto](https://data-profiling.ydata.ai/examples/master/stata_auto/stata_auto_report.html) (1978 Automobile data)
|
|
254
|
+
* [Colors](https://data-profiling.ydata.ai/examples/master/colors/colors_report.html) (a simple colors dataset)
|
|
255
|
+
* [Vektis](https://data-profiling.ydata.ai/examples/master/vektis/vektis_report.html) (Vektis Dutch Healthcare data)
|
|
256
|
+
* [UCI Bank Dataset](https://data-profiling.ydata.ai/examples/master/bank_marketing_data/uci_bank_marketing_report.html) (marketing dataset from a bank)
|
|
257
|
+
* [Russian Vocabulary](https://data-profiling.ydata.ai/examples/master/features/russian_vocabulary.html) (100 most common Russian words, showcasing unicode text analysis)
|
|
258
|
+
* [Website Inaccessibility](https://data-profiling.ydata.ai/examples/master/features/website_inaccessibility_report.html) (website accessibility analysis, showcasing support for URL data)
|
|
259
|
+
* [Orange prices](https://data-profiling.ydata.ai/examples/master/features/united_report.html) and
|
|
260
|
+
* [Coal prices](https://data-profiling.ydata.ai/examples/master/features/flatly_report.html) (simple pricing evolution datasets, showcasing the theming options)
|
|
261
|
+
* [USA Air Quality](https://github.com/ydataai/pandas-profiling/tree/master/examples/usaairquality) (Time-series air quality dataset EDA example)
|
|
262
|
+
* [HCC](https://github.com/ydataai/pandas-profiling/tree/master/examples/hcc) (Open dataset from healthcare, showcasing compare between two sets of data, before and after preprocessing)
|
|
263
|
+
|
|
264
|
+
## 🛠️ Installation
|
|
265
|
+
Additional details, including information about widget support, are available [on the documentation](https://data-profiling.ydata.ai/docs/master/pages/getting_started/installation.html).
|
|
266
|
+
|
|
267
|
+
### Using pip
|
|
268
|
+
[](https://pepy.tech/project/data-profiling)
|
|
269
|
+
[](https://pepy.tech/project/data-profiling/month)
|
|
270
|
+
[](https://pypi.org/project/data-profiling/)
|
|
271
|
+
|
|
272
|
+
You can install using the `pip` package manager by running:
|
|
273
|
+
|
|
274
|
+
```sh
|
|
275
|
+
pip install -U data-profiling
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
#### Extras
|
|
279
|
+
|
|
280
|
+
The package declares "extras", sets of additional dependencies.
|
|
281
|
+
|
|
282
|
+
* `[notebook]`: support for rendering the report in Jupyter notebook widgets.
|
|
283
|
+
* `[unicode]`: support for more detailed Unicode analysis, at the expense of additional disk space.
|
|
284
|
+
* `[pyspark]`: support for pyspark for big dataset analysis
|
|
285
|
+
|
|
286
|
+
Install these with e.g.
|
|
287
|
+
|
|
288
|
+
```sh
|
|
289
|
+
pip install -U data-profiling[notebook,unicode,pyspark]
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
### Using conda
|
|
294
|
+
[](https://anaconda.org/conda-forge/pandas-profiling)
|
|
295
|
+
[](https://anaconda.org/conda-forge/pandas-profiling)
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
You can install using the `conda` package manager by running:
|
|
299
|
+
|
|
300
|
+
```sh
|
|
301
|
+
conda install -c conda-forge data-profiling
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### From source (development)
|
|
305
|
+
|
|
306
|
+
Download the source code by cloning the repository or click on [Download ZIP](https://github.com/ydataai/pandas-profiling/archive/master.zip) to download the latest stable version.
|
|
307
|
+
|
|
308
|
+
Install it by navigating to the proper directory and running:
|
|
309
|
+
|
|
310
|
+
```sh
|
|
311
|
+
pip install -e .
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
The profiling report is written in HTML and CSS, which means a modern browser is required.
|
|
315
|
+
|
|
316
|
+
You need [Python 3](https://python3statement.github.io/) to run the package. Other dependencies can be found in the requirements files:
|
|
317
|
+
|
|
318
|
+
| Filename | Requirements|
|
|
319
|
+
|----------|-------------|
|
|
320
|
+
| [requirements.txt](https://github.com/ydataai/pandas-profiling/blob/master/requirements.txt) | Package requirements|
|
|
321
|
+
| [requirements-dev.txt](https://github.com/ydataai/pandas-profiling/blob/master/requirements-dev.txt) | Requirements for development|
|
|
322
|
+
| [requirements-test.txt](https://github.com/ydataai/pandas-profiling/blob/master/requirements-test.txt) | Requirements for testing|
|
|
323
|
+
| [setup.py](https://github.com/ydataai/pandas-profiling/blob/master/setup.py) | Requirements for widgets etc. |
|
|
324
|
+
|
|
325
|
+
## 🔗 Integrations
|
|
326
|
+
|
|
327
|
+
To maximize its usefulness in real world contexts, `data-profiling` has a set of implicit and explicit integrations with a variety of other actors in the Data Science ecosystem:
|
|
328
|
+
|
|
329
|
+
| Integration type | Description |
|
|
330
|
+
|---|---|
|
|
331
|
+
| [Other DataFrame libraries](https://docs.profiling.ydata.ai/latest/integrations/other_dataframe_libraries) | How to compute the profiling of data stored in libraries other than pandas |
|
|
332
|
+
| [Great Expectations](https://data-profiling.ydata.ai/docs/master/pages/integrations/great_expectations.html) | Generating [Great Expectations](https://greatexpectations.io) expectations suites directly from a profiling report |
|
|
333
|
+
| [Interactive applications](https://docs.profiling.ydata.ai/latest/integrations/interactive_applications) | Embedding profiling reports in [Streamlit](http://streamlit.io), [Dash](http://dash.plotly.com) or [Panel](https://panel.holoviz.org) applications |
|
|
334
|
+
| [Pipelines](https://data-profiling.ydata.ai/docs/master/pages/integrations/pipelines.html) | Integration with DAG workflow execution tools like [Airflow](https://airflow.apache.org) or [Kedro](https://kedro.org) |
|
|
335
|
+
| [Cloud services](https://data-profiling.ydata.ai/docs/master/pages/integrations/cloud_services.html) | Using `data-profiling` in hosted computation services like [Lambda](https://lambdalabs.com), [Google Cloud](https://github.com/GoogleCloudPlatform/analytics-componentized-patterns/blob/master/retail/propensity-model/bqml/bqml_kfp_retail_propensity_to_purchase.ipynb) or [Kaggle](https://www.kaggle.com/code) |
|
|
336
|
+
| [IDEs](https://data-profiling.ydata.ai/docs/master/pages/integrations/ides.html) | Using `data-profiling` directly from integrated development environments such as [PyCharm](https://www.jetbrains.com/pycharm/) |
|
|
337
|
+
|
|
338
|
+
## 🙋 Support
|
|
339
|
+
Need help? Want to share a perspective? Report a bug? Ideas for collaborations? Reach out via the following channels:
|
|
340
|
+
|
|
341
|
+
- [Stack Overflow](https://stackoverflow.com/questions/tagged/pandas-profiling+or+data-profiling): ideal for asking questions on how to use the package
|
|
342
|
+
- [GitHub Issues](https://github.com/ydataai/data-profiling/issues): bugs, proposals for changes, feature requests
|
|
343
|
+
- [Discord](https://tiny.ydata.ai/dcai-data-profiling): ideal for projects discussions, ask questions, collaborations, general chat
|
|
344
|
+
|
|
345
|
+
> **Need Help?**<br>
|
|
346
|
+
> Get your questions answered with a product owner by [booking a Pawsome chat](https://meetings.hubspot.com/fabiana-clemente)! 🐼
|
|
347
|
+
|
|
348
|
+
> ❗ Before reporting an issue on GitHub, check out [Common Issues](https://docs.profiling.ydata.ai/latest/support-contribution/common_issues).
|
|
349
|
+
|
|
350
|
+
## 🤝🏽 Contributing
|
|
351
|
+
Learn how to get involved in the [Contribution Guide](https://data-profiling.ydata.ai/docs/master/pages/support_contrib/contribution_guidelines.html).
|
|
352
|
+
|
|
353
|
+
A low-threshold place to ask questions or start contributing is the [Data Centric AI Community's Discord](https://tiny.ydata.ai/dcai-data-profiling).
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
A big thank you to all our amazing contributors!
|
|
357
|
+
|
|
358
|
+
<a href="https://github.com/ydataai/data-profiling/graphs/contributors">
|
|
359
|
+
<img src="https://contrib.rocks/image?repo=ydataai/data-profiling" />
|
|
360
|
+
</a>
|
|
361
|
+
|
|
362
|
+
Contributors wall made with [contrib.rocks](https://contrib.rocks).
|