{"id":35849401,"url":"https://github.com/eta444/datasafari","last_synced_at":"2026-01-08T07:00:37.986Z","repository":{"id":222640841,"uuid":"757969821","full_name":"ETA444/datasafari","owner":"ETA444","description":"DataSafari simplifies complex data science tasks into straightforward, powerful one-liners.","archived":false,"fork":false,"pushed_at":"2024-07-12T20:07:18.000Z","size":74086,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-09T15:45:52.901Z","etag":null,"topics":["data-cleaning","data-science","machine-learning","open-source","pypi","statistical-analysis"],"latest_commit_sha":null,"homepage":"https://datasafari.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ETA444.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-15T11:10:58.000Z","updated_at":"2024-07-13T15:19:08.000Z","dependencies_parsed_at":"2024-02-15T12:29:48.093Z","dependency_job_id":"1c5a3a21-5d12-41d5-8a16-366d2e3cc2e4","html_url":"https://github.com/ETA444/datasafari","commit_stats":null,"previous_names":["eta444/datasafari"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ETA444/datasafari","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETA444%2Fdatasafari","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETA444%2Fdatasafari/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETA444%2Fdatasafari/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETA444%2Fdatasafari/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ETA444","download_url":"https://codeload.github.com/ETA444/datasafari/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETA444%2Fdatasafari/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28242440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-08T02:00:06.591Z","response_time":241,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-cleaning","data-science","machine-learning","open-source","pypi","statistical-analysis"],"created_at":"2026-01-08T07:00:15.686Z","updated_at":"2026-01-08T07:00:37.980Z","avatar_url":"https://github.com/ETA444.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![DataSafari Banner](https://www.datasafari.dev/docs/_static/thumbs/ds-branding-thumb-main-web.png)\n# Welcome to DataSafari!\n\nDataSafari simplifies complex data science tasks into straightforward, powerful one-liners. Whether you're exploring data, evaluating statistical assumptions, transforming datasets, or building predictive models, DataSafari provides all the tools you need in one package.\n\n\u003e In this README you can find a brief overview of how to start using DataSafari and what features you can utilize. For a more complete presentation you can visit [DataSafari's docs](https://www.datasafari.dev/docs).\n\n## Quick Start\n\n### Installation\n\nTo get started with DataSafari, install it using pip:\n\n```console\npip install datasafari\n```\n\nOr, if you prefer using Poetry:\n\n```console\npoetry add datasafari\n```\n\n### Importing\n\nImport DataSafari in your Python script to begin:\n\n```python\nimport datasafari as ds\n```\n\nFor detailed installation options, including installing from source, check our [Installation Guide in the docs](https://www.datasafari.dev/docs/other/installation).\n\n## DataSafari at a Glance\n\nDataSafari is organized into several subpackages, each tailored to specific data science tasks.\n\n\u003e *The logic behind the naming of each subpackage is inspired by the typical data workflow: exploring and understanding your data, transforming and cleaning it, evaluating assumptions and finally making predictions.* - George\n\n### Explorers\n\n**Explore and understand your data in depth and quicker than ever before.**\n\n| Module         | Description                                                                                                                                                                       |\n|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `explore_df()` | Explore a DataFrame and gain a birds-eye view of summary statistics, NAs, data types and more.                                                                                    |\n| `explore_num()`| Explore numerical variables in a DataFrame and gain insights on distribution characteristics, outlier detection using multiple methods (Z-score, IQR, Mahalanobis), normality tests, skewness, kurtosis, correlation analysis, and multicollinearity detection. |\n| `explore_cat()`| Explore categorical variables within a DataFrame and gain insights on unique values, counts and percentages, and the entropy of variables to quantify data diversity.              |\n\n### Transformers\n\n**Clean, encode and enhance your data to prepare it for further analysis.**\n\n| Module          | Description                                                                                                                                                               |\n|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `transform_num()`| Transform numerical variables in a DataFrame through operations like standardization, log-transformation, various scalings, winsorization, and interaction term creation. |\n| `transform_cat()`| Transforms categorical variables in a DataFrame through a range of encoding options and basic to advanced machine learning-based methods for uniform data cleaning.       |\n\n### Evaluators\n\n**Ensure your data meets the required assumptions for analyses.**\n\n| Module                         | Description                                                                                                                                                                              |\n|--------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `evaluate_normality()`         | Evaluate normality of numerical data within groups defined by a categorical variable, employing multiple statistical tests, dynamically chosen based on data suitability.                |\n| `evaluate_variance()`          | Evaluate variance homogeneity across groups defined by a categorical variable within a dataset, using several statistical tests, dynamically chosen based on data suitability.           |\n| `evaluate_dtype()`             | Evaluate and automatically categorize the data types of DataFrame columns, effectively distinguishing between ambiguous cases based on detailed logical assessments.                    |\n| `evaluate_contingency_table()` | Evaluate the suitability of statistical tests for a given contingency table by analyzing its characteristics and guiding the selection of appropriate tests.                             |\n\n### Predictors\n\n**Streamline model building and hypothesis testing.**\n\n| Module                | Description                                                                                                                                                                           |\n|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `predict_hypothesis()`| Conduct the optimal hypothesis test on a DataFrame, tailoring the approach based on the variable types and automating the testing prerequisites and analyses, outputting test results and interpretation. |\n| `predict_ml()`        | Streamline the entire process of data preprocessing, model selection, and tuning, delivering optimal model recommendations based t on the data provided.                             |\n\n\n## DataSafari in Action\n\n### Hypothesis Testing? One line.\n\n```python\nfrom datasafari.predictor import predict_hypothesis\nimport pandas as pd\nimport numpy as np\n\n# Sample DataFrame\ndf_hypothesis = pd.DataFrame({\n    'Group': np.random.choice(['Control', 'Treatment'], size=100),\n    'Score': np.random.normal(0, 1, 100)\n})\n\n# Perform hypothesis testing\nresults = predict_hypothesis(df_hypothesis, 'Group', 'Score')\n```\n\n**How DataSafari Streamlines Hypothesis Testing:**\n\n- **Automatic Test Selection**: Depending on the data types, ``predict_hypothesis()`` automatically selects the appropriate test. It uses Chi-square, Fisher's exact test or other exact tests for categorical pairs, and T-tests, ANOVA and others for categorical and numerical combinations, adapting based on group counts, sample size and data distribution.\n\n- **Assumption Verification**: Essential assumptions for the chosen tests are automatically checked.\n    - **Normality**: Normality is verified using tests like Shapiro-Wilk or Anderson-Darling, essential for parametric tests.\n    - **Variance Homogeneity**: Tests such as Levene’s or Bartlett’s are used to confirm equal variances, informing the choice between ANOVA types.\n\n- **Comprehensive Output**:\n    - **Justifications**: Provides comprehensive reasoning on all test choices.\n    - **Test Statistics**: Key quantitative results from the hypothesis test.\n    - **P-values**: Indicators of the statistical significance of the findings.\n    - **Conclusions**: Clear textual interpretations of whether the results support or reject the hypothesis.\n\n### Machine Learning? You guessed it.\n\n```python\nfrom datasafari.predictor import predict_ml\nimport pandas as pd\nimport numpy as np\n\n# Another sample DataFrame for ML\ndf_ml = pd.DataFrame({\n    'Age': np.random.randint(20, 60, size=100),\n    'Salary': np.random.normal(50000, 15000, size=100),\n    'Experience': np.random.randint(1, 20, size=100)\n})\n\nx_cols = ['Age', 'Experience']\ny_col = 'Salary'\n\n# Discover the best models for your data\nbest_models = predict_ml(df_ml, x_cols, y_col)\n```\n\n**How DataSafari Simplifies Machine Learning Model Selection:**\n\n- **Tailored Data Preprocessing**: The function automatically processes various types of data (numerical, categorical, text, datetime), preparing them optimally for machine learning.\n    - Numerical data might be scaled or normalized.\n    - Categorical data can be encoded.\n    - Text data might be vectorized using techniques suitable for the analysis.\n\n- **Intelligent Model Evaluation:** The function evaluates a variety of models using a composite score that synthesizes performance across multiple metrics, taking into account the multidimensional aspects of model performance.\n    - **Composite Score Calculation**: Scores for each metric are weighted according to specified priorities by the user, with lower weights assigned to non-priority metrics (e.g. RMSE over MAE). This composite score serves as a holistic measure of model performance, ensuring that the models recommended are not just good in one aspect but are robust across multiple criteria.\n\n- **Automated Hyperparameter Tuning:** Once the top models are identified based on the composite score, the pipeline employs techniques like grid search, random search, or Bayesian optimization to fine-tune the models.\n    - **Output of Tuned Models**: The best configurations for the models are output, along with their performance metrics, allowing users to make informed decisions about which models to deploy based on robust, empirically derived data.\n\n- **Customization Options \u0026 Sensible Defaults:** Users can define custom hyperparameter grids, select specific tuning algorithms, prioritize models, tailor data preprocessing, and prioritize metrics.\n    - **Accessibility**: Every part of the process is in the hands of the user, but sensible defaults are provided for ultimate simplicity of use, which is the approach for ``datasafari`` in general.\n\n----\n## License\n\nDataSafari is licensed under the GNU General Public License v3.0. This ensures that all modifications and derivatives of this project remain open-source and freely available under the same terms.\n\n\n## Contact\n\nConnect with me on [LinkedIn](https://www.linkedin.com/in/georgedreemer) or visit my [website](https://www.georgedreemer.com).\n\n\u003e Thank you very much for taking an interest in DataSafari! 💚 - George\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feta444%2Fdatasafari","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feta444%2Fdatasafari","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feta444%2Fdatasafari/lists"}