Business Analytics with Python Cheat Sheet

We created this Business Analytics Cheat Sheet initially for students of our Business Data Analytics with Python Bootcamp. But we're now sharing it with any and all Data Analysts, Data Scientists, and Developers that want to learn and remember some of the key definitions, functions, and concepts of Business Data Analytics and Python, and have a quick reference guide to the fundamentals.

Want to download a PDF version of this Business Analytics Cheat Sheet?

Enter your email below and we'll send it to you 👇

Unsubscribe anytime.

If you’ve stumbled across this cheatsheet and are just starting to learn Business Analytics, you've made a great choice! The world of data analytics is growing and the insights that can be gained are what drive businesses forward. This has made it an extremely in-demand field and is great to learn if you're interested in becoming a Data Scientist or Python Developer.

However, if you're stuck in an endless cycle of YouTube tutorials and want to start building real world projects, become a professional data scientist, data analyst, or developer, have fun, and actually get hired, then come join the Zero To Mastery Academy. You'll learn Python for Business Data Analytics from actual industry professionals alongside thousands of students in our private Discord community.

You'll not only learn to become a top 10% Business Analyst by learning advanced topics most courses don't cover. But you'll also get hands-on learning by completing exercises and fun challenges using real-world data about Moneyball, wine quality, Wikipedia searches, employee remote work satisfaction, and more!

Just want the cheatsheet? No problem! Please enjoy and if you'd like to submit any suggestions, feel free to email us at

Statistics & Regression



The science of gathering, collecting, manipulating, analzying, interpreting and visualizing data.

Descriptive Analytics

Interpretation and visualization of data to determine trends and relationships.


The mean is the sum of all values divided by the number of occurrences; is the expected value we should get by picking randomly out of the sample. It should be used for continuous and symmetrical distributions.


The most frequent number or element in an ordered set. Should be used for qualitative-nominal variables.


The 50th percentile or center of an ordered set. Robust to outliers. Should be used for asymmetrical and skewed distributions.


Measures the strength of a relationship between 2 variables. The value varies between 1 and -1, with 1 being a strong positive correlation, -1 a strong negative correlation, and 0 no relationship.

Standard Deviation

Measures how dispersed is a data set. It should be asses conjointly with the mean. Rule of thumb: if the Standard Deviation is bigger than the mean, the data is dispersed.

Normal Distribution

Symmetric shape with the mean in the middle. The data is mainly around the mean values, meaning that it is not very dispersed, and its shape is similar to a bell. The Normal Distribution also brought the 68, 95, and 99 rule, representing the share of observations within one, two, and three standard deviations. Within 1 standard deviation, there are 68% of the observations. Within 2 Standard Deviations, there are 95% of the observations. Finally, within 3 Standard Deviations, there is 99.7%.


A p-value varies between 0 and 1, and is thus a probability. The formal definition is the probability of obtaining results at least as extreme as the observed results of a statistical hypothesis test, assuming the null hypothesis is correct.

Null Hypothesis (H0)

The hypothesis being tested for statistical significance.

Alternative Hypothesis (H1)

The statement being tested against the null hypothesis for statistical significance.

Shapiro-Wilk Test

A statistical test for normal distributions. The null hypothesis is that the distribution is Normal. Hence, if the p-value is above 0.05, we do not reject the null hypothesis

Standard Error of the Mean

Estimates how far the sample mean is likely to be from the population mean. Different from Standard Deviation. Whereas the standard deviation measures how much the observations differ from the mean, the standard error compares the sample’s mean versus the population’s mean.

Z Score

A standardization score, also known as the z-score.Provides an idea of how far away is a data point from its mean. Another way to look at it is that the z-score compares the observation values to a normal distribution.

Confidence Interval

How much the parameter or coefficient can vary around its mean for a certain confidence level (80%, 90%, 95%, etc…). From a methodological perspective, the Confidence Interval is a combination of the mean, the z score or confidence level, and the standard error of the mean.


Ttest any statistical hypothesis that the test statistic follows a Student’s t-distribution under the null hypothesis. There are two essential things we need to understand—first, the null hypothesis. We need to have one. The second part to digest is “test statistic follows Student’s t-distribution.” Simply, the variables are continuous.

Chi-square test

Determines whether there is a statistically significant difference between the expected frequencies and the observed frequencies of categorical variables. Tests whether there is a relationship among 2 categorical variables.

Linear Regression

The study of the relationship between one output or independent variable (continuous) and at least one independent variable.

R squared

Measures how much variability the model explains. For when you have only one Independent Variable

Adjusted R squared

Measures how much variability the model explains. For when you have more than one Independent Variable.

Dummy Variable

Type of variable that has binary possibilities (0 or 1)

Dummy Variable Trap

When you have perfect multicollinearity between your dummy variables. You should always omit one dummy variable to prevent it.

Multilinear Regression

A Regression model with more than 1 Independent Variable


Extreme, isolated and uncommon values in a sample. Can potentially hurt your analysis.

Underfitting model

When a model cannot explain any instance

Overfitting model

When a model explains every instance, resulting in not working in unseen data

Training set

A random majority sample of the data used to train the model.

Test set

A random minority sample, or what is not used for the training data, to test the model.


The degree to which the model is correct on average

Mean Absolute Error (MAE)

KPI to measure the accuracy. Measure the absolute error between the prediction and actual value. Interpretable

Root Squared Mean Error (RSME)

KPI the to measure the accuracy. Not interpretable. Penalizes errors in extreme values.

Logistic Regression

The study of the relationship between one output or independent variable (Binary) and at least one independent variable.

Confusion Matrix

Cross Table that summaries the accuracy of Classification Models like the logistic Regression. Has four possibilities: True Negatives, True Positives

True Negative

When the model predicted a false or zero value and was correct.

True Positive

When the model predicted a true or one value that was correct.

False Negative

When the model predicted a False value that was in fact, true.

False Positive

When the model predicted a True Value when the actual value is False.

F1 Score

Accuracy measure for unbalanced classification data sets - when the frequency of either of the dependent variables possibilities (0 or 1) is less than 30%, which makes the other possibility more than 70%.

Key Libraries for Statistics and Descriptive Analytics in Python

import pandas as pd
import seaborn as sns
import scipy.stats as st
import math as m
import statsmodels.stats.api as sm

Import a Data Set

df = pd.read_csv("filename.csv")

Compute Mean, Mode and Median

numbers = pd.Series([10, 8, 9, 1, 8, 0, 100])
numbers.mean() # 19.4
numbers.mode() # 9.0
numbers.median() #8.0

Correlation Matrix

#Step 1: Having 2 series or more
numbers1 = pd.Series([10, 8, 9, 1, 8, 0, 100])
numbers2 = pd.Series([7, 4, 0, 15, 6, 88, 120])

#Combining the 2 series
df = pd.concat([numbers1, numbers2], axis = 1)

#Correlation matrix function

Standard Deviation

numbers = pd.Series([10, 8, 9, 1, 8, 0, 100])
numbers.std() # 35.8

Shapiro-Wilk Test to test for Normal Test Distribution

numbers = pd.Series([10, 8, 9, 1, 8, 0, 100])
stat, p = st.shapiro(numbers.dropna())
if p > 0.05:
	print('Sample looks Gaussian/Normal (fail to reject H0)')
	print('Sample does not look Gaussian/Normal (reject H0)')

Standard Error of the Mean

numbers = pd.Series([10, 8, 9, 1, 8, 0, 100])

Confidence Interval of the Mean

numbers = pd.Series([10, 8, 9, 1, 8, 0, 100])
st.norm.interval(0.95, loc = numbers.mean(), scale = st.sem(numbers))


Step 1: Having 2 series

numbers1 = pd.Series([10, 8, 9, 1, 8, 0, 100])
numbers2 = pd.Series([7, 4, 0, 15, 6, 88, 120])

T-test calculation

stat, p = st.ttest_ind(numbers1, numbers2)
if p > 0.05:
	print('Both countries have similar salaries (fail to reject H0)')
	print('There is a difference in salaries (reject H0)')

Chi-Square Test

Step 1: Having 2 discrete series

numbers1 = pd.Series([0,1,0,1,1,1,0,0,1,0,0])
numbers2 = pd.Series([0,1,0,1,1,10,1,1,10,1])

First we create a cross tab

tab = pd.crosstab(index = numbers1,
            columns = numbers2)

Then execute the statistical test

chi2, p, dof, ex = st.chi2_contingency(tab, correction=False)
if p > 0.05:
	print('There is no relationship (fail to reject H0)')
	print('There is strong relationship (reject H0)')

Linear Regression

Step 1: Having 2 series, with ideally more than 30 elements each

numbers1 = pd.Series([10, 8, 9, 1, 8, 0, 100])
numbers2 = pd.Series([7, 4, 0, 15, 6, 88, 120])

Define dependent variable (y) and independent variable (X). The y must be continuous

y = numbers1
X = numbers2

Adding constant

X = sm.add_constant(X)

Regression model

model1 = sm.OLS(endog = y, exog = X).fit()

Logistic Regression

Step 1: Having 2 series, with ideally more than 30 elements each

numbers1 = pd.Series([0,1,0,1,1,1,0,0,1,0,0])
numbers2 = pd.Series([7, 4, 0, 15, 6, 88, 120, 8, 9, 44, 23])

Define dependent variable (y) and independent variable (X). The y must be binary

y = numbers1
X = numbers2

Adding constant

X = sm.add_constant(X)

Training and test set

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size = 0.2,
                                                    random_state = 1502)

Logistic Regression

model = sm.Logit(y_train, X_train).fit()

How to Read Logistic Regression Coefficients

def logistic_reader(coefficient):
  probability = round((np.exp(coefficient) - 1) * 100, 2)
  if probability > 0:
    print("The likelihood increases by", probability, "%")
  elif probability == 0:
    print("No impact")
    print("The likelihood decreases by", probability, "%")

Apply the function


Assessing Logistic Regressions


predictions = model.predict(X_test)
predictions = np.where(predictions > 0.5, 1, 0)

Classification report

from sklearn.metrics import classification_report
print(classification_report(y_test, predictions))

Multi-Linear Regression

Step 1: Having 3 series, with ideally more than 30 elements each

numbers1 = pd.Series([10, 8, 9, 1, 8, 0, 100])
numbers2 = pd.Series([7, 4, 0, 15, 6, 88, 120])
numbers3 = pd.Series([4, 6, 1, 8, 3, 6, 2])

Define dependent variable (y) and independent variable (X). The y must be continuous and you must have more than one independent variable

y = numbers1
X = pd.concat[(numbers2, numbers3], axis = 1)

Adding constant

X = sm.add_constant(X)

Training and Test Set

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size = 0.2,
                                                    random_state = 1502)

Multilinear regression

model = sm.OLS(y_train, X_train).fit()

Accuracy Assessment for Regression Problems


predictions = model.predict(X_test)

Accuracy assessment

from sklearn.metrics import mean_absolute_error, mean_squared_error
print("MAE:", mean_absolute_error(y_test, predictions))
print("RMSE:", np.sqrt(mean_squared_error(y_test, predictions)))

Econometrics & Causal Inference



The application of statistical methods to economic problems to derive relationships and outcomes.

Causal Inference

Study of causal relationships rather than just statistical ones.

Time Series Data

Data that happens consecutively through time in equally distanced time periods, i.e., every day, week, weekday, month, quarter, year.


A causal inference approach that aims to mimic an experimental research design approach through the usage of at least one similar enough control group, thus minimizing omitted variable bias.

Experimental Research Design

Also called A/B test. It is a blind experiment where Groups A and B are randomly selected. One of the groups gets the treatment, and the other does not (or gets a placebo)

Omitted variable bias

When a model leaves out relevant variables (information).

Parallel Trends assumption

Assumption needed to use difference-in-differences. It means that both the treatment and control groups would have developed similarly, if not for the treatment.

Confounding Policy Change assumption

Assumption needed to use difference-in-differences. It means that there is one treatment (policy) applied and there is no other relevant change to any of the groups.

Google Causal Impact

A framework developed by Google applied to Difference-in-differences. It uses a space-state approach (information that varies in time and space) to improve causal inference. Additionally, it uses Bayesian inference for the causal simulations.


A quasi-experimental approach for when you don’t have a comparable control group (difference-in-differences is not possible). It finds observations/entities similar to the treatment group in the control group, leaving out the non-similar ones.


Assumption needed to employ Matching. The variables used to perform matching have to be enough to fully describe the propensity to treatment by the individuals or entities.

Curse of dimensionality

Issues that arise when you have multiple variables, particularly binary, thus creating a problem high in dimensions. As a result, you can have dimensions that have low amount of observations and thus may not be representative of the dimension.

Common Support Region

Requirement for Matching. Matching can only be performed with similar observations. Thus, individuals in the treatment group that do not have commonalities with individuals of the control group must be left out.

Import Libraries

import pandas as pd
from causalimpact import CausalImpact

Data Retrieval

data = pd.read_csv('')[['y', 'X']]
data.iloc[70:, 0] += 5

Pre and Post Period

pre_period = [0, 69]
post_period = [70, 99]

Causal Impact

ci = CausalImpact(data, pre_period, post_period)


from causalinference import CausalModel

Isolate y, Treatment and Confounders

treat = df.treat.values
y = df.y
confounders = df.drop(columns = ["treat", "y"]).values

Matching Model

model = CausalModel(y, treat, confounders)




Process of splitting the target (market, customer) into groups of similar characteristics or actions.

Value-based segmentation

Process of segmenting customers into groups based on much value (revenue or profit) they bring to the company.


Segmentation approach where you segment customers based on their recency, frequency, and monetary KPIs. Recency is the time since the last purchase, Frequency is the number of orders in a given timeframe, and Monetary is the average basket the customer has.


Unsupervised Learning concept. Process of dividing observation into groups of similar characteristics indicated by the model.

Unsupervised Learning

Machine Learning field for problems without a dependent variable. Opposite to Supervised Learning, where you have target/output/dependent variable.

Gaussian Mixture Model

Algorithm for Clustering which applies a probabilistic approach to the observations.

Akaike’s Information Criterion (AIC) and Bayesian Information Criterion (BIC)

Frameworks to pick the best model comprising of 2 criteria: simplicity and goodness of fit. The lower the value the better. The BIC penalizes more complex models.

RFM Python

Create Frequency Groups

df['F'] = pd.qcut(x = df['Frequency'], q = 4, labels = range(1, 5, 1))
df['M'] = pd.qcut(x = df['monetary'], q = 4, labels = range(1, 5, 1))
df['R'] = pd.qcut(x = df['Recency'], q = 4, labels = range(4, 0, -1))

RFM Score

df['RFM'] = df[['R', 'F', 'M']].sum(axis = 1)

Create the RFM function

def rfm_segment(df):
  if df['RFM'] >= 11:
    return 'SuperStar'
  elif ((df['RFM'] >=8) and (df['RFM'] < 11)):
    return 'Future Champion'
  elif ((df['RFM'] >=6) and (df['RFM'] < 8)):
    return 'High Potential'
    return 'Low Relevance'

Apply RFM function

df['RFM_level'] = df.apply(rfm_segment, axis = 1)

Looking into the segments

    'Recency': 'mean',
    'Frequency': 'mean',
    'monetary': ['mean', 'count']

Gaussian Mixture Model Python

Import libraries

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture

Finding optimal number of clusters

n_components = np.arange(1,10)

Create GMM model

models = [GaussianMixture(n_components= n,
                          random_state = 1502).fit(df) for n in n_components]


         [m.bic(df) for m in models],
         label = 'BIC')
         [m.aic(df) for m in models],
         label = 'AIC')
plt.xlabel('Number of Components')

Predictive Analytics


Predictive Analytics

Processes of using data, statistics, machine learning, or any analytical framework to predict the future or outcomes.

Ensemble Learning

A framework where you use several Machine Learning or Analytical models for prediction. Minimizes the likelihood of a general bad outcome or high errors.

Random Forest

An ensemble Algorithm that combines multiple decision trees. It uses bagging and feature randomness for each Decision Tree. This means that each decision tree only uses a selection of the observation and the independent variables for its model.


A process where you sample observations for the model. It provides stability, reduces noise and improves accuracy.

Decision Tree

A model that predicts based on decision rules (splits) inferred from the data. It is a map of possible outcomes.

Parameter Tuning

A process to find the best parameters for a given problem. It is the attempt of all combinations of parameters to be tuned to find the combination with the lowest error or maximum accuracy.

Structural Time Series

A framework where a time series is decomposed into at least 3 components: Trend, Seasonality, and External Regressors. Facebook Prophet also decomposes into Holiday effects.

Facebook Prophet

A Forecasting Model developed by Facebook, using a Structural Time Series approach.


A parameter that dictates how much the Holidays affect the seasonality curve.


Strength of the seasonal cycles.


A parameter that states how easily the trend curve should change.

Additive seasonality

Type of seasonality in which the height of the fluctuation is the same no matter the trend.

Multiplicative seasonality

Type of seasonality in which the seasonal fluctuations are proportional to the trend.


A process where the data is split into training and test set several times. Allows for model assessment in different circumstances. Usually combined with Parameter Tuning.

Random Forest in Python

Training and Test Split

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size = 0.2,
                                                    random_state = 1502,
                                                    stratify = y)

Random Forest Model

from sklearn.ensemble import RandomForestClassifier
#from sklearn.ensemble import RandomForestRegressor
model = RandomForestClassifier(n_estimators = 300,
                               random_state = 1502), y_train)

Facebook Prophet in Python

Facebook Prophet Model

m = Prophet(growth= 'linear',
            yearly_seasonality = True,
            weekly_seasonality = True,
            daily_seasonality = False,
            holidays = holidays,
            seasonality_mode = "multiplicative",
            seasonality_prior_scale = 10,
            holidays_prior_scale = 10,
            changepoint_prior_scale = 0.05)

Create future dataframe

future = m.make_future_dataframe(periods = test_days,
                                 freq = 'D')


forecast = m.predict(future)



Back To Top