# SciPy - Poisson Distribution

Poisson Distribution is a discrete probability distribution and it expresses the probability of a given number of events occurring in a fixed interval of time or space if these events occur with a known constant mean rate and independently of the time since the last event.

The probability mass function (pmf) of poisson distribution is defined as: Where, k is the number of occurrences (k=0,1,2...), μ is average number of events.

An poisson distribution has mean μ and variance μ.

The cumulative distribution function (cdf) evaluated at k, is the probability that the random variable (X) will take a value less than or equal to k. The cdf of poisson distribution is defined as: Where, [k] is the greatest integer less than or equal to k.

The scipy.stats.poisson contains all the methods required to generate and work with a poisson distribution. The most frequently methods are mentioned below:

### Syntax

```scipy.stats.poisson.pmf(k, mu, loc=1)
scipy.stats.poisson.cdf(k, mu, loc=1)
scipy.stats.poisson.ppf(q, mu, loc=1)
scipy.stats.poisson.rvs(mu, loc=0, size=1)
```

### Parameters

 `k` `Required. `Specify float or array_like of floats representing random variable. `q` `Required. `Specify float or array_like of floats representing probabilities. `mu` `Required. `Specify float or array_like of floats of (non-negative) means. `loc` `Optional. `Specify the location of the distribution. Default is 1. `size` `Optional. `Specify output shape.

## poisson.pmf()

The poisson.pmf() function measures probability mass function (pmf) of the distribution.

```from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#creating a array of values between
#0 to 20 with a difference of 1
x = np.arange(0, 20, 1)

y = poisson.pmf(x, 10, 0)

plt.plot(x, y, 'bo')
plt.show()
```

The output of the above code will be: ## poisson.cdf()

The poisson.cdf() function returns cumulative distribution function (cdf) of the distribution.

```from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#creating a array of values between
#0 to 20 with a difference of 0.01
x = np.arange(0, 20, 0.01)

y = poisson.cdf(x, 10, 0)

plt.plot(x, y)
plt.show()
```

The output of the above code will be: ## poisson.ppf()

The poisson.ppf() function takes the probability value and returns cumulative value corresponding to probability value of the distribution.

```from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#creating a array of probability from
#0 to 1 with a difference of 0.001
x = np.arange(0, 1, 0.001)

y = poisson.ppf(x, 10, 0)

plt.plot(x, y)
plt.show()
```

The output of the above code will be: ## poisson.rvs()

The poisson.ppf() function generates an array containing specified number of random values drawn from the given poisson distribution. In the example below, a histogram is plotted to visualize the result.

```from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#fixing the seed for reproducibility
#of the result
np.random.seed(10)

#creating a vector containing 10000
#random values from poisson distribution
y = poisson.rvs(10, 0, 10000)

#creating bin
bin = np.arange(0,25,1)

plt.hist(y, bins=bin, edgecolor='blue')
plt.show()
```

The output of the above code will be: 5