Skip to main content

Data Science Utils: Frequently Used Methods for Data Science

License: MIT GitHub release (latest SemVer) GitHub issues Documentation Status PyPI - Python Version PyPI - Wheel PyPI version Anaconda-Server Badge Build Status Coverage Status

Data Science Utils extends the Scikit-Learn API and Matplotlib API to provide simple methods that simplify task and visualization over data.

Code Examples and Documentation

Let's see some code examples and outputs.

You can read the full documentation with all the code examples from: https://datascienceutils.readthedocs.io/en/latest/

In the documentation you can find more methods and more examples.

The API of the package is build to work with Scikit-Learn API and Matplotlib API. Here are some of capabilities of this package:

Metrics

Plot Confusion Matrix

Computes and plot confusion matrix, False Positive Rate, False Negative Rate, Accuracy and F1 score of a classification.

multi label classification confusion matrix

Plot Metric Growth per Labeled Instances

Receives a train and test sets, and plots given metric change in increasing amount of trained instances.

metric growth per labeled instances with n samples

Preprocess

Get Correlated Features

Calculate which features correlated above a threshold and extract a data frame with the correlations and correlation to the target feature.

level_0 level_1 level_0_level_1_corr level_0_target_corr level_1_target_corr
income_category_Low income_category_Medium -0.9999999999999999 -0.1182165609358650 0.11821656093586504
term_ 36 months term_ 60 months -1.0 -0.1182165609358650 0.11821656093586504
interest_payments_High interest_payments_Low -1.0 -0.1182165609358650 0.11821656093586504

Strings

Append Tags to Frame

Extracts tags from a given field and append them as dataframe.

A dataset that looks like this:

x_train:

article_name article_tags
1 ds,ml,dl
2 ds,ml

x_test:

article_name article_tags
3 ds,ml,py

Using this code:

    import pandas

    from ds_utils.strings import append_tags_to_frame


    x_train = pandas.DataFrame([{"article_name": "1", "article_tags": "ds,ml,dl"},
                                {"article_name": "2", "article_tags": "ds,ml"}])
    x_test = pandas.DataFrame([{"article_name": "3", "article_tags": "ds,ml,py"}])

    x_train_with_tags, x_test_with_tags = append_tags_to_frame(x_train, x_test, "article_tags", "tag_")

will be parsed into this:

x_train_with_tags:

article_name tag_ds tag_ml tag_dl
1 1 1 1
2 1 1 0

x_test_with_tags:

article_name tag_ds tag_ml tag_dl
3 1 1 0

Extract Significant Terms from Subset

Returns interesting or unusual occurrences of terms in a subset. Based on the elasticsearch significant_text aggregation.

import pandas

from ds_utils.strings import extract_significant_terms_from_subset

corpus = ['This is the first document.', 'This document is the second document.',
          'And this is the third one.', 'Is this the first document?']
data_frame = pandas.DataFrame(corpus, columns=["content"])
# Let's differentiate between the last two documents from the full corpus
subset_data_frame = data_frame[data_frame.index > 1]
terms = extract_significant_terms_from_subset(data_frame, subset_data_frame, 
                                               "content")

And the following table will be the output for terms:

third one and this the is first document second
1.0 1.0 1.0 0.67 0.67 0.67 0.5 0.25 0.0

Visualization Aids

Visualize Features

Receives a data frame and visualize the features values on graphs.

visualize features

Visualize Correlations

Compute pairwise correlation of columns, excluding NA/null values, and visualize it with heat map. Original code

visualize features

Plot Correlation Dendrogram

Plot dendrogram of a correlation matrix. This consists of a chart that that shows hierarchically the variables that are most correlated by the connecting trees. The closer to the right that the connection is, the more correlated the features are.

plot correlation dendrogram

Plot Features' Relationship

Plots the joint distribution between two features:

  • If both features are either categorical, boolean or object then the method plots the shared histogram.
  • If one feature is either categorical, boolean or object and the other is numeric then the method plots a boxplot chart.
  • If one feature is datetime and the other is numeric or datetime then the method plots a line plot graph.
  • If one feature is datetime and the other is either categorical, boolean or object the method plots a violin plot (combination of boxplot and kernel density estimate).
  • If both features are numeric then the method plots scatter graph.
Numeric Categorical Boolean Datetime
Numeric
Categorical
Boolean
Datetime

##XAI

Draw Tree

Receives a decision tree and return a plot graph of the tree for easy interpretation.

Generate Decision Paths

Receives a decision tree and return the underlying decision-rules (or 'decision paths') as text (valid python syntax). Original code

from sklearn.tree import DecisionTreeClassifier

from ds_utils.xai import generate_decision_paths


# Create decision tree classifier object
clf = DecisionTreeClassifier(max_depth=3)

# Train model
clf.fit(x, y)
print(generate_decision_paths(clf, feature_names, target_names.tolist(), 
                              "iris_tree"))

The following text will be printed:

def iris_tree(petal width (cm), petal length (cm)):
    if petal width (cm) <= 0.8000:
        # return class setosa with probability 0.9804
        return ("setosa", 0.9804)
    else:  # if petal width (cm) > 0.8000
        if petal width (cm) <= 1.7500:
            if petal length (cm) <= 4.9500:
                # return class versicolor with probability 0.9792
                return ("versicolor", 0.9792)
            else:  # if petal length (cm) > 4.9500
                # return class virginica with probability 0.6667
                return ("virginica", 0.6667)
        else:  # if petal width (cm) > 1.7500
            if petal length (cm) <= 4.8500:
                # return class virginica with probability 0.6667
                return ("virginica", 0.6667)
            else:  # if petal length (cm) > 4.8500
                # return class virginica with probability 0.9773
                return ("virginica", 0.9773)

see full example here.

Excited?

Read about all the modules here and see more methods and abilities (such as drawing a decision tree and more):

  • Metrics - The module of metrics contains methods that help to calculate and/or visualize evaluation performance of an algorithm.
  • Preprocess - The module of preprocess contains methods that are processes that could be made to data before training.
  • Strings - The module of strings contains methods that help manipulate and process strings in a dataframe.
  • Visualization Aids - The module of visualization aids contains methods that visualize by drawing or printing ML output.
  • XAI - The module of xai contains methods that help explain a model decisions.

Contributing

Interested in contributing to Data Science Utils? Great! You're welcome, and we would love to have you. We follow the Python Software Foundation Code of Conduct and Matplotlib Usage Guide.

No matter your level of technical skill, you can be helpful. We appreciate bug reports, user testing, feature requests, bug fixes, product enhancements, and documentation improvements.

Thank you for your contributions!

Find a Bug?

Check if there's already an open issue on the topic. If needed, file an issue.

Open Source

Data Science Utils license is MIT License.

Installing Data Science Utils

Data Science Utils is compatible with Python 3.6 or later. The simplest way to install Data Science Utils and its dependencies is from PyPI with pip, Python's preferred package installer:

pip install data-science-utils

Note that this package is an active project and routinely publishes new releases with more methods. In order to upgrade Data Science Utils to the latest version, use pip as follows:

pip install -U data-science-utils

Alternatively you can install from source by cloning the repo and running:

git clone https://github.com/idanmoradarthas/DataScienceUtils.git
cd DataScienceUtils
python setup.py install

Or install using pip from source:

pip install git+https://github.com/idanmoradarthas/DataScienceUtils.git

If you're using Anaconda, you can install using conda:

conda install -c idanmorad data-science-utils

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

data_science_utils-1.6.1.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

data_science_utils-1.6.1-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file data_science_utils-1.6.1.tar.gz.

File metadata

  • Download URL: data_science_utils-1.6.1.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.0.post20200616 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7

File hashes

Hashes for data_science_utils-1.6.1.tar.gz
Algorithm Hash digest
SHA256 00618e782389dbe9274b3a0a595c9275c59c200af97c99cd93f62ad5ba40b0a0
MD5 5bfbad4e72782491e2f0b05c2e8cc6f4
BLAKE2b-256 1cce530c83ad4f2c6c4282369d4e7469d6b299befcf3e935e4179461e8b7bdce

See more details on using hashes here.

File details

Details for the file data_science_utils-1.6.1-py3-none-any.whl.

File metadata

  • Download URL: data_science_utils-1.6.1-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.0.post20200616 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7

File hashes

Hashes for data_science_utils-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 63ff680003f91832a279b3183d17516c2adc5da9a48df684747a75cabb541ccf
MD5 25f68b0705556dae62ce66e04a8982fc
BLAKE2b-256 a69dee0db996eb582bbb17fe1a2cc257ce6fa52944fa50cf6f531028169ec00f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page