# Compute the percentage of customers who closed their accounts
# and were denied a loan within a 1-month perioud prior to that.
from cust_journey_data import cust_journeys
from dateutil.parser import parse
# Compute the number of customers that closed their accounts
n_closed = len([
select cj
for cj in cust_journeys
where [select e for e in cj where e.event_name=='close']])
# These customers closed their accounts and were refused a loan
n_closed_and_refused = len([
# Iterate over customer journeys
select cj
for cj in cust_journeys
# Pick out the close event, if it doesn't exist, filter our the journey
let close = next((select e for e in cj where e.event_name=='close'),None)
where close
# Get the last loan request event
let requests = [select e for e in cj where e.event_name=='loan_req']
where requests
let last_request = requests[-1],
last_request_date = parse(last_request.date),
close_date = parse(close.date)
# Make sure the last loan request was at most 30 days before
# the account was closed, and check the there was no loan
# issued
where (close_date - last_request_date).days < 30
and not [select e
for e in cj
where e.event_name=='loan_issued' and
(parse(e.date) - last_request_date) > 0 ] ])
print ("Ratio: %.2g" % (n_closed_and_refused / n_closed ))
Welcome to the PythonQL Web Demo
The Demo is organized into a number of scenarios that demonstrate the power and usability of PythonQL.
Each scenario illustrates a specific use case in data science that is addressed by PythonQL.
