NumPy Poisson Distribution – Model Event Counts with NumPy
Introduction – Why Learn the Poisson Distribution in NumPy?
The Poisson distribution models the number of times an event occurs in a fixed interval of time or space. It’s used when events happen independently, with a constant average rate. Think of it like modeling:
- Number of emails per hour
- Number of defects per batch
- Number of website hits per second
NumPy’s np.random.poisson() lets you simulate these real-world scenarios quickly and accurately.
By the end of this guide, you’ll:
- Understand how the Poisson distribution works
- Use
np.random.poisson()to generate synthetic event data - Visualize Poisson-distributed values
- Know when and why to apply it in practical use cases
Step 1: Generate Poisson Samples with NumPy
import numpy as np
data = np.random.poisson(lam=3, size=10)
print(data)
Explanation:
lam=3: Average number of events (λ) in a fixed intervalsize=10: Generate 10 samples
Output: A list of non-negative integers representing event counts like[2, 3, 5, 0, 1, 3, 2, 4, 3, 3]
Step 2: Visualize the Poisson Distribution
import matplotlib.pyplot as plt
import seaborn as sns
samples = np.random.poisson(lam=4, size=1000)
sns.histplot(samples, bins=range(11), color="lightblue", edgecolor="black")
plt.title("Poisson Distribution (λ=4)")
plt.xlabel("Event Count")
plt.ylabel("Frequency")
plt.show()
Explanation:
- Generates 1000 samples from a Poisson distribution with λ=4
- Histogram shows how frequently each event count occurred
Expect a peak near λ and a long tail toward higher values
Step 3: Compare Different λ Values
for lam in [2, 5, 10]:
sns.kdeplot(np.random.poisson(lam=lam, size=1000), label=f'λ={lam}', fill=True)
plt.title("Poisson Distributions for Different λ Values")
plt.xlabel("Event Count")
plt.ylabel("Density")
plt.legend()
plt.show()
Explanation:
- Varying
lamchanges the center and spread of the distribution - Higher λ means higher average counts and more variability
Helps visualize how λ affects real-world models
Step 4: Realistic Use Case – Customer Arrivals
customers_per_min = np.random.poisson(lam=5, size=60)
print(f"Average per hour: {np.sum(customers_per_min)}")
Explanation:
- Simulates customer arrivals per minute over 1 hour (60 samples)
- Summing gives an hourly total
Use in simulations, staffing needs, or queue modeling
Step 5: Use 2D Output for Grid Simulations
grid_events = np.random.poisson(lam=2, size=(3, 4))
print(grid_events)
Explanation:
- Generates a 3×4 matrix of Poisson event counts
- Useful for simulations across spatial grids or time segments
Great for modeling heatmaps of activity
Poisson vs. Binomial vs. Normal
| Feature | Poisson | Binomial | Normal |
|---|---|---|---|
| Output type | Discrete integers | Discrete integers | Continuous float |
| Domain | [0, ∞) | [0, n] | (−∞, ∞) |
| Parameters | λ (mean event rate) | n (trials), p (success %) | mean, std dev |
| When to use | Events per interval | Successes in trials | Natural variability in data |
Summary – Recap & Next Steps
The Poisson distribution is essential for modeling random events that occur independently at a consistent rate. With just np.random.poisson(), you can simulate traffic, customer arrivals, manufacturing errors, and more.
Key Takeaways:
- Use
lam=to define your average event rate - Outputs are non-negative integers
- Use histograms to visualize and validate output
- Ideal for real-world event modeling across time and space
Real-world relevance: Used in telecommunications, retail analytics, logistics, medical testing, and customer service forecasting.
FAQs – NumPy Poisson Distribution
What is λ (lam) in np.random.poisson()?
It’s the expected number of events per interval (mean of the distribution).
Are Poisson values always whole numbers?
Yes. It generates integers (0 or more) because it counts discrete events.
Can lam be a float?
Absolutely. lam=3.5 is valid and represents 3.5 events per interval on average.
Is Poisson symmetric like normal?
No. It’s skewed right, especially when lam is small.
Can I use Poisson for time-series?
Yes! Use it to model event counts over time intervals.
Share Now :
