{ "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, ?it/s]/var/folders/nd/m2w3gccj0hx7zslrqlw6v9z80000gn/T/ipykernel_25522/4002999508.py:48: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n", " res_dict['trace_duration'] = (np.datetime64(row['time:timestamp']) - np.datetime64(res_dict['first_timestamp'])).item().total_seconds()\n", "100%|██████████| 3268/3268 [01:43<00:00, 31.62it/s]\n", "100%|██████████| 794/794 [00:07<00:00, 111.68it/s]\n" ] } ], "source": [ "result_columns = create_feature_columns(df_train)\n", "\n", "df_train_case = create_dataset_part4_first_xor(df_train, next_event=['A_Pending', 'A_Cancelled'], result_columns=result_columns)\n", "df_test_case = create_dataset_part4_first_xor(df_test, next_event=['A_Pending', 'A_Cancelled'], result_columns=result_columns)" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3255, 3268.8)" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train_case), len(df_train['case:concept:name'].unique()) * 0.2" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(16344, 16263)" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train['case:concept:name'].unique()), len(df_train.loc[df_train['concept:name'] == 'A_Complete'])" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [], "source": [ "df_train_case.to_csv('part_4_train_tt.csv', index=False)\n", "df_test_case.to_csv('part_4_test_tt.csv', index=False)" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | User_1 | \n", "User_19 | \n", "User_11 | \n", "User_17 | \n", "User_8 | \n", "User_3 | \n", "User_38 | \n", "User_113 | \n", "User_100 | \n", "User_28 | \n", "User_27 | \n", "User_43 | \n", "User_15 | \n", "User_16 | \n", "User_89 | \n", "User_112 | \n", "User_4 | \n", "User_71 | \n", "User_108 | \n", "User_37 | \n", "User_85 | \n", "User_7 | \n", "User_13 | \n", "User_20 | \n", "User_52 | \n", "User_2 | \n", "User_14 | \n", "User_31 | \n", "User_6 | \n", "User_95 | \n", "User_109 | \n", "User_70 | \n", "User_10 | \n", "User_21 | \n", "User_114 | \n", "User_102 | \n", "User_87 | \n", "User_47 | \n", "User_5 | \n", "User_44 | \n", "User_33 | \n", "User_34 | \n", "User_35 | \n", "User_29 | \n", "User_26 | \n", "User_74 | \n", "User_42 | \n", "User_49 | \n", "User_99 | \n", "User_22 | \n", "User_116 | \n", "User_92 | \n", "User_68 | \n", "User_30 | \n", "User_41 | \n", "User_75 | \n", "User_24 | \n", "User_12 | \n", "User_117 | \n", "User_9 | \n", "User_110 | \n", "User_119 | \n", "User_101 | \n", "User_36 | \n", "User_115 | \n", "User_18 | \n", "User_144 | \n", "User_118 | \n", "User_120 | \n", "User_25 | \n", "User_23 | \n", "User_86 | \n", "User_90 | \n", "User_73 | \n", "User_142 | \n", "User_141 | \n", "User_76 | \n", "User_32 | \n", "User_50 | \n", "User_125 | \n", "User_145 | \n", "User_97 | \n", "User_61 | \n", "User_39 | \n", "User_148 | \n", "User_127 | \n", "User_128 | \n", "User_46 | \n", "User_121 | \n", "User_103 | \n", "User_122 | \n", "User_60 | \n", "User_83 | \n", "User_40 | \n", "User_53 | \n", "User_48 | \n", "User_146 | \n", "User_107 | \n", "User_51 | \n", "User_123 | \n", "User_143 | \n", "User_45 | \n", "User_54 | \n", "User_63 | \n", "User_124 | \n", "User_138 | \n", "User_93 | \n", "User_64 | \n", "User_126 | \n", "User_58 | \n", "User_57 | \n", "User_106 | \n", "User_79 | \n", "User_62 | \n", "User_78 | \n", "User_133 | \n", "User_82 | \n", "User_55 | \n", "User_66 | \n", "User_139 | \n", "User_56 | \n", "User_91 | \n", "User_111 | \n", "User_59 | \n", "User_132 | \n", "User_130 | \n", "User_67 | \n", "User_104 | \n", "User_131 | \n", "User_65 | \n", "User_77 | \n", "User_84 | \n", "User_80 | \n", "User_96 | \n", "User_136 | \n", "User_129 | \n", "User_69 | \n", "User_134 | \n", "A_Create Application complete | \n", "A_Submitted complete | \n", "W_Handle leads schedule | \n", "W_Handle leads withdraw | \n", "W_Complete application schedule | \n", "A_Concept complete | \n", "W_Complete application start | \n", "A_Accepted complete | \n", "O_Create Offer complete | \n", "O_Created complete | \n", "O_Sent (mail and online) complete | \n", "W_Complete application complete | \n", "W_Call after offers schedule | \n", "W_Call after offers start | \n", "A_Complete complete | \n", "W_Call after offers suspend | \n", "W_Call after offers resume | \n", "A_Cancelled complete | \n", "O_Cancelled complete | \n", "W_Call after offers ate_abort | \n", "W_Complete application suspend | \n", "W_Complete application resume | \n", "W_Complete application ate_abort | \n", "W_Validate application schedule | \n", "W_Validate application start | \n", "A_Validating complete | \n", "O_Returned complete | \n", "W_Validate application suspend | \n", "W_Validate application ate_abort | \n", "W_Call incomplete files schedule | \n", "W_Call incomplete files start | \n", "A_Incomplete complete | \n", "W_Call incomplete files suspend | \n", "W_Call incomplete files resume | \n", "W_Call incomplete files ate_abort | \n", "O_Sent (online only) complete | \n", "W_Handle leads start | \n", "W_Handle leads complete | \n", "W_Validate application resume | \n", "W_Validate application complete | \n", "W_Call incomplete files complete | \n", "W_Complete application withdraw | \n", "W_Call after offers complete | \n", "W_Handle leads suspend | \n", "W_Handle leads resume | \n", "W_Assess potential fraud schedule | \n", "W_Assess potential fraud start | \n", "W_Assess potential fraud suspend | \n", "W_Assess potential fraud resume | \n", "W_Assess potential fraud complete | \n", "W_Handle leads ate_abort | \n", "W_Shortened completion schedule | \n", "W_Shortened completion start | \n", "W_Shortened completion suspend | \n", "W_Shortened completion resume | \n", "O_Accepted complete | \n", "A_Pending complete | \n", "W_Personal Loan collection schedule | \n", "W_Personal Loan collection start | \n", "W_Personal Loan collection suspend | \n", "W_Personal Loan collection resume | \n", "W_Assess potential fraud ate_abort | \n", "W_Assess potential fraud withdraw | \n", "FirstWithdrawalAmount | \n", "NumberOfTerms | \n", "Accepted | \n", "MonthlyCost | \n", "Selected | \n", "CreditScore | \n", "OfferedAmount | \n", "case:LoanGoal | \n", "case:ApplicationType | \n", "case:RequestedAmount | \n", "first_timestamp | \n", "trace_duration | \n", "next_event | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3245 | \n", "6.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "9.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "20000.0 | \n", "60.0 | \n", "True | \n", "371.17 | \n", "True | \n", "878.0 | \n", "20000.0 | \n", "Car | \n", "New credit | \n", "20000.0 | \n", "2016-10-18 08:51:42.172000+00:00 | \n", "170163.713 | \n", "True | \n", "
| 3246 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "12.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "134.0 | \n", "True | \n", "100.00 | \n", "True | \n", "839.0 | \n", "10000.0 | \n", "Home improvement | \n", "Limit raise | \n", "10000.0 | \n", "2016-10-18 09:04:18.477000+00:00 | \n", "601.295 | \n", "True | \n", "
| 3247 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "12.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "126.0 | \n", "True | \n", "400.00 | \n", "True | \n", "0.0 | \n", "40000.0 | \n", "Unknown | \n", "Limit raise | \n", "0.0 | \n", "2016-10-18 09:06:20.637000+00:00 | \n", "150.016 | \n", "True | \n", "
| 3248 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "5.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "9.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "2.0 | \n", "2.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "3.0 | \n", "3.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "126.0 | \n", "False | \n", "320.00 | \n", "True | \n", "0.0 | \n", "32000.0 | \n", "Unknown | \n", "Limit raise | \n", "0.0 | \n", "2016-10-18 09:30:06.339000+00:00 | \n", "183303.148 | \n", "True | \n", "
| 3249 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "7.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "6.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "2.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "2.0 | \n", "1.0 | \n", "1.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "2000.0 | \n", "134.0 | \n", "True | \n", "130.00 | \n", "True | \n", "775.0 | \n", "13000.0 | \n", "Car | \n", "Limit raise | \n", "13000.0 | \n", "2016-10-18 09:34:06.469000+00:00 | \n", "266088.593 | \n", "True | \n", "
| 3250 | \n", "6.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "8.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "1.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "82.0 | \n", "True | \n", "500.00 | \n", "True | \n", "733.0 | \n", "35000.0 | \n", "Car | \n", "New credit | \n", "35000.0 | \n", "2016-10-18 10:31:35.256000+00:00 | \n", "91691.652 | \n", "True | \n", "
| 3251 | \n", "6.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "4.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "12.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "2 | \n", "2 | \n", "2.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "2.0 | \n", "1.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "30000.0 | \n", "125.0 | \n", "False | \n", "650.00 | \n", "False | \n", "0.0 | \n", "64500.0 | \n", "Other, see explanation | \n", "New credit | \n", "65000.0 | \n", "2016-10-18 11:12:05.182000+00:00 | \n", "167404.402 | \n", "True | \n", "
| 3252 | \n", "6.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "8.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "1.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "10000.0 | \n", "44.0 | \n", "True | \n", "249.58 | \n", "True | \n", "1083.0 | \n", "10000.0 | \n", "Car | \n", "New credit | \n", "10000.0 | \n", "2016-10-18 11:24:50.857000+00:00 | \n", "82687.083 | \n", "True | \n", "
| 3253 | \n", "6.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "8.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "1.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "5000.0 | \n", "36.0 | \n", "True | \n", "152.82 | \n", "True | \n", "908.0 | \n", "5000.0 | \n", "Car | \n", "New credit | \n", "5000.0 | \n", "2016-10-18 12:00:33.792000+00:00 | \n", "89843.380 | \n", "True | \n", "
| 3254 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "12.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "1.0 | \n", "1.0 | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0.0 | \n", "0.0 | \n", "25000.0 | \n", "60.0 | \n", "False | \n", "461.78 | \n", "False | \n", "0.0 | \n", "25000.0 | \n", "Car | \n", "New credit | \n", "25000.0 | \n", "2016-10-18 12:02:09.032000+00:00 | \n", "515.051 | \n", "True | \n", "