# ppf vs cdf in SciPy

`ppf`

(Percent Point Function) and `cdf`

(Cumulative Distribution Function) are probability distribution functions available in the scipy library in Python.

The `cdf`

function is used for getting a probability (*p*) value from a specific value, whereas the `ppf`

function is used for getting a specific value from the probability (*p*) value.

The `ppf`

function is the inverse of the `cdf`

function.

The following examples explain the differences in `cdf`

and `ppf`

functions and how to calculate them.

## cdf (Cumulative Distribution Function)

The cdf represents the *p* value that a random value (*X*) from the given distribution will be less than or equal to a specific value (*x*).

Mathematically, it can be written as `P(X<=x)`

Suppose you have normally distributed data with a mean of 100 and a standard deviation of 20.

Here, you can use the `cdf`

function to calculate the *p* value that a random value is less than or equal to 60.

```
# load packages
from scipy.stats import norm
norm.cdf(x=60, loc=100, scale=20)
# output
0.022750131948179195
```

The probability that the random value (*X*) from a normal distribution is less than or equal to 60 is 0.02275.

In summary, the `cdf`

function gives the probability that a random value (*X*) drawn from the distribution will be less than or equal to
*x*.

## ppf (Percent Point Function)

ppf is the inverse of the cdf and gives the specific value (*x*) when the *p* value is given.

ppf gives the the specific value (*x*) such that the cumulative probability up to *x* is equal to *p*.

Suppose you have normally distributed data with a mean of 100 and a standard deviation of 20.

Calculate the value of *x* when the *p* value is 0.02275 (as obtained in the above example for cdf).

```
# load packages
from scipy.stats import norm
norm.ppf(q=0.02275, loc=100, scale=20)
# output
59.99995112200
```

The value of *x* is ~60. This indicates that, at a *p* value of 0.02275, the value of *x* is 60.