# About the Book

Are you looking to start developing artificial intelligence applications? Do you need a refresher on key mathematical concepts? Full of engaging practical exercises, *The Statistics and Calculus with Python Workshop* will show you how to apply your understanding of advanced mathematics in the context of Python.

The book begins by giving you a high-level overview of the libraries you'll use while performing statistics with Python. As you progress, you'll perform various mathematical tasks using the Python programming language, such as solving algebraic functions with Python starting with basic functions, and then working through transformations and solving equations. Later chapters in the book will cover statistics and calculus concepts and how to use them to solve problems and gain useful insights. Finally, you'll study differential equations with an emphasis on numerical methods and learn about algorithms that directly calculate values of functions.

By the end of this book, you'll have learned how to apply essential statistics and calculus concepts to develop robust Python applications that solve business challenges.

## Audience

If you are a Python programmer who wants to develop intelligent solutions that solve challenging business problems, then this book is for you. To better grasp the concepts explained in this book, you must have a thorough understanding of advanced mathematical concepts, such as Markov chains, Euler's formula, and Runge-Kutta methods as the book only explains how these techniques and concepts can be implemented in Python.

## About the Chapters

*Chapter 1*, *Fundamentals of Python*, introduces you to the Python language. You will learn how to use Python's most integral data structures and control flows, as well as picking up best practices for programming-specific tasks such as debugging, testing, and version control.

*Chapter 2*, *Python's Main Tools for Statistics*, introduces the ecosystem of scientific computing and visualization in Python. These discussions will revolve around the specific Python libraries that facilitate these tasks, such as NumPy, pandas, and Matplotlib. Hands-on exercises will help you practice their usage.

*Chapter 3*, *Python's Statistical Toolbox*, describes the theoretical basics of statistical analysis. You will learn about the fundamental components in the field of statistics, namely the various types of statistics and statistical variables. This chapter also includes a brief overview of a wide range of different Python libraries and tools that can help to facilitate specialized tasks, such as SymPy, PyMC3, and Bokeh.

*Chapter 4*, *Functions and Algebra with Python*, discusses the theoretical foundation of mathematical functions and algebraic equations. These discussions are also accompanied by interactive exercises that present corresponding tools in Python that can streamline and/or automate various procedures, such as drawing function graphs and solving equations and systems of equations.

*Chapter 5*, *More Mathematics with Python*, teaches you the basics of sequences, series, trigonometry, and complex numbers. While these can prove to be challenging theoretical topics, we will consider them from a different practical perspective, specifically via practical applications such as financial analysis and 401(k)/retirement calculations.

*Chapter 6*, *Matrices and Markov Chains with Python*, introduces you to the concepts of matrices and Markov chains. These are mathematical objects commonly used in some of the most popular applications of mathematics, such as artificial intelligence and machine learning. The chapter is coupled with the hands-on activity of developing a word predictor.

*Chapter 7*, *Doing Basic Statistics with Python*, marks the start of the portion of this book where we specifically focus on statistics and statistical analysis. This chapter introduces the process of exploratory data analysis and, in general, using simple statistical techniques to interpret a dataset.

*Chapter 8*, *Foundational Probability Concepts and Their Applications*, dives deeper into complex statistical concepts, such as randomness, random variables, and using simulations as a technique to analyze randomness. This chapter will help you become more comfortable working with statistical problems that involve randomness.

*Chapter 9*, *Intermediate Statistics with Python*, wraps up the topic of statistics by iterating over the most important theories in the field, such as the law of large numbers and central limit theorem, as well as commonly used techniques, including confidence intervals, hypothesis testing, and linear regression. With the knowledge you'll gain in this chapter, you will be ready to tackle many real-life statistical problems using Python.

*Chapter 10*, *Foundational Calculus with Python*, begins the topic of calculus by discussing more involved concepts, such as the slope of a function, the area under a curve, optimization, and solids of revolution. Typically considered as complicated problems in mathematics, these concepts are explained in an intuitive and hands-on manner with the help of Python.

*Chapter 11*, *More Calculus with Python*, tackles more complex topics in calculus, namely, the calculation of arc lengths and surface areas, partial derivatives, and series expansions. Once again, we will be able to see the power of Python in helping us approach these advanced topics, which normally can be quite challenging for many students.

*Chapter 12*, *Intermediate Calculus with Python*, concludes the book with some of the most interesting topics in calculus, such as differential equations, the Euler method, and the Runge-Kutta method. These methods present an algorithmic approach to solving differential equations, which is particularly applicable in Python as a computational tool.

## Conventions

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows:

"To do this, we can use the `with`

keyword together with the `open()`

function to interact with the text file."

A block of code is set as follows:

if x % 6 == 0: print('x is divisible by 6')

In some cases, a line of code is immediately followed by its output. These cases are presented as follows:

>>> find_sum([1, 2, 3]) 6

In this example, the executed code is the line which begins with `>>>`

, and the output is the second line (`6`

).

In other cases, the output is shown separately from the code block, for ease of reading.

Words that you see on the screen, for example, in menus or dialog boxes, also appear in the text like this: "When you click on the `Fetch Images`

button, the images appear with authors' names."

New terms and important words are shown like this: "Write the returned list to the same input file in a new line in the same **comma-separated values** (**CSV**) format".

## Code Presentation

Lines of code that span multiple lines are split using a backslash ( `\`

). When the code is executed, Python will ignore the backslash, and treat the code on the next line as a direct continuation of the current line.

For example:

history = model.fit(X, y, epochs=100, batch_size=5, verbose=1, \ validation_split=0.2, shuffle=False)

Comments are added into code to help explain specific bits of logic. Single-line comments are denoted using the `#`

symbol, as follows:

# Print the sizes of the dataset print("Number of Examples in the Dataset = ", X.shape[0]) print("Number of Features for each example = ", X.shape[1])

Multi-line comments are enclosed by triple quotes, as shown below:

""" Define a seed for the random number generator to ensure the result will be reproducible """ seed = 1 np.random.seed(seed) random.set_seed(seed)

## Setting up Your Environment

Before we explore the book in detail, we need to set up specific software and tools. In the following section, we shall see how to do that.

## Software Requirements

You'll also need the following software installed in advance:

- OS: Windows 7 SP1 64-bit, Windows 8.1 64-bit or Windows 10 64-bit, macOS, or Linux
- Browser: Latest version of Google Chrome, Firefox, or Microsoft Edge
- Python 3.7
- Jupyter Notebook

## Installation and Setup

Before you start this book, you will need to install Python (3.7 or above) and Jupyter, which are the main tools that we will be using throughout the chapters.

## Installing Python

The best method to install Python is via the environment manager Anaconda, which can be downloaded from https://docs.anaconda.com/anaconda/install/. Once Anaconda has been successfully installed, you can follow the instructions at https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html to create a virtual environment for this project within which Python can be run.

Unlike other methods of installing Python, Anaconda offers an easy-to-navigate interface that also takes care of most low-level processes when Python and its libraries are to be installed.

Following the instructions above, you can create a new environment named `workshop`

using the command `conda create -n workshop python=3.7`

. To activate the new environment, run `conda activate workshop`

. For the next steps, you will need to activate this environment every time you need to test the code.

In this workshop, every time a new library is used that has not already been installed, that library can be installed using the `pip install [library_name]`

or `conda install [library_name]`

commands.

## Project Jupyter

Project Jupyter is open source, free software that gives you the ability to run code written in Python and some other languages interactively from a special notebook, similar to a browser interface. It was born in 2014 from the **IPython** project and has since become the default choice for the entire data science workforce.

To install the Jupyter Notebook inside the `workshop`

environment, just run `conda install -c conda-forge notebook`

. For more information about Jupyter installation, go here: https://jupyter.org/install.

At https://jupyterlab.readthedocs.io/en/stable/getting_started/starting.html, you will find all the details you need to know how to start the Jupyter Notebook server. In this book, we use the classic notebook interface.

Usually, we start a notebook from the Anaconda Prompt with the `jupyter notebook`

command.

Start the notebook from the directory where you choose to download the code files to in the following *Installing the Code Bundle* section.

For example, if you have installed the files in the macOS directory `/Users/YourUserName/Documents/`

`The-Statistics-and-Calculus-with-Python-Workshop`

, then in the CLI you can type `cd /Users/YourUserName/Documents/The-Statistics-and-Calculus-with-Python-Workshop`

and run the `jupyter notebook`

command. The Jupyter server will start and you will see the Jupyter browser console:

Once you are running the Jupyter server, click on `New`

and choose `Python 3`

. A new browser tab will open with a new and empty notebook. Rename the Jupyter file:

The main building blocks of Jupyter notebooks are cells. There are two types of cells: `In`

(short for input) and `Out`

(short for output). You can write code, normal text, and Markdown in `In`

cells, press *Shift* + *Enter* (or *Shift* + *Return*), and the code written in that particular `In`

cell will be executed. The result will be shown in an `Out`

cell, and you will land in a new `In`

cell, ready for the next block of code. Once you get used to this interface, you will slowly discover the power and flexibility it offers.

When you start a new cell, by default, it is assumed that you will write code in it. However, if you want to write text, then you have to change the type. You can do that using the following sequence of keys: *Esc* | *M* | *Enter*. This will convert the selected cell to the **Markdown** (**M**) cell type:

When you are done with writing some text, execute it using *Shift* + *Enter*. Unlike the case with code cells, the result of the compiled Markdown will be shown in the same place as the `In`

cell.

To get a *cheat sheet* of all the handy key shortcuts in Jupyter, go to https://packt.live/33sJuB6. With this basic introduction, we are ready to embark on an exciting and enlightening journey.

## Installing Libraries

`pip`

comes pre-installed with Anaconda. Once Anaconda is installed on your machine, all the required libraries can be installed using `pip`

, for example, `pip install numpy`

. Alternatively, you can install all the required libraries using `pip install –r requirements.txt`

. You can find the `requirements.txt`

file at https://packt.live/3gv0zhb.

The exercises and activities will be executed in Jupyter Notebooks. Jupyter is a Python library and can be installed in the same way as the other Python libraries – that is, with `pip install jupyter`

, but fortunately, it comes pre-installed with Anaconda. To open a notebook, simply run the command `jupyter notebook`

in the Terminal or Command Prompt.

## Accessing the Code Files

You can find the complete code files of this book at https://packt.live/3kcWZe6. You can also run many activities and exercises directly in your web browser by using the interactive lab environment at https://packt.live/2PpqDOX.

We've tried to support interactive versions of all activities and exercises, but we recommend a local installation as well for instances where this support isn't available.

If you have any issues or questions about installation, please email us at `[email protected]`

.