{ "cells": [ { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import pm4py\n", "from datetime import datetime\n", "import numpy as np\n", "from tqdm import tqdm \n", "import math\n", "from random import sample\n", "\n", "pd.set_option('display.max_rows', None)\n", "pd.set_option('display.max_columns', None)\n", "pd.set_option('display.width', None)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "parsing log, completed traces :: 100%|██████████| 31509/31509 [00:47<00:00, 657.00it/s]\n", "parsing log, completed traces :: 100%|██████████| 42995/42995 [00:10<00:00, 4021.40it/s]\n" ] } ], "source": [ "application_log = pm4py.read_xes('BPI Challenge 2017.xes')\n", "offer_log = pm4py.read_xes('BPI Challenge 2017 - Offer log.xes')\n", "\n", "df_application = pm4py.convert_to_dataframe(application_log)\n", "df_offer = pm4py.convert_to_dataframe(offer_log)\n", "\n", "df_application.to_csv('app_logs.csv')\n", "df_offer.to_csv('offer_logs.csv')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df_application = pd.read_csv('./../../Assignment_2/Data/app_logs.csv')\n", "#df_offer = pd.read_csv('./../../Assignment_2/Data/offer_logs.csv')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "declined_ids = list(df_application.loc[df_application['concept:name'] == 'A_Denied']['case:concept:name'].unique())\n", "accepted_ids = list(df_application.loc[df_application['concept:name'] == 'A_Pending']['case:concept:name'].unique())\n", "cancelled_ids = list(df_application.loc[df_application['concept:name'] == 'A_Cancelled']['case:concept:name'].unique())" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "31411" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 31,509 loan applications in total\n", "# 98 noise \n", "len(declined_ids)+ len(accepted_ids)+len(cancelled_ids)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3752, 17228, 10431)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(declined_ids), len(accepted_ids), len(cancelled_ids)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "def get_min_max_time(ids, i):\n", " timestamps = df_application.loc[df_application['case:concept:name'] == ids[i]]['time:timestamp']\n", " return (min(timestamps), max(timestamps))" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "# declined_ids: 0.19175868569889576\n", "# cancelled_ids: 0.19131614654002713\n", "# approved_ids: 0.19133955289561697" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "timestamp_list = []\n", "for i in tqdm(range(len(accepted_ids))):\n", " timestamp_list.append(get_min_max_time(accepted_ids, i))\n", "#all(timestamp_list[i] <= timestamp_list[i+1] for i in range(len(timestamp_list) - 1))\n", "\n", "accepted_ids_w_st_time = sorted([(id, time) for id, time in zip(accepted_ids, timestamp_list)], key=lambda x: x[1][0])\n", "accepted_ids_w_en_time = sorted([(id, time) for id, time in zip(accepted_ids, timestamp_list)], key=lambda x: x[1][1])\n", "\n", "ids_length = len(timestamp_list)\n", "train_num = int(ids_length * 0.8)\n", "\n", "train_ids = [pair[0] for pair in accepted_ids_w_st_time[:train_num]]\n", "test_ids = [pair[0] for pair in accepted_ids_w_en_time[train_num:]]\n", "\n", "overlap = list(set(train_ids) & set(test_ids))\n", "len(overlap)\n", "\n", "print((len(test_ids)-len(overlap))/(len(timestamp_list)-len(overlap)))\n", "\n", "test_ids = list(set(test_ids) - set(overlap))\n", "\n", "train_df = df_application.loc[df_application['case:concept:name'].isin(train_ids)]\n", "test_df = df_application.loc[df_application['case:concept:name'].isin(test_ids)]\n", "\n", "train_df.to_csv('approved_train.csv')\n", "test_df.to_csv('approved_test.csv')\n", "\n", "#\n", "#train_event_log = pm4py.convert_to_event_log(train_df)\n", "#pm4py.write_xes(train_event_log, 'approved_train.xes')\n", "#\n", "#test_event_log = pm4py.convert_to_event_log(test_df)\n", "#pm4py.write_xes(test_event_log, 'approved_test.xes')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 1" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "def create_train_test(df_application, ids, outcome):\n", "\n", " timestamp_list = []\n", " for i in tqdm(range(len(ids))):\n", " timestamp_list.append(get_min_max_time(ids, i))\n", " #all(timestamp_list[i] <= timestamp_list[i+1] for i in range(len(timestamp_list) - 1))\n", " \n", " ids_w_st_time = sorted([(id, time) for id, time in zip(ids, timestamp_list)], key=lambda x: x[1][0])\n", " ids_w_et_time = sorted([(id, time) for id, time in zip(ids, timestamp_list)], key=lambda x: x[1][1])\n", " \n", " ids_length = len(timestamp_list)\n", " train_num = int(ids_length * 0.8)\n", " \n", " train_ids = [pair[0] for pair in ids_w_st_time[:train_num]]\n", " test_ids = [pair[0] for pair in ids_w_et_time[train_num:]]\n", " \n", " overlap = list(set(train_ids) & set(test_ids))\n", " \n", " print((len(test_ids)-len(overlap))/(len(timestamp_list)-len(overlap)))\n", " \n", " test_ids = list(set(test_ids) - set(overlap))\n", " \n", " train_df = df_application.loc[df_application['case:concept:name'].isin(train_ids)]\n", " test_df = df_application.loc[df_application['case:concept:name'].isin(test_ids)]\n", " \n", " train_df.to_csv(f'{outcome}_train.csv')\n", " test_df.to_csv(f'{outcome}_test.csv')\n", "\n", " return train_df, test_df\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 3752/3752 [03:54<00:00, 16.01it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "0.19175868569889576\n" ] } ], "source": [ "d_train_df, d_test_df = create_train_test(df_application, declined_ids, 'declined')" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 10431/10431 [10:48<00:00, 16.09it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "0.19131614654002713\n" ] } ], "source": [ "c_train_df, c_test_df = create_train_test(df_application, cancelled_ids, 'cancelled')" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 17228/17228 [17:48<00:00, 16.12it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "0.19133955289561697\n" ] } ], "source": [ "a_train_df, a_test_df = create_train_test(df_application, accepted_ids, 'approved')" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "def save_xes(train_df, test_df, pre):\n", "\n", " train_event_log = pm4py.convert_to_event_log(train_df)\n", " pm4py.write_xes(train_event_log, f'{pre}_train.xes')\n", "\n", " test_event_log = pm4py.convert_to_event_log(test_df)\n", " pm4py.write_xes(test_event_log, f'{pre}_test.xes')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 2 building dataset" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def aggregate_df(df):\n", " \"\"\" \n", " Aggregate the df of current events in the case\n", "\n", " Output: \n", " result -> could be a pandas series\n", " \"\"\"\n", "\n", " # record the timestamp of the last activity\n", " result = df.iloc[0]\n", "\n", " return result\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def add_to_aggregate(result, df_row):\n", " \"\"\" \n", " When a new event happens, add the event info to the current aggregated result.\n", "\n", " Input: \n", " result: the current aggregated result\n", " df_row: pandas df row representing the new event\n", " Output:\n", " result: the new aggregated result\n", " \"\"\"\n", "\n", " # record the timestamp of the last activity\n", " result = df_row.iloc[0]\n", "\n", " return result" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "def create_prefix_part2(df_application, app_ids, end_event, start_event='A_Accepted'):\n", " \n", " app_id_list = list(df_application['case:concept:name'].unique())\n", "\n", " # TODO:\n", " # create a return df\n", " return_df = pd.DataFrame()\n", "\n", " # extracting prefix for each application\n", " for app_id in app_id_list:\n", " \n", " events_app = df_application.loc[df_application['case:concept:name'] == app_id]\n", " events_app.reset_index(drop=True, inplace=True)\n", "\n", " # A_Accepted happens at most 1 time in each case\n", " # Otherwise will give error - only consider the first A_Accepted\n", " cur_id = starting_row_id = events_app.loc[events_app['concept:name'] == 'A_Accepted'].index[0]\n", " pre_events = events_app.iloc[:starting_row_id]\n", " # TODO: \n", " # aggregate events_app from row 0 to starting_row_id\n", " result = aggregate_df(pre_events)\n", " \n", " ending_row_id = events_app.loc[events_app['concept:name'] == end_event].index[0]\n", " cur_id += 1\n", " \n", " while cur_id < ending_row_id:\n", " new_row = events_app.iloc[cur_id]\n", " # TODO: \n", " # add new event row info to the aggregated result\n", " result = add_to_aggregate(pre_events)\n", "\n", " # Update the return_df -> add new row\n", " # target y: end_event\n", "\n", " cur_id += 1\n", "\n", " return return_df\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 3 building dataset\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "#build function to retrieve minimum time \n", "def get_min_time(ids, i):\n", " \"\"\"define function to retrieve the minimum time\"\"\"\n", " return min(df_application.loc[df_application[\"case:concept:name\"] == ids[i]][\"time:timestamp\"])\n", "\n", "#get the minimum time for the accepted ids\n", "min_timestamp_list = []\n", "for i in tqdm(range(len(accepted_ids))):\n", " min_timestamp_list.append(get_min_time(accepted_ids, i))\n", "\n", "#create a list with every id and the start time, and another list with every id and the end time\n", "accepted_ids_begin = sorted([(id, time) for id, time in zip(accepted_ids, min_timestamp_list)], key=lambda x: x[1])\n", "accepted_ids_end = sorted([(id, time) for id, time in zip(accepted_ids, timestamp_list)], key=lambda x: x[1])\n", "\n", "#generate dataframe for begin and end times \n", "df_accepted_ids_time_begin = pd.DataFrame(accepted_ids_begin, columns = [\"case:concept:name\", \"begin\"])\n", "df_accepted_ids_time_end = pd.DataFrame(accepted_ids_end, columns = [\"case:concept:name\", \"end\"])\n", "\n", "#merge dataframes on case:concept:name\n", "df_accepted_timestamps = df_accepted_ids_time_begin.merge(df_accepted_ids_time_end, on = \"case:concept:name\")\n", "\n", "#keep relevant time formatting\n", "df_accepted_timestamps[\"begin\"] = df_accepted_timestamps[\"begin\"].map(lambda x: str(x)[:19])\n", "df_accepted_timestamps[\"end\"] = df_accepted_timestamps[\"end\"].map(lambda x: str(x)[:19])\n", "\n", "#create function to calculate the difference in time from a dataframe with two columns containing dates and time\n", "def calc_duration(end, begin):\n", " \"\"\"calculate the difference in time using datetime.strptime\"\"\"\n", " return (datetime.strptime(end, \"%Y-%m-%d %H:%M:%S\") - datetime.strptime(begin, \"%Y-%m-%d %H:%M:%S\")).total_seconds()\n", "\n", "#empty list to gather differences\n", "duration = []\n", "\n", "#retrieve the difference between begin and end of the trace and add to a list \n", "for i in range(0, len(df_accepted_timestamps)):\n", " duration.append(calc_duration(df_accepted_timestamps.iloc[i][\"end\"], df_accepted_timestamps.iloc[i][\"begin\"]))\n", "\n", "#add the time difference to the df \n", "df_accepted_timestamps[\"duration\"] = duration\n", "\n", "#remove all cases with case time duration 0 \n", "df_accepted_timestamps = df_accepted_timestamps.loc[df_accepted_timestamps[\"duration\"] > 0]\n", "\n", "#get indexes to filter outliers top and bottom 5%\n", "outliers_index = list(range(0, round(0.05 * len(df_accepted_timestamps)))) + list(range(round(0.95 * len(df_accepted_timestamps)), len(df_accepted_timestamps)))\n", "\n", "#sort values from small to big time difference and drop respective rows\n", "df_accepted_timestamps = df_accepted_timestamps.sort_values(by= \"duration\", ignore_index = True).drop(labels = outliers_index, axis = \"index\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df_accepted_timestamps_begin = df_accepted_timestamps.sort_values(by = \"begin\").reset_index(drop = True)\n", "df_accepted_timestamps_end = df_accepted_timestamps.sort_values(by = \"end\").reset_index(drop = True)\n", "\n", "#test set range\n", "begin_index_test = round(0.8 * len(df_accepted_timestamps_begin))\n", "begin_time_test = df_accepted_timestamps_begin.iloc[begin_index_test][\"begin\"]\n", "x = calc_duration(max(df_accepted_timestamps[\"end\"]), begin_time_test)\n", "\n", "#train set range\n", "end_index_train = round(0.8 * len(df_accepted_timestamps_end))\n", "end_time_train = df_accepted_timestamps_end.iloc[end_index_train][\"end\"]\n", "y = calc_duration(end_time_train, min(df_accepted_timestamps[\"begin\"]))\n", " \n", "total_with_overlap = x + y\n", "total_time = calc_duration(max(df_accepted_timestamps[\"end\"]), min(df_accepted_timestamps[\"begin\"]))\n", "overlap_span = total_with_overlap - total_time\n", "\n", "overlap_train = 0.8 * overlap_span\n", "overlap_test = 0.2 * overlap_span\n", "\n", "end_time_train_with_overlap = datetime.strptime(end_time_train, \"%Y-%m-%d %H:%M:%S\") \n", "date_index_train = datetime.strftime((end_time_train_datetime - timedelta(seconds = overlap_train)), \"%Y-%m-%d %H:%M:%S\")\n", "\n", "begin_time_test_with_overlap = datetime.strptime(begin_time_test, \"%Y-%m-%d %H:%M:%S\") \n", "date_index_test = datetime.strftime((begin_time_test_datetime + timedelta(seconds = overlap_test)), \"%Y-%m-%d %H:%M:%S\")\n", "\n", "df_train = df_accepted_timestamps_end.loc[df_accepted_timestamps_end[\"end\"] < date_index_train]\n", "df_test = df_accepted_timestamps_begin.loc[df_accepted_timestamps_begin[\"begin\"] > date_index_test]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 4 building dataset\n", "---\n", "\n", "#### First XOR - test: \n", "\n", " W_Validate application -> A_Validating XOR W_Call incomplete files " ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "parsing log, completed traces :: 100%|██████████| 8344/8344 [00:22<00:00, 370.96it/s]\n", "parsing log, completed traces :: 100%|██████████| 2087/2087 [00:05<00:00, 371.85it/s]\n" ] } ], "source": [ "df_cancel_tr = pm4py.convert_to_dataframe(pm4py.read_xes('./../../Assignment_2/Data/cancelled_train.xes'))\n", "df_cancel_te = pm4py.convert_to_dataframe(pm4py.read_xes('./../../Assignment_2/Data/cancelled_test.xes'))" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "df_cancel_tr.to_csv('./../../Assignment_2/Data/cancelled_train.csv')\n", "df_cancel_te.to_csv('./../../Assignment_2/Data/cancelled_test.csv')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df_cancel_tr = pd.read_csv('./../../Assignment_2/Data/cancelled_train.csv')\n", "df_cancel_te = pd.read_csv('./../../Assignment_2/Data/cancelled_test.csv')" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "df_approve_tr = pd.read_csv('./../../Assignment_2/Data/approved_train.csv')\n", "df_approve_te = pd.read_csv('./../../Assignment_2/Data/approved_test.csv')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "all_columns = list(df_cancel_tr.columns)" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [], "source": [ "case_attr = all_columns[all_columns.index('FirstWithdrawalAmount'):]\n", "\n", "event_attr_cat = ['org:resource', 'concept:name', 'lifecycle:transition']\n", "event_attr_num = ['time:timestamp']\n", "\n", "result_df_columns = case_attr + ['time_to_current'] + ['last_time:timestamp']\n", "\n", "resources = list(df_cancel_tr['org:resource'].unique())\n", "\n", "df_cancel_tr['event_w_lifecycly'] = df_cancel_tr.apply(lambda row: row['concept:name'].replace(' ', '_') + '_' + row['lifecycle:transition'], axis=1)\n", "events = list(df_cancel_tr['concept:name'].unique())\n", "lifecycles = list(df_cancel_tr['lifecycle:transition'].unique())\n", "events_w_lifecycle = list(df_cancel_tr['event_w_lifecycly'].unique())\n", "\n", "result_df_columns.extend(events)\n", "result_df_columns.extend(lifecycles)\n", "result_df_columns.extend(events_w_lifecycle)\n", "\n", "return_df = pd.DataFrame(columns=result_df_columns)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "def aggregate_df(df, res_cols):\n", " \"\"\" \n", " Aggregate the df of current events in the case\n", "\n", " Output: \n", " result -> could be a pandas series\n", " \"\"\"\n", " res_dict = dict.fromkeys(res_cols)\n", " \n", " for row in df.to_dict('records'):\n", "\n", " # user variable assign\n", " user = row['org:resource']\n", " # event variable assign\n", " event = row['concept:name'] + ' ' + row['lifecycle:transition']\n", "\n", " try:\n", " # first mention, turn it numeric\n", " if not res_dict[user]: res_dict[user] = 1\n", " else: res_dict[user] += 1\n", "\n", " if not res_dict[event]: res_dict[event] = 1\n", " else: res_dict[event] += 1\n", " except:\n", " # when test set has a unique resource (user) or event not in train set\n", " pass\n", "\n", " # case level cols\n", " rest_cols_1 = ['FirstWithdrawalAmount',\n", " 'NumberOfTerms', 'Accepted', 'MonthlyCost', 'Selected', 'CreditScore',\n", " 'OfferedAmount'] \n", "\n", " for col in rest_cols_1: # always get the newest record\n", " if not math.isnan(row[col]) and row[col] != res_dict[col]:\n", " res_dict[col] = row[col]\n", "\n", " \n", " # time stuff\n", " #keeping the first timestamp of the case for calculation purposes\n", " if not res_dict['first_timestamp']: res_dict['first_timestamp'] = row['time:timestamp']\n", "\n", "\n", " rest_cols_2 = ['case:LoanGoal', 'case:ApplicationType', 'case:RequestedAmount']\n", " for col in rest_cols_2:\n", " res_dict[col] = row[col] \n", " \n", " # trace duration in seconds\n", " res_dict['trace_duration'] = (np.datetime64(row['time:timestamp']) - np.datetime64(res_dict['first_timestamp'])).item().total_seconds()\n", "\n", " return res_dict" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "cancel_events = list(df_cancel_tr['concept:name'].unique())\n", "approve_events = list(df_approve_tr['concept:name'].unique())" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "common_events = set(approve_events) & set(cancel_events)\n", "only_cancel = list(set(cancel_events) - common_events)\n", "only_approve = list(set(approve_events) - common_events)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "list(common_events)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(['A_Cancelled'], ['A_Pending', 'W_Personal Loan collection', 'O_Accepted'])" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "only_cancel, only_approve" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8344, 1974)" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_cancel_tr['case:concept:name'].unique()), len(df_cancel_te['case:concept:name'].unique())" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "df_train = pd.concat([df_cancel_tr, df_approve_tr[df_approve_tr['case:concept:name'].isin(sample(list(df_approve_tr['case:concept:name'].unique()), 8000))]])\n", "df_test = pd.concat([df_cancel_te, df_approve_te[df_approve_te['case:concept:name'].isin(sample(list(df_approve_te['case:concept:name'].unique()), 2000))]])\n" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "def create_feature_columns(df_train):\n", " df_train['event_w_lifecycle'] = df_train['concept:name'] + ' ' + df_train['lifecycle:transition']\n", "\n", " org_resource_cols = list(df_train['org:resource'].unique())\n", " event_cols = list(df_train['event_w_lifecycle'].unique())\n", " rest_cols = ['FirstWithdrawalAmount',\n", " 'NumberOfTerms', 'Accepted', 'MonthlyCost', 'Selected', 'CreditScore',\n", " 'OfferedAmount', 'case:LoanGoal', 'case:ApplicationType', 'case:RequestedAmount']\n", " target_cols = ['first_timestamp', 'trace_duration']\n", "\n", " res_cols = org_resource_cols + event_cols + rest_cols + target_cols\n", "\n", " return res_cols" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [], "source": [ "def create_dataset_part4_first_xor(df_application, current_event='A_Complete', next_event=[], result_columns=None, test=True):\n", " \"\"\"\n", " Encode original applications \n", " \"\"\"\n", " \n", " result_dict = []\n", " \n", " app_id_list = list(df_application['case:concept:name'].unique())\n", " if test: \n", " cnt = int(len(app_id_list) * 0.1)\n", " app_id_list = app_id_list[:cnt] + app_id_list[-cnt:]\n", " for app_id in tqdm(app_id_list):\n", " \n", " events_app = df_application.loc[df_application['case:concept:name'] == app_id]\n", " events_app.reset_index(drop=True, inplace=True)\n", " \n", " # same event could happen multiple times in a case\n", " starting_rows = events_app.loc[(events_app['concept:name'] == current_event) & (events_app['lifecycle:transition'] == 'complete')]\n", " starting_row_ids = list(starting_rows.index)\n", " \n", " for starting_row_id in starting_row_ids:\n", " #print(app_id)\n", " pre_events = events_app.iloc[:starting_row_id+1]\n", " pos_events = events_app.iloc[starting_row_id+1:]\n", " \n", " # aggregate events_app from row 0 to starting_row_id\n", " result = aggregate_df(pre_events, result_columns)\n", " \n", " # XOR with 2 results\n", " target = list(pos_events['concept:name'].unique())\n", " result['next_event'] = next_event[0] in target\n", " \n", " result_dict.append(result)\n", " \n", " return pd.DataFrame.from_dict(result_dict).fillna(0)\n", " \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 0/3268 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
User_1User_19User_11User_17User_8User_3User_38User_113User_100User_28User_27User_43User_15User_16User_89User_112User_4User_71User_108User_37User_85User_7User_13User_20User_52User_2User_14User_31User_6User_95User_109User_70User_10User_21User_114User_102User_87User_47User_5User_44User_33User_34User_35User_29User_26User_74User_42User_49User_99User_22User_116User_92User_68User_30User_41User_75User_24User_12User_117User_9User_110User_119User_101User_36User_115User_18User_144User_118User_120User_25User_23User_86User_90User_73User_142User_141User_76User_32User_50User_125User_145User_97User_61User_39User_148User_127User_128User_46User_121User_103User_122User_60User_83User_40User_53User_48User_146User_107User_51User_123User_143User_45User_54User_63User_124User_138User_93User_64User_126User_58User_57User_106User_79User_62User_78User_133User_82User_55User_66User_139User_56User_91User_111User_59User_132User_130User_67User_104User_131User_65User_77User_84User_80User_96User_136User_129User_69User_134A_Create Application completeA_Submitted completeW_Handle leads scheduleW_Handle leads withdrawW_Complete application scheduleA_Concept completeW_Complete application startA_Accepted completeO_Create Offer completeO_Created completeO_Sent (mail and online) completeW_Complete application completeW_Call after offers scheduleW_Call after offers startA_Complete completeW_Call after offers suspendW_Call after offers resumeA_Cancelled completeO_Cancelled completeW_Call after offers ate_abortW_Complete application suspendW_Complete application resumeW_Complete application ate_abortW_Validate application scheduleW_Validate application startA_Validating completeO_Returned completeW_Validate application suspendW_Validate application ate_abortW_Call incomplete files scheduleW_Call incomplete files startA_Incomplete completeW_Call incomplete files suspendW_Call incomplete files resumeW_Call incomplete files ate_abortO_Sent (online only) completeW_Handle leads startW_Handle leads completeW_Validate application resumeW_Validate application completeW_Call incomplete files completeW_Complete application withdrawW_Call after offers completeW_Handle leads suspendW_Handle leads resumeW_Assess potential fraud scheduleW_Assess potential fraud startW_Assess potential fraud suspendW_Assess potential fraud resumeW_Assess potential fraud completeW_Handle leads ate_abortW_Shortened completion scheduleW_Shortened completion startW_Shortened completion suspendW_Shortened completion resumeO_Accepted completeA_Pending completeW_Personal Loan collection scheduleW_Personal Loan collection startW_Personal Loan collection suspendW_Personal Loan collection resumeW_Assess potential fraud ate_abortW_Assess potential fraud withdrawFirstWithdrawalAmountNumberOfTermsAcceptedMonthlyCostSelectedCreditScoreOfferedAmountcase:LoanGoalcase:ApplicationTypecase:RequestedAmountfirst_timestamptrace_durationnext_event
32456.00.00.00.00.00.00.0000.00.00.00.00.00.000.09.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.00.00.0000011.01.01.0111.01111.01.01110000.000.00.00.00000000000000.00.00.00000.000.00.00.00.00.00.00.00.000000000000.00.020000.060.0True371.17True878.020000.0CarNew credit20000.02016-10-18 08:51:42.172000+00:00170163.713True
32460.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.012.00.0000010.00.00.0111.01111.01.01110000.000.00.00.00000000000000.00.00.00000.000.00.00.00.00.00.00.00.000000000000.00.00.0134.0True100.00True839.010000.0Home improvementLimit raise10000.02016-10-18 09:04:18.477000+00:00601.295True
32470.00.00.00.00.00.00.0000.00.00.00.012.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.00.00.0000010.00.00.0111.01111.01.01110000.000.00.00.00000000000000.00.00.00000.000.00.00.00.00.00.00.00.000000000000.00.00.0126.0True400.00True0.040000.0UnknownLimit raise0.02016-10-18 09:06:20.637000+00:00150.016True
32480.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.05.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.09.000.00.02.02.00.0000010.00.00.0111.01111.01.01110000.003.03.00.00000000000000.00.00.00000.000.00.00.00.00.00.00.00.000000000000.00.00.0126.0False320.00True0.032000.0UnknownLimit raise0.02016-10-18 09:30:06.339000+00:00183303.148True
32490.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.07.00.0000.00.06.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.02.00.0000010.00.00.0111.01111.00.01110000.002.01.01.00000000000000.00.00.00000.000.00.00.00.00.00.00.00.000000000000.00.02000.0134.0True130.00True775.013000.0CarLimit raise13000.02016-10-18 09:34:06.469000+00:00266088.593True
32506.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.08.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.00.00.0000011.01.01.0110.01111.00.01110000.000.00.00.00000000000000.00.00.00001.000.00.00.00.00.00.00.00.000000000000.00.00.082.0True500.00True733.035000.0CarNew credit35000.02016-10-18 10:31:35.256000+00:0091691.652True
32516.00.00.00.00.00.00.0000.00.00.00.04.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.012.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.00.00.0000011.01.00.0111.01222.01.01110000.000.00.00.00000000000000.01.00.00000.002.01.00.00.00.00.00.01.000000000000.00.030000.0125.0False650.00False0.064500.0Other, see explanationNew credit65000.02016-10-18 11:12:05.182000+00:00167404.402True
32526.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.08.000.00.000.00.000.00.000.00.00.00.00.0000011.01.01.0110.01111.00.01110000.000.00.00.00000000000000.00.00.00001.000.00.00.00.00.00.00.00.000000000000.00.010000.044.0True249.58True1083.010000.0CarNew credit10000.02016-10-18 11:24:50.857000+00:0082687.083True
32536.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.00.000.00.000.00.08.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.00.00.0000011.01.01.0110.01111.00.01110000.000.00.00.00000000000000.00.00.00001.000.00.00.00.00.00.00.00.000000000000.00.05000.036.0True152.82True908.05000.0CarNew credit5000.02016-10-18 12:00:33.792000+00:0089843.380True
32540.00.00.00.00.00.00.0000.00.00.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.000.00.00.00.0000.00.00.00.00.00.00.00.00.00.00.00.00.00.000.00.000.00.00.00.000.00.0000.000.00.000.00.00.00.000.000.00.00.00.000.00.00.00.00000.00000.00.00.00.012.000.00.000.00.00.00.000.000.000.00.000.00.00.0000.00.000.00.000.00.000.00.000.00.00.00.00.0000010.00.00.0111.01111.01.01110000.000.00.00.00000000000000.00.00.00000.000.00.00.00.00.00.00.00.000000000000.00.025000.060.0False461.78False0.025000.0CarNew credit25000.02016-10-18 12:02:09.032000+00:00515.051True
\n", "" ], "text/plain": [ " User_1 User_19 User_11 User_17 User_8 User_3 User_38 User_113 \\\n", "3245 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3250 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3251 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3252 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3253 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "3254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 \n", "\n", " User_100 User_28 User_27 User_43 User_15 User_16 User_89 \\\n", "3245 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3246 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3247 0 0.0 0.0 0.0 0.0 12.0 0.0 \n", "3248 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3249 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3250 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3251 0 0.0 0.0 0.0 0.0 4.0 0.0 \n", "3252 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3253 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3254 0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", " User_112 User_4 User_71 User_108 User_37 User_85 User_7 User_13 \\\n", "3245 0 0.0 9.0 0.0 0.0 0.0 0.0 0.0 \n", "3246 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3247 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3248 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3249 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3250 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3251 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3252 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3253 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3254 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", " User_20 User_52 User_2 User_14 User_31 User_6 User_95 User_109 \\\n", "3245 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3246 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3247 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3248 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3249 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3250 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3251 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3252 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3253 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "3254 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 \n", "\n", " User_70 User_10 User_21 User_114 User_102 User_87 User_47 User_5 \\\n", "3245 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3246 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3247 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3248 0.0 0.0 0.0 0 0 0.0 0.0 5.0 \n", "3249 0.0 7.0 0.0 0 0 0.0 0.0 6.0 \n", "3250 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3251 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3252 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3253 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "3254 0.0 0.0 0.0 0 0 0.0 0.0 0.0 \n", "\n", " User_44 User_33 User_34 User_35 User_29 User_26 User_74 User_42 \\\n", "3245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", " User_49 User_99 User_22 User_116 User_92 User_68 User_30 User_41 \\\n", "3245 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3246 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3247 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3248 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3249 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3250 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3251 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3252 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3253 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "3254 0.0 0.0 0.0 0 0.0 0.0 0 0.0 \n", "\n", " User_75 User_24 User_12 User_117 User_9 User_110 User_119 \\\n", "3245 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3246 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3247 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3248 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3249 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3250 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3251 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3252 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3253 0.0 0.0 0.0 0 0.0 0.0 0 \n", "3254 0.0 0.0 0.0 0 0.0 0.0 0 \n", "\n", " User_101 User_36 User_115 User_18 User_144 User_118 User_120 \\\n", "3245 0 0.0 0 0.0 0.0 0 0.0 \n", "3246 0 0.0 0 0.0 0.0 0 0.0 \n", "3247 0 0.0 0 0.0 0.0 0 0.0 \n", "3248 0 0.0 0 0.0 0.0 0 0.0 \n", "3249 0 0.0 0 0.0 0.0 0 0.0 \n", "3250 0 0.0 0 0.0 0.0 0 0.0 \n", "3251 0 0.0 0 0.0 0.0 0 0.0 \n", "3252 0 0.0 0 0.0 0.0 0 0.0 \n", "3253 0 0.0 0 0.0 0.0 0 0.0 \n", "3254 0 0.0 0 0.0 0.0 0 0.0 \n", "\n", " User_25 User_23 User_86 User_90 User_73 User_142 User_141 \\\n", "3245 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3246 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3247 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3248 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3249 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3250 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3251 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3252 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3253 0.0 0.0 0.0 0 0.0 0 0.0 \n", "3254 0.0 0.0 0.0 0 0.0 0 0.0 \n", "\n", " User_76 User_32 User_50 User_125 User_145 User_97 User_61 \\\n", "3245 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3246 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3247 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3248 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3249 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3250 0.0 0.0 0.0 0 0.0 0.0 8.0 \n", "3251 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3252 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3253 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "3254 0.0 0.0 0.0 0 0.0 0.0 0.0 \n", "\n", " User_39 User_148 User_127 User_128 User_46 User_121 User_103 \\\n", "3245 0.0 0 0 0 0.0 0 0 \n", "3246 0.0 0 0 0 0.0 0 0 \n", "3247 0.0 0 0 0 0.0 0 0 \n", "3248 0.0 0 0 0 0.0 0 0 \n", "3249 0.0 0 0 0 0.0 0 0 \n", "3250 0.0 0 0 0 0.0 0 0 \n", "3251 0.0 0 0 0 0.0 0 0 \n", "3252 0.0 0 0 0 0.0 0 0 \n", "3253 0.0 0 0 0 0.0 0 0 \n", "3254 0.0 0 0 0 0.0 0 0 \n", "\n", " User_122 User_60 User_83 User_40 User_53 User_48 User_146 \\\n", "3245 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3246 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3247 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3248 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3249 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3250 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3251 0 0.0 0.0 0.0 12.0 0.0 0 \n", "3252 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3253 0 0.0 0.0 0.0 0.0 0.0 0 \n", "3254 0 0.0 0.0 0.0 0.0 12.0 0 \n", "\n", " User_107 User_51 User_123 User_143 User_45 User_54 User_63 \\\n", "3245 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3246 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3247 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3248 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3249 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3250 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3251 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3252 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "3253 0.0 0.0 0 0.0 0.0 8.0 0.0 \n", "3254 0.0 0.0 0 0.0 0.0 0.0 0.0 \n", "\n", " User_124 User_138 User_93 User_64 User_126 User_58 User_57 \\\n", "3245 0 0.0 0 0.0 0 0.0 0.0 \n", "3246 0 0.0 0 0.0 0 0.0 0.0 \n", "3247 0 0.0 0 0.0 0 0.0 0.0 \n", "3248 0 0.0 0 0.0 0 0.0 0.0 \n", "3249 0 0.0 0 0.0 0 0.0 0.0 \n", "3250 0 0.0 0 0.0 0 0.0 0.0 \n", "3251 0 0.0 0 0.0 0 0.0 0.0 \n", "3252 0 0.0 0 0.0 0 0.0 0.0 \n", "3253 0 0.0 0 0.0 0 0.0 0.0 \n", "3254 0 0.0 0 0.0 0 0.0 0.0 \n", "\n", " User_106 User_79 User_62 User_78 User_133 User_82 User_55 \\\n", "3245 0 0.0 0.0 0.0 0 0 0.0 \n", "3246 0 0.0 0.0 0.0 0 0 0.0 \n", "3247 0 0.0 0.0 0.0 0 0 0.0 \n", "3248 0 0.0 0.0 0.0 0 0 0.0 \n", "3249 0 0.0 0.0 0.0 0 0 0.0 \n", "3250 0 0.0 0.0 0.0 0 0 0.0 \n", "3251 0 0.0 0.0 0.0 0 0 0.0 \n", "3252 0 0.0 0.0 0.0 0 0 0.0 \n", "3253 0 0.0 0.0 0.0 0 0 0.0 \n", "3254 0 0.0 0.0 0.0 0 0 0.0 \n", "\n", " User_66 User_139 User_56 User_91 User_111 User_59 User_132 \\\n", "3245 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3246 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3247 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3248 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3249 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3250 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3251 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3252 8.0 0 0.0 0.0 0 0.0 0.0 \n", "3253 0.0 0 0.0 0.0 0 0.0 0.0 \n", "3254 0.0 0 0.0 0.0 0 0.0 0.0 \n", "\n", " User_130 User_67 User_104 User_131 User_65 User_77 User_84 \\\n", "3245 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3246 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3247 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3248 0 0.0 9.0 0 0.0 0.0 2.0 \n", "3249 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3250 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3251 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3252 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3253 0 0.0 0.0 0 0.0 0.0 0.0 \n", "3254 0 0.0 0.0 0 0.0 0.0 0.0 \n", "\n", " User_80 User_96 User_136 User_129 User_69 User_134 \\\n", "3245 0.0 0.0 0 0 0 0 \n", "3246 12.0 0.0 0 0 0 0 \n", "3247 0.0 0.0 0 0 0 0 \n", "3248 2.0 0.0 0 0 0 0 \n", "3249 2.0 0.0 0 0 0 0 \n", "3250 0.0 0.0 0 0 0 0 \n", "3251 0.0 0.0 0 0 0 0 \n", "3252 0.0 0.0 0 0 0 0 \n", "3253 0.0 0.0 0 0 0 0 \n", "3254 0.0 0.0 0 0 0 0 \n", "\n", " A_Create Application complete A_Submitted complete \\\n", "3245 1 1.0 \n", "3246 1 0.0 \n", "3247 1 0.0 \n", "3248 1 0.0 \n", "3249 1 0.0 \n", "3250 1 1.0 \n", "3251 1 1.0 \n", "3252 1 1.0 \n", "3253 1 1.0 \n", "3254 1 0.0 \n", "\n", " W_Handle leads schedule W_Handle leads withdraw \\\n", "3245 1.0 1.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 1.0 1.0 \n", "3251 1.0 0.0 \n", "3252 1.0 1.0 \n", "3253 1.0 1.0 \n", "3254 0.0 0.0 \n", "\n", " W_Complete application schedule A_Concept complete \\\n", "3245 1 1 \n", "3246 1 1 \n", "3247 1 1 \n", "3248 1 1 \n", "3249 1 1 \n", "3250 1 1 \n", "3251 1 1 \n", "3252 1 1 \n", "3253 1 1 \n", "3254 1 1 \n", "\n", " W_Complete application start A_Accepted complete \\\n", "3245 1.0 1 \n", "3246 1.0 1 \n", "3247 1.0 1 \n", "3248 1.0 1 \n", "3249 1.0 1 \n", "3250 0.0 1 \n", "3251 1.0 1 \n", "3252 0.0 1 \n", "3253 0.0 1 \n", "3254 1.0 1 \n", "\n", " O_Create Offer complete O_Created complete \\\n", "3245 1 1 \n", "3246 1 1 \n", "3247 1 1 \n", "3248 1 1 \n", "3249 1 1 \n", "3250 1 1 \n", "3251 2 2 \n", "3252 1 1 \n", "3253 1 1 \n", "3254 1 1 \n", "\n", " O_Sent (mail and online) complete W_Complete application complete \\\n", "3245 1.0 1.0 \n", "3246 1.0 1.0 \n", "3247 1.0 1.0 \n", "3248 1.0 1.0 \n", "3249 1.0 0.0 \n", "3250 1.0 0.0 \n", "3251 2.0 1.0 \n", "3252 1.0 0.0 \n", "3253 1.0 0.0 \n", "3254 1.0 1.0 \n", "\n", " W_Call after offers schedule W_Call after offers start \\\n", "3245 1 1 \n", "3246 1 1 \n", "3247 1 1 \n", "3248 1 1 \n", "3249 1 1 \n", "3250 1 1 \n", "3251 1 1 \n", "3252 1 1 \n", "3253 1 1 \n", "3254 1 1 \n", "\n", " A_Complete complete W_Call after offers suspend \\\n", "3245 1 0 \n", "3246 1 0 \n", "3247 1 0 \n", "3248 1 0 \n", "3249 1 0 \n", "3250 1 0 \n", "3251 1 0 \n", "3252 1 0 \n", "3253 1 0 \n", "3254 1 0 \n", "\n", " W_Call after offers resume A_Cancelled complete O_Cancelled complete \\\n", "3245 0 0 0.0 \n", "3246 0 0 0.0 \n", "3247 0 0 0.0 \n", "3248 0 0 0.0 \n", "3249 0 0 0.0 \n", "3250 0 0 0.0 \n", "3251 0 0 0.0 \n", "3252 0 0 0.0 \n", "3253 0 0 0.0 \n", "3254 0 0 0.0 \n", "\n", " W_Call after offers ate_abort W_Complete application suspend \\\n", "3245 0 0.0 \n", "3246 0 0.0 \n", "3247 0 0.0 \n", "3248 0 3.0 \n", "3249 0 2.0 \n", "3250 0 0.0 \n", "3251 0 0.0 \n", "3252 0 0.0 \n", "3253 0 0.0 \n", "3254 0 0.0 \n", "\n", " W_Complete application resume W_Complete application ate_abort \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 3.0 0.0 \n", "3249 1.0 1.0 \n", "3250 0.0 0.0 \n", "3251 0.0 0.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " W_Validate application schedule W_Validate application start \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " A_Validating complete O_Returned complete \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Validate application suspend W_Validate application ate_abort \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Call incomplete files schedule W_Call incomplete files start \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " A_Incomplete complete W_Call incomplete files suspend \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Call incomplete files resume W_Call incomplete files ate_abort \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " O_Sent (online only) complete W_Handle leads start \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 0.0 0.0 \n", "3251 0.0 1.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " W_Handle leads complete W_Validate application resume \\\n", "3245 0.0 0 \n", "3246 0.0 0 \n", "3247 0.0 0 \n", "3248 0.0 0 \n", "3249 0.0 0 \n", "3250 0.0 0 \n", "3251 0.0 0 \n", "3252 0.0 0 \n", "3253 0.0 0 \n", "3254 0.0 0 \n", "\n", " W_Validate application complete W_Call incomplete files complete \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Complete application withdraw W_Call after offers complete \\\n", "3245 0.0 0 \n", "3246 0.0 0 \n", "3247 0.0 0 \n", "3248 0.0 0 \n", "3249 0.0 0 \n", "3250 1.0 0 \n", "3251 0.0 0 \n", "3252 1.0 0 \n", "3253 1.0 0 \n", "3254 0.0 0 \n", "\n", " W_Handle leads suspend W_Handle leads resume \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 0.0 0.0 \n", "3251 2.0 1.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " W_Assess potential fraud schedule W_Assess potential fraud start \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 0.0 0.0 \n", "3251 0.0 0.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " W_Assess potential fraud suspend W_Assess potential fraud resume \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 0.0 0.0 \n", "3251 0.0 0.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " W_Assess potential fraud complete W_Handle leads ate_abort \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 0.0 0.0 \n", "3251 0.0 1.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " W_Shortened completion schedule W_Shortened completion start \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Shortened completion suspend W_Shortened completion resume \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " O_Accepted complete A_Pending complete \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Personal Loan collection schedule W_Personal Loan collection start \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Personal Loan collection suspend W_Personal Loan collection resume \\\n", "3245 0 0 \n", "3246 0 0 \n", "3247 0 0 \n", "3248 0 0 \n", "3249 0 0 \n", "3250 0 0 \n", "3251 0 0 \n", "3252 0 0 \n", "3253 0 0 \n", "3254 0 0 \n", "\n", " W_Assess potential fraud ate_abort W_Assess potential fraud withdraw \\\n", "3245 0.0 0.0 \n", "3246 0.0 0.0 \n", "3247 0.0 0.0 \n", "3248 0.0 0.0 \n", "3249 0.0 0.0 \n", "3250 0.0 0.0 \n", "3251 0.0 0.0 \n", "3252 0.0 0.0 \n", "3253 0.0 0.0 \n", "3254 0.0 0.0 \n", "\n", " FirstWithdrawalAmount NumberOfTerms Accepted MonthlyCost Selected \\\n", "3245 20000.0 60.0 True 371.17 True \n", "3246 0.0 134.0 True 100.00 True \n", "3247 0.0 126.0 True 400.00 True \n", "3248 0.0 126.0 False 320.00 True \n", "3249 2000.0 134.0 True 130.00 True \n", "3250 0.0 82.0 True 500.00 True \n", "3251 30000.0 125.0 False 650.00 False \n", "3252 10000.0 44.0 True 249.58 True \n", "3253 5000.0 36.0 True 152.82 True \n", "3254 25000.0 60.0 False 461.78 False \n", "\n", " CreditScore OfferedAmount case:LoanGoal case:ApplicationType \\\n", "3245 878.0 20000.0 Car New credit \n", "3246 839.0 10000.0 Home improvement Limit raise \n", "3247 0.0 40000.0 Unknown Limit raise \n", "3248 0.0 32000.0 Unknown Limit raise \n", "3249 775.0 13000.0 Car Limit raise \n", "3250 733.0 35000.0 Car New credit \n", "3251 0.0 64500.0 Other, see explanation New credit \n", "3252 1083.0 10000.0 Car New credit \n", "3253 908.0 5000.0 Car New credit \n", "3254 0.0 25000.0 Car New credit \n", "\n", " case:RequestedAmount first_timestamp trace_duration \\\n", "3245 20000.0 2016-10-18 08:51:42.172000+00:00 170163.713 \n", "3246 10000.0 2016-10-18 09:04:18.477000+00:00 601.295 \n", "3247 0.0 2016-10-18 09:06:20.637000+00:00 150.016 \n", "3248 0.0 2016-10-18 09:30:06.339000+00:00 183303.148 \n", "3249 13000.0 2016-10-18 09:34:06.469000+00:00 266088.593 \n", "3250 35000.0 2016-10-18 10:31:35.256000+00:00 91691.652 \n", "3251 65000.0 2016-10-18 11:12:05.182000+00:00 167404.402 \n", "3252 10000.0 2016-10-18 11:24:50.857000+00:00 82687.083 \n", "3253 5000.0 2016-10-18 12:00:33.792000+00:00 89843.380 \n", "3254 25000.0 2016-10-18 12:02:09.032000+00:00 515.051 \n", "\n", " next_event \n", "3245 True \n", "3246 True \n", "3247 True \n", "3248 True \n", "3249 True \n", "3250 True \n", "3251 True \n", "3252 True \n", "3253 True \n", "3254 True " ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train_case.tail(10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.7 ('base')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "vscode": { "interpreter": { "hash": "207398d66480d5b2b9abbd127913c2d129a9922276615475dd81a0eedd9eb59f" } } }, "nbformat": 4, "nbformat_minor": 4 }