title: Python script to find max coverage with min false positives
body: <p>I have two datasets:</p>
  
  <pre><code>DF_EVENT (1 if Event happened for customer, 0 otherwise)
  Customer Event
  1        1
  2        1
  3        0
  4        1
  
  DF_HX (list of all products purchased by customer)
  Customer Product_id
  1        x
  2        y
  3        x
  3        z
  4        y
  4        x
  </code></pre>
  
  <p>I want to identify a list of <code>Product_Id</code> from <code>DF_HX</code> that will provide the smallest number of Customers who would cover at least 95% of customers with <code>Event=1</code> in <code>DF_EVENT</code>.</p>
  
  <p>In the example above, if I chose <code>Product_Id=x</code>, I'd capture 66% of events with a population of 3 customers (customers 1, 3 and 4 purchased product x). If I chose <code>Product_Id x and y</code>, I'd capture 100% of events with a population of 4 customers (customers 1, 2, 3 and 4 purchased product x and y).</p>