Plotting a cumulative distribution function

Another interesting plot that we can create is one showing cumulative distribution. This plot shows the probability of finding a number in a bin or any lower bin. We do this by adding a single argument to the hist() function.

How to do it…

  1. To create a cumulative distribution plot for a single column in a Pandas DataFrame, begin by importing all the required libraries. To show the matplotlib plots in IPython Notebook, we will use an IPython magic function which starts with %:
    %matplotlib inline
    import pandas as pd
    import numpy as np
    from pymongo import MongoClient
    import matplotlib as mpl
    import matplotlib.pyplot as plt
  2. Next, connect to MongoDB and run a query specifying the five fields to be retrieved from the MongoDB data:
    client = MongoClient('localhost', 27017)
    db = client.pythonbicookbook
    collection = db.accidents
    fields = {'Date':1,
              'Police_Force':1,
              'Accident_Severity':1,
              'Number_of_Vehicles':1,
              'Number_of_Casualties':1}
    data = collection.find({}, fields)
  3. Next, create a DataFrame from the results of the query:
    accidents = pd.DataFrame(list(data))
  4. Finally, create the cumulative distribution function and render it inline:
    plt.hist(casualty_count['Number_of_Casualties'],
             bins=20,
             normed=True,
             cumulative=True)
    plt.title('Cumulative Distribution)
    plt.xlabel('Value')
    plt.ylabel('Frequency')
    plt.show()

How it works…

This recipe works exactly like the previous recipe with the exception of the way we create the histogram:

plt.hist(casualty_count['Number_of_Casualties'],
         bins=20,
         normed=True,
         cumulative=True)

With the addition of cumulative=True, we turn the histogram into a cumulative distribution plot, and see the following plot as a result:

How it works…
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset