{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Project: Artificial Financial Advisor on Peer-to-Peer lending -- Part 1\n", "\n", "--by Lu Tang\n", "\n", "## Introduction\n", "\n", "LendingClub is the first and largest online peer-to-peer ('P2P') platform to facilitate lending and borrowing of unsecured loans. As explained by Wikipedia:\n", "\n", "- Lending Club enables borrowers to create unsecured personal loans between $1,000 and $40,000. The standard loan period is three years. Investors can search and browse the loan listings on Lending Club website and select loans that they want to invest in based on the information supplied about the borrower, amount of loan, loan grade, and loan purpose. Investors make money from interest. Lending Club makes money by charging borrowers an origination fee and investors a service fee.\n", "\n", "**The goal of this project**: Build a machine learning model that can help investor reduce the investment risk by building a portfolio with selected loans.\n", "\n", "**Data Source** : Personal loan payment dataset from LendingClub Corp, LC, available on [LendingClub Statistics](https://www.lendingclub.com/info/download-data.action)\n", "\n", "The dataset I am working on is from 2007 to 2019 quarter 2; In total, there are about 2.5 millions of loans in this data. Each row is one loan, and it covers an extensive amount of information on the borrower's side that was originally available to lenders when they made investment choices. \n", "\n", "**Note**: I used the all the data available including the recent loan data for two reasons:\n", "\n", "1. I want to analyze all the loan data to find insight about default rate and year trends.\n", "2. After researching, I found that for the loans that are issued in recent years, although the loan term is either 36 months or 60 months, there are many loans that are pre-paid or charged off before it is expired. Those are still the data that I can use in the model. \n", "\n", "The whole projects are separated in two parts, and this is part 2. \n", "\n", "- Part 1 Understanding and Cleaning data, Identifying investment problem\n", "\n", "- Part 2 Choosing the best model for investors\n", "\n", "## Part 1 Understanding and Cleaning data, Identifying investment problem\n", "\n", "## Table of Contents\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Import Python libraries and make general settings:**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# import library\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import seaborn as sns\n", "\n", "# to make better chart\n", "sns.set_style('whitegrid')\n", "plt.figure(figsize = (10,6))\n", "sns.despine(left=True, bottom=True)\n", "\n", "# to avoid warnings\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "# Pandas options\n", "pd.set_option('display.max_colwidth', 1000, 'display.max_rows', None, 'display.max_columns', None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 1. Understanding and Visualizing data\n", "\n", "Before we load data, let's view the data dictionary, this can be found at the bottom of [Lending loop statistic website](https://www.lendingclub.com/info/download-data.action)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.1 View the data dictionary**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows in the data dictionary is: 153\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LoanStatNewDescription
0acc_now_delinqThe number of accounts on which the borrower is now delinquent.
1acc_open_past_24mthsNumber of trades opened in past 24 months.
2addr_stateThe state provided by the borrower in the loan application
3all_utilBalance to credit limit on all trades
4annual_incThe self-reported annual income provided by the borrower during registration.
\n", "
" ], "text/plain": [ " LoanStatNew \\\n", "0 acc_now_delinq \n", "1 acc_open_past_24mths \n", "2 addr_state \n", "3 all_util \n", "4 annual_inc \n", "\n", " Description \n", "0 The number of accounts on which the borrower is now delinquent. \n", "1 Number of trades opened in past 24 months. \n", "2 The state provided by the borrower in the loan application \n", "3 Balance to credit limit on all trades \n", "4 The self-reported annual income provided by the borrower during registration. " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load data dictionary\n", "data_dic = pd.read_excel('LCDataDictionary.xlsx')\n", "\n", "# view how many columns it descripes\n", "print('The number of rows in the data dictionary is: ', data_dic.shape[0])\n", "\n", "# view first 5 rows\n", "data_dic.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 152 column description. To save space, I didn't show all the description, Click [here](https://docs.google.com/spreadsheets/d/191B2yJ4H1ZPXq0_ByhUgWMFZOYem5jFz0Y3by_7YBY4/edit#gid=2081333097) to view what does each column mean.\n", "\n", "We don't have to dig deep for every column for now, but we will need to review it after a few cleaning." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After researching the data dictionary, I decided that **`loan_status` is my target column**, since it's the only column that directly describes if a loan was paid off on time, had delayed payments, or was defaulted on the borrower. \n", "\n", "There are 8 different possible values for the `loan_status` column. We can read about most of the different loan status on the [Lending Club webste](https://help.lendingclub.com/hc/en-us/articles/215488038-What-do-the-different-Note-statuses-mean-). The two values that start with \"Does not meet the credit policy\" aren't explained unfortunately. A quick Google search takes us to explanations from the lending community [here](https://forum.lendacademy.com/?topic=2427.msg20813#msg20813)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.2 Loading data files from different years**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I have downloaded all the data available from [Lending Club Statistic](https://www.lendingclub.com/info/download-data.action). By the time of this project, I have data from 2007 to 2019 Q2; However the datastes are in different files, let's first load all of them and view the first rows and check the shape of the dataset. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Let's first read the oldest data file, i.e. loan informations from 2007 to 2011**" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idmember_idloan_amntfunded_amntfunded_amnt_invtermint_rateinstallmentgradesub_gradeemp_titleemp_lengthhome_ownershipannual_incverification_statusissue_dloan_statuspymnt_planurldescpurposetitlezip_codeaddr_statedtidelinq_2yrsearliest_cr_lineinq_last_6mthsmths_since_last_delinqmths_since_last_recordopen_accpub_recrevol_balrevol_utiltotal_accinitial_list_statusout_prncpout_prncp_invtotal_pymnttotal_pymnt_invtotal_rec_prncptotal_rec_inttotal_rec_late_feerecoveriescollection_recovery_feelast_pymnt_dlast_pymnt_amntnext_pymnt_dlast_credit_pull_dcollections_12_mths_ex_medmths_since_last_major_derogpolicy_codeapplication_typeannual_inc_jointdti_jointverification_status_jointacc_now_delinqtot_coll_amttot_cur_balopen_acc_6mopen_act_ilopen_il_12mopen_il_24mmths_since_rcnt_iltotal_bal_ilil_utilopen_rv_12mopen_rv_24mmax_bal_bcall_utiltotal_rev_hi_liminq_fitotal_cu_tlinq_last_12macc_open_past_24mthsavg_cur_balbc_open_to_buybc_utilchargeoff_within_12_mthsdelinq_amntmo_sin_old_il_acctmo_sin_old_rev_tl_opmo_sin_rcnt_rev_tl_opmo_sin_rcnt_tlmort_accmths_since_recent_bcmths_since_recent_bc_dlqmths_since_recent_inqmths_since_recent_revol_delinqnum_accts_ever_120_pdnum_actv_bc_tlnum_actv_rev_tlnum_bc_satsnum_bc_tlnum_il_tlnum_op_rev_tlnum_rev_acctsnum_rev_tl_bal_gt_0num_satsnum_tl_120dpd_2mnum_tl_30dpdnum_tl_90g_dpd_24mnum_tl_op_past_12mpct_tl_nvr_dlqpercent_bc_gt_75pub_rec_bankruptciestax_lienstot_hi_cred_limtotal_bal_ex_morttotal_bc_limittotal_il_high_credit_limitrevol_bal_jointsec_app_earliest_cr_linesec_app_inq_last_6mthssec_app_mort_accsec_app_open_accsec_app_revol_utilsec_app_open_act_ilsec_app_num_rev_acctssec_app_chargeoff_within_12_mthssec_app_collections_12_mths_ex_medsec_app_mths_since_last_major_deroghardship_flaghardship_typehardship_reasonhardship_statusdeferral_termhardship_amounthardship_start_datehardship_end_datepayment_plan_start_datehardship_lengthhardship_dpdhardship_loan_statusorig_projected_additional_accrued_interesthardship_payoff_balance_amounthardship_last_payment_amountdebt_settlement_flagdebt_settlement_flag_datesettlement_statussettlement_datesettlement_amountsettlement_percentagesettlement_term
0NaNNaN5000.05000.04975.036 months10.65%162.87BB2NaN10+ yearsRENT24000.0VerifiedDec-2011Fully PaidnNaNBorrower added on 12/22/11 > I need to upgrade my business technologies.<br>credit_cardComputer860xxAZ27.650.0Jan-19851.0NaNNaN3.00.013648.083.7%9.0f0.00.05863.1551875833.845000.0863.160.00.00.0Jan-2015171.62NaNMay-20190.0NaN1.0IndividualNaNNaNNaN0.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN0.00.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN0.00.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " id member_id loan_amnt funded_amnt funded_amnt_inv term \\\n", "0 NaN NaN 5000.0 5000.0 4975.0 36 months \n", "\n", " int_rate installment grade sub_grade emp_title emp_length home_ownership \\\n", "0 10.65% 162.87 B B2 NaN 10+ years RENT \n", "\n", " annual_inc verification_status issue_d loan_status pymnt_plan url \\\n", "0 24000.0 Verified Dec-2011 Fully Paid n NaN \n", "\n", " desc \\\n", "0 Borrower added on 12/22/11 > I need to upgrade my business technologies.
\n", "\n", " purpose title zip_code addr_state dti delinq_2yrs \\\n", "0 credit_card Computer 860xx AZ 27.65 0.0 \n", "\n", " earliest_cr_line inq_last_6mths mths_since_last_delinq \\\n", "0 Jan-1985 1.0 NaN \n", "\n", " mths_since_last_record open_acc pub_rec revol_bal revol_util total_acc \\\n", "0 NaN 3.0 0.0 13648.0 83.7% 9.0 \n", "\n", " initial_list_status out_prncp out_prncp_inv total_pymnt total_pymnt_inv \\\n", "0 f 0.0 0.0 5863.155187 5833.84 \n", "\n", " total_rec_prncp total_rec_int total_rec_late_fee recoveries \\\n", "0 5000.0 863.16 0.0 0.0 \n", "\n", " collection_recovery_fee last_pymnt_d last_pymnt_amnt next_pymnt_d \\\n", "0 0.0 Jan-2015 171.62 NaN \n", "\n", " last_credit_pull_d collections_12_mths_ex_med mths_since_last_major_derog \\\n", "0 May-2019 0.0 NaN \n", "\n", " policy_code application_type annual_inc_joint dti_joint \\\n", "0 1.0 Individual NaN NaN \n", "\n", " verification_status_joint acc_now_delinq tot_coll_amt tot_cur_bal \\\n", "0 NaN 0.0 NaN NaN \n", "\n", " open_acc_6m open_act_il open_il_12m open_il_24m mths_since_rcnt_il \\\n", "0 NaN NaN NaN NaN NaN \n", "\n", " total_bal_il il_util open_rv_12m open_rv_24m max_bal_bc all_util \\\n", "0 NaN NaN NaN NaN NaN NaN \n", "\n", " total_rev_hi_lim inq_fi total_cu_tl inq_last_12m acc_open_past_24mths \\\n", "0 NaN NaN NaN NaN NaN \n", "\n", " avg_cur_bal bc_open_to_buy bc_util chargeoff_within_12_mths \\\n", "0 NaN NaN NaN 0.0 \n", "\n", " delinq_amnt mo_sin_old_il_acct mo_sin_old_rev_tl_op \\\n", "0 0.0 NaN NaN \n", "\n", " mo_sin_rcnt_rev_tl_op mo_sin_rcnt_tl mort_acc mths_since_recent_bc \\\n", "0 NaN NaN NaN NaN \n", "\n", " mths_since_recent_bc_dlq mths_since_recent_inq \\\n", "0 NaN NaN \n", "\n", " mths_since_recent_revol_delinq num_accts_ever_120_pd num_actv_bc_tl \\\n", "0 NaN NaN NaN \n", "\n", " num_actv_rev_tl num_bc_sats num_bc_tl num_il_tl num_op_rev_tl \\\n", "0 NaN NaN NaN NaN NaN \n", "\n", " num_rev_accts num_rev_tl_bal_gt_0 num_sats num_tl_120dpd_2m \\\n", "0 NaN NaN NaN NaN \n", "\n", " num_tl_30dpd num_tl_90g_dpd_24m num_tl_op_past_12m pct_tl_nvr_dlq \\\n", "0 NaN NaN NaN NaN \n", "\n", " percent_bc_gt_75 pub_rec_bankruptcies tax_liens tot_hi_cred_lim \\\n", "0 NaN 0.0 0.0 NaN \n", "\n", " total_bal_ex_mort total_bc_limit total_il_high_credit_limit \\\n", "0 NaN NaN NaN \n", "\n", " revol_bal_joint sec_app_earliest_cr_line sec_app_inq_last_6mths \\\n", "0 NaN NaN NaN \n", "\n", " sec_app_mort_acc sec_app_open_acc sec_app_revol_util \\\n", "0 NaN NaN NaN \n", "\n", " sec_app_open_act_il sec_app_num_rev_accts \\\n", "0 NaN NaN \n", "\n", " sec_app_chargeoff_within_12_mths sec_app_collections_12_mths_ex_med \\\n", "0 NaN NaN \n", "\n", " sec_app_mths_since_last_major_derog hardship_flag hardship_type \\\n", "0 NaN N NaN \n", "\n", " hardship_reason hardship_status deferral_term hardship_amount \\\n", "0 NaN NaN NaN NaN \n", "\n", " hardship_start_date hardship_end_date payment_plan_start_date \\\n", "0 NaN NaN NaN \n", "\n", " hardship_length hardship_dpd hardship_loan_status \\\n", "0 NaN NaN NaN \n", "\n", " orig_projected_additional_accrued_interest hardship_payoff_balance_amount \\\n", "0 NaN NaN \n", "\n", " hardship_last_payment_amount debt_settlement_flag \\\n", "0 NaN N \n", "\n", " debt_settlement_flag_date settlement_status settlement_date \\\n", "0 NaN NaN NaN \n", "\n", " settlement_amount settlement_percentage settlement_term \n", "0 NaN NaN NaN " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns is: (42538, 144)\n", "The value of loan status in this dataset is: \n" ] }, { "data": { "text/plain": [ "Fully Paid 34116\n", "Charged Off 5670\n", "Does not meet the credit policy. Status:Fully Paid 1988\n", "Does not meet the credit policy. Status:Charged Off 761\n", "Name: loan_status, dtype: int64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load the data from 2007-2011\n", "# the first row (row number 0) is only one column, which contains Notes offered by Prospectus (https://www.lendingclub.com/info/prospectus.action)\n", "# the second row is actually the columns name, that is wht header=1\n", "loans_07_11=pd.read_csv('LoanStats3a.csv', header=1) \n", "\n", "# view first row\n", "display(loans_07_11.head(1))\n", "\n", "# check the row and columns number\n", "print('The number of rows and columns is: ', loans_07_11.shape)\n", "\n", "print('The value of loan status in this dataset is: ')\n", "# view the loan status in this dataset\n", "loans_07_11['loan_status'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- As expected, since all the loans in this year range are expired, no current loans.\n", "- The data is not in a format that can be used to analyze or machine learning, we will clean it later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Now let's read the most recent data file, i.e. loan informations for 2009 Quarter 2**" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idmember_idloan_amntfunded_amntfunded_amnt_invtermint_rateinstallmentgradesub_gradeemp_titleemp_lengthhome_ownershipannual_incverification_statusissue_dloan_statuspymnt_planurldescpurposetitlezip_codeaddr_statedtidelinq_2yrsearliest_cr_lineinq_last_6mthsmths_since_last_delinqmths_since_last_recordopen_accpub_recrevol_balrevol_utiltotal_accinitial_list_statusout_prncpout_prncp_invtotal_pymnttotal_pymnt_invtotal_rec_prncptotal_rec_inttotal_rec_late_feerecoveriescollection_recovery_feelast_pymnt_dlast_pymnt_amntnext_pymnt_dlast_credit_pull_dcollections_12_mths_ex_medmths_since_last_major_derogpolicy_codeapplication_typeannual_inc_jointdti_jointverification_status_jointacc_now_delinqtot_coll_amttot_cur_balopen_acc_6mopen_act_ilopen_il_12mopen_il_24mmths_since_rcnt_iltotal_bal_ilil_utilopen_rv_12mopen_rv_24mmax_bal_bcall_utiltotal_rev_hi_liminq_fitotal_cu_tlinq_last_12macc_open_past_24mthsavg_cur_balbc_open_to_buybc_utilchargeoff_within_12_mthsdelinq_amntmo_sin_old_il_acctmo_sin_old_rev_tl_opmo_sin_rcnt_rev_tl_opmo_sin_rcnt_tlmort_accmths_since_recent_bcmths_since_recent_bc_dlqmths_since_recent_inqmths_since_recent_revol_delinqnum_accts_ever_120_pdnum_actv_bc_tlnum_actv_rev_tlnum_bc_satsnum_bc_tlnum_il_tlnum_op_rev_tlnum_rev_acctsnum_rev_tl_bal_gt_0num_satsnum_tl_120dpd_2mnum_tl_30dpdnum_tl_90g_dpd_24mnum_tl_op_past_12mpct_tl_nvr_dlqpercent_bc_gt_75pub_rec_bankruptciestax_lienstot_hi_cred_limtotal_bal_ex_morttotal_bc_limittotal_il_high_credit_limitrevol_bal_jointsec_app_earliest_cr_linesec_app_inq_last_6mthssec_app_mort_accsec_app_open_accsec_app_revol_utilsec_app_open_act_ilsec_app_num_rev_acctssec_app_chargeoff_within_12_mthssec_app_collections_12_mths_ex_medsec_app_mths_since_last_major_deroghardship_flaghardship_typehardship_reasonhardship_statusdeferral_termhardship_amounthardship_start_datehardship_end_datepayment_plan_start_datehardship_lengthhardship_dpdhardship_loan_statusorig_projected_additional_accrued_interesthardship_payoff_balance_amounthardship_last_payment_amountdebt_settlement_flagdebt_settlement_flag_datesettlement_statussettlement_datesettlement_amountsettlement_percentagesettlement_term
0NaNNaN32000.032000.032000.060 months16.95%794.43CC4Crane Operator10+ yearsMORTGAGE90000.0Not VerifiedJun-2019IssuednNaNNaNdebt_consolidationDebt consolidation604xxIL34.010.0Jan-19970.0NaNNaN6.00.066227.093.3%11.0w32000.032000.00.00.00.00.00.00.00.0NaN0.0Jul-2019Jul-20190.0NaN1.0IndividualNaNNaNNaN0.00.0153731.00.01.00.00.038.035008.0NaN0.00.029475.093.071000.00.00.00.00.025622.04773.093.30.00.0131.0269.069.038.01.069.0NaNNaNNaN0.04.04.04.05.04.04.06.04.06.00.00.00.00.0100.0100.00.00.0217834.0101235.071000.069034.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " id member_id loan_amnt funded_amnt funded_amnt_inv term \\\n", "0 NaN NaN 32000.0 32000.0 32000.0 60 months \n", "\n", " int_rate installment grade sub_grade emp_title emp_length \\\n", "0 16.95% 794.43 C C4 Crane Operator 10+ years \n", "\n", " home_ownership annual_inc verification_status issue_d loan_status \\\n", "0 MORTGAGE 90000.0 Not Verified Jun-2019 Issued \n", "\n", " pymnt_plan url desc purpose title zip_code \\\n", "0 n NaN NaN debt_consolidation Debt consolidation 604xx \n", "\n", " addr_state dti delinq_2yrs earliest_cr_line inq_last_6mths \\\n", "0 IL 34.01 0.0 Jan-1997 0.0 \n", "\n", " mths_since_last_delinq mths_since_last_record open_acc pub_rec \\\n", "0 NaN NaN 6.0 0.0 \n", "\n", " revol_bal revol_util total_acc initial_list_status out_prncp \\\n", "0 66227.0 93.3% 11.0 w 32000.0 \n", "\n", " out_prncp_inv total_pymnt total_pymnt_inv total_rec_prncp \\\n", "0 32000.0 0.0 0.0 0.0 \n", "\n", " total_rec_int total_rec_late_fee recoveries collection_recovery_fee \\\n", "0 0.0 0.0 0.0 0.0 \n", "\n", " last_pymnt_d last_pymnt_amnt next_pymnt_d last_credit_pull_d \\\n", "0 NaN 0.0 Jul-2019 Jul-2019 \n", "\n", " collections_12_mths_ex_med mths_since_last_major_derog policy_code \\\n", "0 0.0 NaN 1.0 \n", "\n", " application_type annual_inc_joint dti_joint verification_status_joint \\\n", "0 Individual NaN NaN NaN \n", "\n", " acc_now_delinq tot_coll_amt tot_cur_bal open_acc_6m open_act_il \\\n", "0 0.0 0.0 153731.0 0.0 1.0 \n", "\n", " open_il_12m open_il_24m mths_since_rcnt_il total_bal_il il_util \\\n", "0 0.0 0.0 38.0 35008.0 NaN \n", "\n", " open_rv_12m open_rv_24m max_bal_bc all_util total_rev_hi_lim inq_fi \\\n", "0 0.0 0.0 29475.0 93.0 71000.0 0.0 \n", "\n", " total_cu_tl inq_last_12m acc_open_past_24mths avg_cur_bal \\\n", "0 0.0 0.0 0.0 25622.0 \n", "\n", " bc_open_to_buy bc_util chargeoff_within_12_mths delinq_amnt \\\n", "0 4773.0 93.3 0.0 0.0 \n", "\n", " mo_sin_old_il_acct mo_sin_old_rev_tl_op mo_sin_rcnt_rev_tl_op \\\n", "0 131.0 269.0 69.0 \n", "\n", " mo_sin_rcnt_tl mort_acc mths_since_recent_bc mths_since_recent_bc_dlq \\\n", "0 38.0 1.0 69.0 NaN \n", "\n", " mths_since_recent_inq mths_since_recent_revol_delinq \\\n", "0 NaN NaN \n", "\n", " num_accts_ever_120_pd num_actv_bc_tl num_actv_rev_tl num_bc_sats \\\n", "0 0.0 4.0 4.0 4.0 \n", "\n", " num_bc_tl num_il_tl num_op_rev_tl num_rev_accts num_rev_tl_bal_gt_0 \\\n", "0 5.0 4.0 4.0 6.0 4.0 \n", "\n", " num_sats num_tl_120dpd_2m num_tl_30dpd num_tl_90g_dpd_24m \\\n", "0 6.0 0.0 0.0 0.0 \n", "\n", " num_tl_op_past_12m pct_tl_nvr_dlq percent_bc_gt_75 pub_rec_bankruptcies \\\n", "0 0.0 100.0 100.0 0.0 \n", "\n", " tax_liens tot_hi_cred_lim total_bal_ex_mort total_bc_limit \\\n", "0 0.0 217834.0 101235.0 71000.0 \n", "\n", " total_il_high_credit_limit revol_bal_joint sec_app_earliest_cr_line \\\n", "0 69034.0 NaN NaN \n", "\n", " sec_app_inq_last_6mths sec_app_mort_acc sec_app_open_acc \\\n", "0 NaN NaN NaN \n", "\n", " sec_app_revol_util sec_app_open_act_il sec_app_num_rev_accts \\\n", "0 NaN NaN NaN \n", "\n", " sec_app_chargeoff_within_12_mths sec_app_collections_12_mths_ex_med \\\n", "0 NaN NaN \n", "\n", " sec_app_mths_since_last_major_derog hardship_flag hardship_type \\\n", "0 NaN N NaN \n", "\n", " hardship_reason hardship_status deferral_term hardship_amount \\\n", "0 NaN NaN NaN NaN \n", "\n", " hardship_start_date hardship_end_date payment_plan_start_date \\\n", "0 NaN NaN NaN \n", "\n", " hardship_length hardship_dpd hardship_loan_status \\\n", "0 NaN NaN NaN \n", "\n", " orig_projected_additional_accrued_interest hardship_payoff_balance_amount \\\n", "0 NaN NaN \n", "\n", " hardship_last_payment_amount debt_settlement_flag \\\n", "0 NaN N \n", "\n", " debt_settlement_flag_date settlement_status settlement_date \\\n", "0 NaN NaN NaN \n", "\n", " settlement_amount settlement_percentage settlement_term \n", "0 NaN NaN NaN " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns is: (131141, 144)\n", "The value of loan status in this dataset is: \n" ] }, { "data": { "text/plain": [ "Current 119074\n", "Issued 8713\n", "Fully Paid 2502\n", "In Grace Period 427\n", "Late (31-120 days) 221\n", "Late (16-30 days) 180\n", "Charged Off 22\n", "Name: loan_status, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load the data from 2009 quarter 2\n", "loans_2019_q2=pd.read_csv('LoanStats_2019Q2.csv',header=1)\n", "\n", "# view first row\n", "display(loans_2019_q2.head(1))\n", "\n", "# check the row and columns number\n", "print('The number of rows and columns is: ',loans_2019_q2.shape)\n", "\n", "# view the loan status in this dataset\n", "print('The value of loan status in this dataset is: ')\n", "loans_2019_q2['loan_status'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Since all the loans this data file are from 2019 Quarter 2, most loans have status as **Current**, which means the loan is up to date on all outstanding payments and we don't know whether they will be paid off or charged off. Some loans are **Fully Paid**, it is more likely that they are **pre-paid**. Again, We can read about most of the different loan statuses on the [Lending Club webste](https://help.lendingclub.com/hc/en-us/articles/215488038-What-do-the-different-Note-statuses-mean-). \n", "\n", "Next step we will continue load all the other dataset and then combine them all together. (To save space, I will not show all other dataset one by one; I have viewed all of them and found that they all have the same number of columns and same column names, so all the dataset can be combined together using pd.concat)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# load the data for 2012 and 2013\n", "loans_12_13=pd.read_csv('LoanStats3b.csv', header=1)\n", "\n", "# load the data for 2014\n", "loans_2014=pd.read_csv('LoanStats3c.csv', header=1)\n", "\n", "# load the data for 2015\n", "loans_2015=pd.read_csv('LoanStats3d.csv',header=1)\n", "\n", "# load the data for 2016 Quarter 1\n", "loans_2016_q1=pd.read_csv('LoanStats_2016Q1.csv',header=1)\n", "\n", "# load the data for 2016 Quarter 2\n", "loans_2016_q2=pd.read_csv('LoanStats_2016Q2.csv',header=1)\n", "\n", "# load the data for 2016 Quarter 3\n", "loans_2016_q3=pd.read_csv('LoanStats_2016Q3.csv',header=1)\n", "\n", "# load the data for 2016 Quarter 4\n", "loans_2016_q4=pd.read_csv('LoanStats_2016Q4.csv',header=1)\n", "\n", "# load the data for 2017 Quarter 1\n", "loans_2017_q1=pd.read_csv('LoanStats_2017Q1.csv',header=1)\n", "\n", "# load the data for 2017 Quarter 2\n", "loans_2017_q2=pd.read_csv('LoanStats_2017Q2.csv',header=1)\n", "\n", "# load the data for 2017 Quarter 3\n", "loans_2017_q3=pd.read_csv('LoanStats_2017Q3.csv',header=1)\n", "\n", "# load the data for 2017 Quarter 4\n", "loans_2017_q4=pd.read_csv('LoanStats_2017Q4.csv',header=1)\n", "\n", "# load the data for 2018 Quarter 1\n", "loans_2018_q1=pd.read_csv('LoanStats_2018Q1.csv',header=1)\n", "\n", "# load the data for 2018 Quarter 2\n", "loans_2018_q2=pd.read_csv('LoanStats_2018Q2.csv',header=1)\n", "\n", "# load the data for 2018 Quarter 3\n", "loans_2018_q3=pd.read_csv('LoanStats_2018Q3.csv',header=1)\n", "\n", "# load the data for 2018 Quarter 4\n", "loans_2018_q4=pd.read_csv('LoanStats_2018Q4.csv',header=1)\n", "\n", "# load the data for 2019 Quarter 1\n", "loans_2019_q1=pd.read_csv('LoanStats_2019Q1.csv',header=1)\n", "\n", "# load the data for 2019 Quarter 2\n", "loans_2019_q2=pd.read_csv('LoanStats_2019Q2.csv',header=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.3 Combining all the data files from different years into one files.**" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns is: (2507519, 144)\n" ] } ], "source": [ "# combine the files together\n", "loans_2007_2019 = pd.concat([loans_07_11, loans_12_13, loans_2014, loans_2015, loans_2016_q1, loans_2016_q2,\n", " loans_2016_q3, loans_2016_q4, loans_2017_q1, loans_2017_q2, loans_2017_q3, loans_2017_q4,\n", " loans_2018_q1, loans_2018_q2, loans_2018_q3, loans_2018_q4, loans_2019_q1, loans_2019_q2])\n", "print('The number of rows and columns is: ', loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Great! Now we have a massive dataset that contains roughly 2.5 millions loans information. \n", "\n", "**Aggregate and plot our data**\n", "\n", "I decided to do this before cleaning because cleaning will remove some rows and made our plot less accurate. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.4 Visualize the number of loans with the status of fully paid and charged off**\n", "\n", "Since we're interested in being able to predict which of these 2 values a loan will fall under, we can treat the problem as a binary classification one. We will need to remove all the loans that don't contain either Fully Paid and Charged Off as the loan's status. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Remove all rows that contain values other than Fully Paid or Charged Off for the loan_status column\n", "loans_paid_or_default = loans_2007_2019.loc[loans_2007_2019['loan_status'].isin(['Fully Paid', 'Charged Off'])]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'The number of loans for each status')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# code for plotting bar chart for loan status:\n", "plt.figure(figsize=(6,6))\n", "plt.bar(loans_paid_or_default['loan_status'].value_counts().index, loans_paid_or_default['loan_status'].value_counts().values)\n", "plt.title('The number of Fully-paid loans vs Charged-off from 2007 to 2019 Quater2')\n", "plt.xlabel('Loan Status')\n", "plt.ylabel('The number of loans for each status')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Fully Paid 1194845\n", "Charged Off 290679\n", "Name: loan_status, dtype: int64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loans_paid_or_default['loan_status'].value_counts()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The charged off rate for all the loans from 2007 to 2019 is: 0.19567438829665493\n" ] } ], "source": [ "charged_off_rate = 290679/(290679+1194845)\n", "\n", "print('The charged off rate for all the loans from 2007 to 2019 is: ', charged_off_rate)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Analyze**\n", "- Based on these data, the Charged Off rate for all the loans in average is **19.57%**. This means if we choose loans to invest randomly, we could have about 19% of charged off rate. This is very **high risk**.\n", "- Charged off rate is similar with default rate. When the borrower default for a certain time, they were charged off by LendingClub." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.5 Visulize information about Loan grade**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We still use the dataframe loans_paid_or_default which was filtered above, because this way, it only contains \"Fully Paid\" and \"Charged Off\"\n", "\n", "1. Convert 'Fully Paid' to 1, 'Charegd Off' to 0; in this way after aggregating the data, we can calculate the average of paid off rate.\n", "2. Remove % in interest rate columns and change the data type to float so that we can calculate average interest rate." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Convert 'Fully Paid' to 1, 'Charegd Off' to 0\n", "status_replace = {\n", " \"loan_status\" : {\n", " \"Fully Paid\": 1,\n", " \"Charged Off\": 0,\n", " }\n", "}\n", "\n", "loans_paid_or_default = loans_paid_or_default.replace(status_replace)\n", "\n", "# Remove % in int_rate and change the data type to float\n", "loans_paid_or_default['int_rate'] = loans_paid_or_default['int_rate'].str.rstrip('%').astype('float')\n", "\n", "# Aggregate the table by loan grade and calculate the count for each variabels\n", "loans_grade_count= loans_paid_or_default.groupby('grade')['loan_amnt'].count()\n", "\n", "# Aggregate the table by loan grade and calculate the average for each variabels\n", "loans_grade_mean = loans_paid_or_default.groupby('grade').mean()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Average amount per loan (in USD dollars)')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = (15,10))\n", "\n", "plt.subplot(2,2,1)\n", "plt.bar(loans_grade_mean.index, (loans_grade_mean['int_rate']*0.01), )\n", "plt.title('Loan grade vs average interest rate')\n", "plt.xlabel('Loan grade')\n", "plt.ylabel('Average interest rate')\n", "\n", "plt.subplot(2,2,2)\n", "plt.bar(loans_grade_mean.index, (1-loans_grade_mean['loan_status']))\n", "plt.title('Loan grade vs Average Charged Off Rate')\n", "plt.xlabel('Loan grade')\n", "plt.ylabel('Average Fully Charge Off')\n", "\n", "plt.subplot(2,2,3)\n", "plt.bar(loans_grade_count.index, loans_grade_count.values)\n", "plt.title('Loan grade vs the total count number of loans')\n", "plt.xlabel('Loan grade')\n", "plt.ylabel('Count number of loans')\n", "\n", "plt.subplot(2,2,4)\n", "plt.bar(loans_grade_mean.index, loans_grade_mean['loan_amnt'])\n", "plt.title('Loan grade vs Average amount per loan (in USD dollars)')\n", "plt.xlabel('Loan grade')\n", "plt.ylabel('Average amount per loan (in USD dollars)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- From the first two plots, we can see as the loan grade goes from A to G, interest rate increases, while Charged Off Rate also goes up. This is not surprise because higher risk compensate with higher interest rate.\n", "- The third plot tells us the majority of loans are in grade B and C, followed by A and then D, while the last plot says for the high risk loans E, F, G, as the loan is riskier, the average amount per loans is higher\n", "- This implies there are small amount of borrowers who do not have good credit rating actually borrowed more money, 20000 USD in average for G loans. However, half of them are not likely to Fully Paid. Those are high risk loans, as a conservative investor, it is suggested to avoid those loans." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**As we care most about the risk of the loan, print out the exact number of Charged Off rate and interest rate for each loan grade**" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " charged_off_rate interest_rate\n", "grade \n", "A 0.059498 0.071004\n", "B 0.132787 0.106659\n", "C 0.221431 0.140364\n", "D 0.298512 0.178099\n", "E 0.378664 0.212713\n", "F 0.447809 0.250325\n", "G 0.494779 0.278173\n" ] } ], "source": [ "loans_grade_charged_off = 1-loans_paid_or_default.groupby('grade')['loan_status'].mean()\n", "loans_grade_interest = (loans_paid_or_default.groupby('grade')['int_rate'].mean())*0.01\n", "loans_grade_charged_off = pd.DataFrame(loans_grade_charged_off)\n", "\n", "loans_grade_charged_off.rename({'loan_status':'charged_off_rate'}, axis=1, inplace=True)\n", "loans_grade_interest = pd.DataFrame(loans_grade_interest)\n", "loans_grade_interest.rename({'int_rate':'interest_rate'}, axis=1, inplace=True)\n", "\n", "investment = loans_grade_charged_off.join(loans_grade_interest) \n", "print(investment)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "investment.to_csv('investment.csv', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Charged Off Rate is very high, especially for E, F, G. \n", "\n", "Loans with A grade has about 0.059 of Charged Off rate. This means if an investor only choose A loan to invest, there could be '0.059' of the chance that they will lose money. \n", "\n", "**Note:** \n", "\n", "1. This charged off rate and interest rate is the average for each grade based on statistic data. When an investor make investment decision, they will know the specific interest rate for each loan, but of course not charged off rate. And this is something we will trying to predict with our machine learning model.\n", "\n", "2. When a loan is charged off, it does NOT mean that the investor will lose all of their investment; The loan payment schedule is similar like a mortage (the bank gives you a loan for your house and you pay back principle and interest together every month for the same amount of money over the whole morgage term. You may Pre-pay when you start earn more money and you may also unable to pay continiously if you lose your job and then you are 'charged off', but the bank still get some money back). This can explain why the charged off rate is so high and even higher than interest rate. This makes it more difficult to calculate how much lost an investor could have based on average charged off rate. However, for a more conservative investor, one thing for sure is we want the charged off rate as low as possible even though it means we may miss some good investment oppotunity. Understanding this is important for this project, because this will determine which metric should be used in machine learning model. In this project, we want to make a machine leanrning model that make sure investors still make money if some of the loans are charged-off and investor lost all the principal and interests." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.6 Visualize the year trend for peer to peer loans.**\n", "\n", "1. For the number of loans and the average amounts per loan (USD dolloars), I did not include 2007 and 2019 is because these two years only have half year data.\n", "\n", "2. For charged off rate and interest rate I only include data from 2007 to 2016, because for the loans from 2017 to 2019, most of them are 'current', i.e. the loans have not expired, so calculating average charged off rate in those years are biased." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# create a column for loan issue year\n", "loans_2007_2019['issue_year'] = pd.DatetimeIndex(loans_2007_2019['issue_d']).year\n", "\n", "# Filter the data not include 2007 and 2019\n", "loans_2008_2018 = loans_2007_2019[(loans_2007_2019['issue_year']!=2007)&\n", " (loans_2007_2019['issue_year']!=2019)]\n", "\n", "# calculate the total number of loans issued for each year, # each row is one loan\n", "loans_year_count = loans_2008_2018.groupby('issue_year')['loan_amnt'].count() \n", "\n", "# calculate the average amounts of loans (USD dolloars) from 2008 to 2018, each loan has different amount\n", "loans_year_average = loans_2008_2018.groupby('issue_year')['loan_amnt'].mean()\n", "\n", "# calculate the avegrage of 'Fully paid rate' from 2007 to 2016\n", "\n", "loans_paid_or_default['issue_year'] = pd.DatetimeIndex(loans_paid_or_default['issue_d']).year\n", "loans_2007_2016 = loans_paid_or_default[(loans_paid_or_default['issue_year']!=2017)&\n", " (loans_paid_or_default['issue_year']!=2018)&\n", " (loans_paid_or_default['issue_year']!=2019)]\n", "\n", "loans_2007_2016_loan_status = loans_2007_2016.groupby('issue_year')['loan_status'].mean()\n", "\n", "loans_2007_2016_interest = loans_2007_2016.groupby('issue_year')['int_rate'].mean()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Average Interest Rate (%)')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = (15,10))\n", "\n", "# Visualize the total number of loans from 2008 to 2018\n", "plt.subplot(2,2,1)\n", "plt.bar(loans_year_count.index, loans_year_count.values)\n", "plt.title('Total count number of loans from 2008 to 2018')\n", "plt.xlabel('Year from 2008 to 2018')\n", "plt.ylabel('The number of loans')\n", "\n", "# Visualize the average amounts of per loan (USD dolloars) from 2008 to 2018 \n", "plt.subplot(2,2,2)\n", "plt.bar(loans_year_average.index, loans_year_average.values)\n", "plt.title(' Average amounts per loan (USD dolloars) from 2008 to 2018 ')\n", "plt.xlabel('Year from 2008 to 2018')\n", "plt.ylabel('The Average amounts per loan in USD dolloars')\n", "\n", "plt.subplot(2,2,3)\n", "plt.bar(loans_2007_2016_loan_status.index, (1-loans_2007_2016_loan_status.values))\n", "plt.title(' Average Charged Off Rate from 2007 to 2016')\n", "plt.xlabel('Year from 2007 to 2016')\n", "plt.ylabel('Average Pail Off Rate')\n", "\n", "plt.subplot(2,2,4)\n", "plt.bar(loans_2007_2016_interest.index, loans_2007_2016_interest.values)\n", "plt.title(' Average Interest Rate (%) from 2007 to 2016')\n", "plt.xlabel('Year from 2007 to 2016')\n", "plt.ylabel('Average Interest Rate (%)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- From the first two chart, we can clearly see from 2008 to 2018, the number of loans issued increased sharply. After 2015, it continued to increase, but growth is more slowly. However 2018 has good growth compared with 2017. The average amount of per loan also increased from 2008 to 2018. This again proved the growth in popularity of Peer to Peer lending in the last decade. According to PwC, U.S. peer-to-peer lending platforms’ origination volumes have grown an average of 84% per quarter since 2007. Read more [here](https://www.pwc.com/us/en/industries/banking-capital-markets/consumer-finance/library.html)\n", "- The last two charts show the charged off rate decreased a little bit from 2007 to 2009, and since then it keeps going up, this means the risk of investment is becoming higher. Interest rate increased unitl 2013 and then went down." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have done some analyzing and plotting, we can start to clean our data to prepare for machine learning. \n", "\n", "**Take 20% of the data and save it as Test Data - The first train test split**\n", "\n", "Note that this is not the same train test split we do to test our model. The other 80% of the data will be split again in Part 2 to test the model and select the best one. The *test data* we have from this stage will be saved to a new file as raw new data to test if our model is applicable for new data. This is to mimic the real world situation to prevent the case that we build a model, but can not applied to new data. The data cleaning process I will do in next part will only clean the 80% of *Training data*. Then I will write a script about all the cleaning and pre-processing step into a function, and use this function to process new data in order to fit the model. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Before changing our data, filter the data and save a file for 2019 current loan data for future use**\n", "\n", "These are the loans that we don't know whether it will be fully paid back. This can be used as new data to test our model in the future" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns is: (980902, 145)\n" ] } ], "source": [ "# The filter the data again to only select the data in 2019.\n", "loans_2019_current = loans_2007_2019[(loans_2007_2019['loan_status']=='Current')\n", " |(loans_2007_2019['loan_status']=='Issued')\n", " &(loans_2007_2019['issue_year']==2019)]\n", "\n", "print('The number of rows and columns is: ', loans_2019_current.shape)\n", "\n", "# save this file\n", "loans_2019_current.to_csv('loans_2019_current.csv', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Filter the data with `loan_status` as 'Fully Paid' and 'Charged Off' for building machine learning model**\n", "\n", "We only need the loans either 'Fully Paid' or 'Charged Off', and our model will be a binary classification." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns is: (1485524, 145)\n" ] } ], "source": [ "# Remove all rows that contain have loan status other than Fully Paid or Charged Off \n", "loans_2007_2019_paid_or_default = loans_2007_2019.loc[loans_2007_2019['loan_status'].isin(['Fully Paid', 'Charged Off'])]\n", "\n", "print('The number of rows and columns is: ', loans_2007_2019_paid_or_default.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Convert target column `loan_status` to 0 and 1**" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "status_replace = {\n", " \"loan_status\" : {\n", " \"Fully Paid\": 1,\n", " \"Charged Off\": 0,\n", " }\n", "}\n", "\n", "loans_2007_2019_paid_or_default = loans_2007_2019_paid_or_default.replace(status_replace)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "features = loans_2007_2019_paid_or_default.drop('loan_status', axis=1)\n", "\n", "target = loans_2007_2019_paid_or_default['loan_status']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Take 20% of the data as Test Data**" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Save test data**" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "X_test.to_csv('X_test.csv', index=False)\n", "y_test.to_csv('y_test.csv', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Join X_train and y_train together, since they have the same index and rename as 'loans_2007_2019'**\n", "\n", "This is to make sure during the cleaning process, the X_train and y_train are in the same index and same length. " ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((1188419, 144), (1188419,))" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape, y_train.shape" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idmember_idloan_amntfunded_amntfunded_amnt_invtermint_rateinstallmentgradesub_gradeemp_titleemp_lengthhome_ownershipannual_incverification_statusissue_dpymnt_planurldescpurposetitlezip_codeaddr_statedtidelinq_2yrsearliest_cr_lineinq_last_6mthsmths_since_last_delinqmths_since_last_recordopen_accpub_recrevol_balrevol_utiltotal_accinitial_list_statusout_prncpout_prncp_invtotal_pymnttotal_pymnt_invtotal_rec_prncptotal_rec_inttotal_rec_late_feerecoveriescollection_recovery_feelast_pymnt_dlast_pymnt_amntnext_pymnt_dlast_credit_pull_dcollections_12_mths_ex_medmths_since_last_major_derogpolicy_codeapplication_typeannual_inc_jointdti_jointverification_status_jointacc_now_delinqtot_coll_amttot_cur_balopen_acc_6mopen_act_ilopen_il_12mopen_il_24mmths_since_rcnt_iltotal_bal_ilil_utilopen_rv_12mopen_rv_24mmax_bal_bcall_utiltotal_rev_hi_liminq_fitotal_cu_tlinq_last_12macc_open_past_24mthsavg_cur_balbc_open_to_buybc_utilchargeoff_within_12_mthsdelinq_amntmo_sin_old_il_acctmo_sin_old_rev_tl_opmo_sin_rcnt_rev_tl_opmo_sin_rcnt_tlmort_accmths_since_recent_bcmths_since_recent_bc_dlqmths_since_recent_inqmths_since_recent_revol_delinqnum_accts_ever_120_pdnum_actv_bc_tlnum_actv_rev_tlnum_bc_satsnum_bc_tlnum_il_tlnum_op_rev_tlnum_rev_acctsnum_rev_tl_bal_gt_0num_satsnum_tl_120dpd_2mnum_tl_30dpdnum_tl_90g_dpd_24mnum_tl_op_past_12mpct_tl_nvr_dlqpercent_bc_gt_75pub_rec_bankruptciestax_lienstot_hi_cred_limtotal_bal_ex_morttotal_bc_limittotal_il_high_credit_limitrevol_bal_jointsec_app_earliest_cr_linesec_app_inq_last_6mthssec_app_mort_accsec_app_open_accsec_app_revol_utilsec_app_open_act_ilsec_app_num_rev_acctssec_app_chargeoff_within_12_mthssec_app_collections_12_mths_ex_medsec_app_mths_since_last_major_deroghardship_flaghardship_typehardship_reasonhardship_statusdeferral_termhardship_amounthardship_start_datehardship_end_datepayment_plan_start_datehardship_lengthhardship_dpdhardship_loan_statusorig_projected_additional_accrued_interesthardship_payoff_balance_amounthardship_last_payment_amountdebt_settlement_flagdebt_settlement_flag_datesettlement_statussettlement_datesettlement_amountsettlement_percentagesettlement_termissue_year
118451NaNNaN16000.016000.016000.036 months11.14%524.89BB2American Association for Clinical Chemis8 yearsRENT65000.0Not VerifiedMar-2013nNaNBorrower added on 02/22/13 > I had a previous loan at Lending Club and paid it off. Now I want to consolidate a few remaining credit cards. I'm almost debt free now!<br>credit_cardDitch the rest of the credit cards223xxVA15.760.0May-20001.0NaNNaN9.00.013484.037.6%14.0f0.00.018847.8318847.8316000.02847.830.00.00.0Nov-20152576.24NaNNov-20150.0NaN1.0IndividualNaNNaNNaN0.00.039639.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN35900.0NaNNaNNaN3.04404.020256.038.10.00.0130.0155.07.03.00.07.0NaN3.0NaN0.03.04.05.06.05.06.08.04.09.00.00.00.02.0100.020.00.00.063549.039639.032700.025728.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaN2013.0
\n", "
" ], "text/plain": [ " id member_id loan_amnt funded_amnt funded_amnt_inv term \\\n", "118451 NaN NaN 16000.0 16000.0 16000.0 36 months \n", "\n", " int_rate installment grade sub_grade \\\n", "118451 11.14% 524.89 B B2 \n", "\n", " emp_title emp_length home_ownership \\\n", "118451 American Association for Clinical Chemis 8 years RENT \n", "\n", " annual_inc verification_status issue_d pymnt_plan url \\\n", "118451 65000.0 Not Verified Mar-2013 n NaN \n", "\n", " desc \\\n", "118451 Borrower added on 02/22/13 > I had a previous loan at Lending Club and paid it off. Now I want to consolidate a few remaining credit cards. I'm almost debt free now!
\n", "\n", " purpose title zip_code addr_state \\\n", "118451 credit_card Ditch the rest of the credit cards 223xx VA \n", "\n", " dti delinq_2yrs earliest_cr_line inq_last_6mths \\\n", "118451 15.76 0.0 May-2000 1.0 \n", "\n", " mths_since_last_delinq mths_since_last_record open_acc pub_rec \\\n", "118451 NaN NaN 9.0 0.0 \n", "\n", " revol_bal revol_util total_acc initial_list_status out_prncp \\\n", "118451 13484.0 37.6% 14.0 f 0.0 \n", "\n", " out_prncp_inv total_pymnt total_pymnt_inv total_rec_prncp \\\n", "118451 0.0 18847.83 18847.83 16000.0 \n", "\n", " total_rec_int total_rec_late_fee recoveries \\\n", "118451 2847.83 0.0 0.0 \n", "\n", " collection_recovery_fee last_pymnt_d last_pymnt_amnt next_pymnt_d \\\n", "118451 0.0 Nov-2015 2576.24 NaN \n", "\n", " last_credit_pull_d collections_12_mths_ex_med \\\n", "118451 Nov-2015 0.0 \n", "\n", " mths_since_last_major_derog policy_code application_type \\\n", "118451 NaN 1.0 Individual \n", "\n", " annual_inc_joint dti_joint verification_status_joint acc_now_delinq \\\n", "118451 NaN NaN NaN 0.0 \n", "\n", " tot_coll_amt tot_cur_bal open_acc_6m open_act_il open_il_12m \\\n", "118451 0.0 39639.0 NaN NaN NaN \n", "\n", " open_il_24m mths_since_rcnt_il total_bal_il il_util open_rv_12m \\\n", "118451 NaN NaN NaN NaN NaN \n", "\n", " open_rv_24m max_bal_bc all_util total_rev_hi_lim inq_fi \\\n", "118451 NaN NaN NaN 35900.0 NaN \n", "\n", " total_cu_tl inq_last_12m acc_open_past_24mths avg_cur_bal \\\n", "118451 NaN NaN 3.0 4404.0 \n", "\n", " bc_open_to_buy bc_util chargeoff_within_12_mths delinq_amnt \\\n", "118451 20256.0 38.1 0.0 0.0 \n", "\n", " mo_sin_old_il_acct mo_sin_old_rev_tl_op mo_sin_rcnt_rev_tl_op \\\n", "118451 130.0 155.0 7.0 \n", "\n", " mo_sin_rcnt_tl mort_acc mths_since_recent_bc \\\n", "118451 3.0 0.0 7.0 \n", "\n", " mths_since_recent_bc_dlq mths_since_recent_inq \\\n", "118451 NaN 3.0 \n", "\n", " mths_since_recent_revol_delinq num_accts_ever_120_pd num_actv_bc_tl \\\n", "118451 NaN 0.0 3.0 \n", "\n", " num_actv_rev_tl num_bc_sats num_bc_tl num_il_tl num_op_rev_tl \\\n", "118451 4.0 5.0 6.0 5.0 6.0 \n", "\n", " num_rev_accts num_rev_tl_bal_gt_0 num_sats num_tl_120dpd_2m \\\n", "118451 8.0 4.0 9.0 0.0 \n", "\n", " num_tl_30dpd num_tl_90g_dpd_24m num_tl_op_past_12m pct_tl_nvr_dlq \\\n", "118451 0.0 0.0 2.0 100.0 \n", "\n", " percent_bc_gt_75 pub_rec_bankruptcies tax_liens tot_hi_cred_lim \\\n", "118451 20.0 0.0 0.0 63549.0 \n", "\n", " total_bal_ex_mort total_bc_limit total_il_high_credit_limit \\\n", "118451 39639.0 32700.0 25728.0 \n", "\n", " revol_bal_joint sec_app_earliest_cr_line sec_app_inq_last_6mths \\\n", "118451 NaN NaN NaN \n", "\n", " sec_app_mort_acc sec_app_open_acc sec_app_revol_util \\\n", "118451 NaN NaN NaN \n", "\n", " sec_app_open_act_il sec_app_num_rev_accts \\\n", "118451 NaN NaN \n", "\n", " sec_app_chargeoff_within_12_mths sec_app_collections_12_mths_ex_med \\\n", "118451 NaN NaN \n", "\n", " sec_app_mths_since_last_major_derog hardship_flag hardship_type \\\n", "118451 NaN N NaN \n", "\n", " hardship_reason hardship_status deferral_term hardship_amount \\\n", "118451 NaN NaN NaN NaN \n", "\n", " hardship_start_date hardship_end_date payment_plan_start_date \\\n", "118451 NaN NaN NaN \n", "\n", " hardship_length hardship_dpd hardship_loan_status \\\n", "118451 NaN NaN NaN \n", "\n", " orig_projected_additional_accrued_interest \\\n", "118451 NaN \n", "\n", " hardship_payoff_balance_amount hardship_last_payment_amount \\\n", "118451 NaN NaN \n", "\n", " debt_settlement_flag debt_settlement_flag_date settlement_status \\\n", "118451 N NaN NaN \n", "\n", " settlement_date settlement_amount settlement_percentage \\\n", "118451 NaN NaN NaN \n", "\n", " settlement_term issue_year \n", "118451 NaN 2013.0 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.head(1)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "y_train = pd.DataFrame(y_train)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
loan_status
1184511
197231
1881691
1356020
1352501
\n", "
" ], "text/plain": [ " loan_status\n", "118451 1\n", "19723 1\n", "188169 1\n", "135602 0\n", "135250 1" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.head()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "# combine them together \n", "loans_2007_2019 = pd.concat([X_train, y_train], axis=1)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1188419, 145)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loans_2007_2019.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 2. Inital Data Cleaning \n", "\n", "**2.1. Check missing value for each columns and remove the columns that have more than 30% of missing value**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since every borrower is different, if we fill all the missing data with our guess, no matter it's medium or other value, this won't give us good information, so we choose drop those." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The percentage of misssing values in each columns is: id 1.000000e+00\n", "next_pymnt_d 1.000000e+00\n", "url 1.000000e+00\n", "member_id 1.000000e+00\n", "orig_projected_additional_accrued_interest 9.967629e-01\n", "hardship_end_date 9.952273e-01\n", "payment_plan_start_date 9.952273e-01\n", "hardship_length 9.952273e-01\n", "hardship_dpd 9.952273e-01\n", "hardship_loan_status 9.952273e-01\n", "hardship_last_payment_amount 9.952273e-01\n", "hardship_payoff_balance_amount 9.952273e-01\n", "hardship_amount 9.952273e-01\n", "deferral_term 9.952273e-01\n", "hardship_status 9.952273e-01\n", "hardship_reason 9.952273e-01\n", "hardship_type 9.952273e-01\n", "hardship_start_date 9.952273e-01\n", "sec_app_mths_since_last_major_derog 9.934947e-01\n", "sec_app_revol_util 9.819508e-01\n", "sec_app_earliest_cr_line 9.816336e-01\n", "revol_bal_joint 9.816336e-01\n", "sec_app_collections_12_mths_ex_med 9.816336e-01\n", "sec_app_chargeoff_within_12_mths 9.816336e-01\n", "sec_app_num_rev_accts 9.816336e-01\n", "sec_app_open_act_il 9.816336e-01\n", "sec_app_open_acc 9.816336e-01\n", "sec_app_mort_acc 9.816336e-01\n", "sec_app_inq_last_6mths 9.816336e-01\n", "verification_status_joint 9.764233e-01\n", "dti_joint 9.760632e-01\n", "annual_inc_joint 9.760615e-01\n", "settlement_term 9.741842e-01\n", "debt_settlement_flag_date 9.741842e-01\n", "settlement_status 9.741842e-01\n", "settlement_percentage 9.741842e-01\n", "settlement_amount 9.741842e-01\n", "settlement_date 9.741842e-01\n", "desc 9.167751e-01\n", "mths_since_last_record 8.305572e-01\n", "mths_since_recent_bc_dlq 7.632232e-01\n", "mths_since_last_major_derog 7.370212e-01\n", "mths_since_recent_revol_delinq 6.657559e-01\n", "il_util 6.133771e-01\n", "mths_since_rcnt_il 5.640847e-01\n", "all_util 5.517431e-01\n", "open_acc_6m 5.516952e-01\n", "total_cu_tl 5.516952e-01\n", "inq_last_12m 5.516952e-01\n", "open_il_24m 5.516943e-01\n", "open_act_il 5.516943e-01\n", "max_bal_bc 5.516943e-01\n", "open_rv_24m 5.516943e-01\n", "open_rv_12m 5.516943e-01\n", "total_bal_il 5.516943e-01\n", "inq_fi 5.516943e-01\n", "open_il_12m 5.516943e-01\n", "mths_since_last_delinq 5.051148e-01\n", "mths_since_recent_inq 1.274912e-01\n", "num_tl_120dpd_2m 8.275869e-02\n", "mo_sin_old_il_acct 7.409676e-02\n", "emp_title 6.540875e-02\n", "emp_length 5.981476e-02\n", "pct_tl_nvr_dlq 4.562953e-02\n", "avg_cur_bal 4.553949e-02\n", "num_rev_accts 4.552098e-02\n", "tot_cur_bal 4.552014e-02\n", "num_tl_op_past_12m 4.552014e-02\n", "tot_coll_amt 4.552014e-02\n", "num_tl_90g_dpd_24m 4.552014e-02\n", "total_il_high_credit_limit 4.552014e-02\n", "tot_hi_cred_lim 4.552014e-02\n", "num_op_rev_tl 4.552014e-02\n", "num_tl_30dpd 4.552014e-02\n", "total_rev_hi_lim 4.552014e-02\n", "num_actv_bc_tl 4.552014e-02\n", "num_actv_rev_tl 4.552014e-02\n", "num_il_tl 4.552014e-02\n", "mo_sin_old_rev_tl_op 4.552014e-02\n", "mo_sin_rcnt_rev_tl_op 4.552014e-02\n", "mo_sin_rcnt_tl 4.552014e-02\n", "num_bc_tl 4.552014e-02\n", "num_rev_tl_bal_gt_0 4.552014e-02\n", "num_accts_ever_120_pd 4.552014e-02\n", "bc_util 4.296044e-02\n", "percent_bc_gt_75 4.268192e-02\n", "bc_open_to_buy 4.240592e-02\n", "mths_since_recent_bc 4.172182e-02\n", "num_sats 3.765675e-02\n", "num_bc_sats 3.765675e-02\n", "acc_open_past_24mths 3.188690e-02\n", "mort_acc 3.188690e-02\n", "total_bal_ex_mort 3.188690e-02\n", "total_bc_limit 3.188690e-02\n", "title 1.310396e-02\n", "last_pymnt_d 1.751066e-03\n", "revol_util 6.672731e-04\n", "pub_rec_bankruptcies 4.686899e-04\n", "dti 3.643496e-04\n", "collections_12_mths_ex_med 3.449962e-05\n", "chargeoff_within_12_mths 3.449962e-05\n", "last_credit_pull_d 3.365816e-05\n", "tax_liens 2.356071e-05\n", "inq_last_6mths 8.414541e-07\n", "recoveries 0.000000e+00\n", "acc_now_delinq 0.000000e+00\n", "hardship_flag 0.000000e+00\n", "pymnt_plan 0.000000e+00\n", "issue_d 0.000000e+00\n", "verification_status 0.000000e+00\n", "annual_inc 0.000000e+00\n", "home_ownership 0.000000e+00\n", "issue_year 0.000000e+00\n", "delinq_amnt 0.000000e+00\n", "sub_grade 0.000000e+00\n", "grade 0.000000e+00\n", "installment 0.000000e+00\n", "int_rate 0.000000e+00\n", "term 0.000000e+00\n", "funded_amnt_inv 0.000000e+00\n", "funded_amnt 0.000000e+00\n", "loan_amnt 0.000000e+00\n", "debt_settlement_flag 0.000000e+00\n", "purpose 0.000000e+00\n", "zip_code 0.000000e+00\n", "total_rec_late_fee 0.000000e+00\n", "addr_state 0.000000e+00\n", "total_rec_int 0.000000e+00\n", "total_rec_prncp 0.000000e+00\n", "total_pymnt_inv 0.000000e+00\n", "total_pymnt 0.000000e+00\n", "out_prncp_inv 0.000000e+00\n", "out_prncp 0.000000e+00\n", "initial_list_status 0.000000e+00\n", "total_acc 0.000000e+00\n", "collection_recovery_fee 0.000000e+00\n", "revol_bal 0.000000e+00\n", "pub_rec 0.000000e+00\n", "open_acc 0.000000e+00\n", "last_pymnt_amnt 0.000000e+00\n", "policy_code 0.000000e+00\n", "earliest_cr_line 0.000000e+00\n", "delinq_2yrs 0.000000e+00\n", "application_type 0.000000e+00\n", "loan_status 0.000000e+00\n", "dtype: float64\n" ] } ], "source": [ "# check the percentage of misssing values in each columns\n", "missing_fraction = loans_2007_2019.isnull().mean().sort_values(ascending=False)\n", "\n", "print('The percentage of misssing values in each columns is: ', missing_fraction)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many ways we can deal with missing value:\n", "1. Remove the columns that contain a certain amount of missing value; In our case, we remove the columns that have more than 30% of missing values, this is based on the above percentage of missing values for each columns and the column meaning, if the column is absolutely a very important features that could impact whether the loan will be paid off or not, then we should not remove it.\n", "2. Remove the rows with missing values, but this will remove other useful information too. \n", "3. Fill in missing values with the best estimated value based on the distribution of the data.\n", "\n", "For our purpose, we will first drop columns with more than 30% of missing value, then drop rows which every value is missing (i.e. there is no any information about this loan), then we will do more data cleaning for each column and will drop some along the process; lastly, we will either remove or fill in the remaining missing values." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of the columns with more than 30% of missing values is: 58\n" ] } ], "source": [ "# sort the columns that have more than 30% of missing value\n", "drop_list = sorted(list(missing_fraction[missing_fraction>0.3].index))\n", "\n", "# see how many columns we will drop\n", "print('The number of the columns with more than 30% of missing values is: ', len(drop_list))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "# drop these columns \n", "loans_2007_2019 = loans_2007_2019.drop(drop_list, axis=1)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns left is: (1188419, 87)\n" ] } ], "source": [ "# check the result\n", "print('The number of rows and columns left is: ',loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We still have some columns with missing value, we will clean later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.2 Drop the rows where all the values are NaN.**" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns left is: (1188419, 87)\n" ] } ], "source": [ "# drop the rows that are all NaNs \n", "loans_2007_2019.dropna(axis = 0, how = 'all', inplace=True)\n", "\n", "# check the result\n", "print('The number of rows and columns left is: ', loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.3 Remove duplicated data**" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of duplicated rows is: 0\n" ] } ], "source": [ "# check if any rows are duplicated\n", "print('The number of duplicated rows is: ', loans_2007_2019.duplicated().sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.4 Drop columns that leak information from the future, i.e. the information that will only be available after the loan has already been funded**\n", "\n", "Those are the information that an investor and Lendng Club will not know before they list the loan. These are not usefull for our analysis, and in machine learning modelling process, it can cause our model to overfit. This is because the model would be using data about the target column that wouldn't be available when we're using the model on future loans. This requires deep understanding of what each column means.\n", "\n", "Referring to the data dictionary, the following are the columns that leak data for future information, these information isn't available to an investor before the loan is fully funded and we don't want to include it in our model: The following are the columns that leak future imformations and need to be removed. \n", "- `funded_amnt`: The total amount committed to that loan at that point in time; \n", "- `funded_amnt_inv`: The total amount committed by investors for that loan at that point in time.\n", "- `out_prncp`: Remaining outstanding principal for total amount funded; \n", "- `out_prncp_inv`: Remaining outstanding principal for portion of total amount funded by investors; \n", "- `total_pymnt`: Payments received to date for total amount funded; \n", "- `total_pymnt_inv`: Payments received to date for portion of total amount funded by investors; \n", "- `total_rec_prncp`: \tPrincipal received to date;\n", "- `total_rec_int`: Interest received to date;\n", "- `total_rec_late_fee`: Late fees received to date; \n", "- `recoveries`: post charge off gross recovery; \n", "- `collection_recovery_fee`: \tpost charge off collection fee;\n", "- `last_pymnt_d`: Last month payment was received; \n", "- `last_pymnt_amnt`: Last total payment amount received;\n", "- `tot_coll_amt`: Total collection amounts ever owed" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns left is: (1188419, 73)\n" ] } ], "source": [ "# those are the columns we have identified to drop:\n", "remove_col = ['funded_amnt','funded_amnt_inv','out_prncp','out_prncp_inv','total_pymnt','total_pymnt_inv',\n", " 'total_rec_prncp','total_rec_int','total_rec_late_fee','recoveries','collection_recovery_fee','last_pymnt_d',\n", " 'last_pymnt_amnt','tot_coll_amt']\n", "\n", "# drop those columns\n", "loans_2007_2019 = loans_2007_2019.drop(remove_col,axis=1)\n", "\n", "# check the result\n", "print('The number of rows and columns left is: ', loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.5 Remove the columns that are not useful for machine learning model**\n", "\n", "First, drop the columns that contains only one unique value except NaN, those are for sure not usefull for machine leaning.\n", "\n", "Some columns may contain two unique vaules, and one is NaN; So we need to check how many unique values the column has if removing NaN. Thoes columns have the same value for every loans, this is not useful for analysis and machines learning, we will need to remove them." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The columns that have only one unique value if removing NaN are: ['policy_code']\n", "\n", "\n", "The number of rows and columns left is: (1188419, 72)\n" ] } ], "source": [ "# get all the columns we want to exam\n", "orig_columns = loans_2007_2019.columns\n", "\n", "# create an empty list for the columns we want to drop\n", "drop_columns = []\n", "\n", "# write a for loop\n", "for col in orig_columns:\n", " col_series = loans_2007_2019[col].dropna().unique()\n", " if len(col_series) == 1:\n", " # those columns only contain one unique value\n", " drop_columns.append(col)\n", " \n", "# drop the columns\n", "loans_2007_2019 = loans_2007_2019.drop(drop_columns, axis=1)\n", "\n", "# show what we dropped\n", "print('The columns that have only one unique value if removing NaN are: ', drop_columns)\n", "\n", "print('\\n')\n", "# check the result\n", "print('The number of rows and columns left is: ',loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Remove the columns with more than 90% the same value.**\n", "\n", "This step is not nessesary, however, in general columns with very little variabilty are not useful for machine learning model, it's almost like all the values are the same. **I have also tested the same model without removing those columns, and it didn't return better results.**\n", "\n", "The reason I decided to remove those columns in this step is, if those columns have missing value while other columns don't have, and later when I remove rows with missing value, I will remove the rows I should not remove. So it is the best to remove all the columns not usefull ofr machine learning first." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The columns that offers very little variability and need to be removed are: ['pymnt_plan', 'collections_12_mths_ex_med', 'application_type', 'acc_now_delinq', 'chargeoff_within_12_mths', 'delinq_amnt', 'num_tl_120dpd_2m', 'num_tl_30dpd', 'num_tl_90g_dpd_24m', 'tax_liens', 'hardship_flag', 'debt_settlement_flag']\n", "\n", "\n", "The number of rows and columns in 2007 to 2019 model data is: (1188419, 60)\n" ] } ], "source": [ "# get all the columns we want to exam\n", "orig_columns = loans_2007_2019.columns\n", "\n", "# create an empty list for the columns we want to drop\n", "drop_columns = []\n", "\n", "# write a for loop\n", "for col in orig_columns:\n", " \n", " # select the columns that offers very little variability\n", " if loans_2007_2019[col].value_counts(normalize=True, dropna=False).values[0]>0.9:\n", "\n", " # those columns won't have much predictive value. let's drop it.\n", " drop_columns.append(col)\n", "\n", "# drop the columns\n", "loans_2007_2019 = loans_2007_2019.drop(drop_columns, axis=1)\n", "\n", "# show what we dropped\n", "print('The columns that offers very little variability and need to be removed are: ', drop_columns)\n", "\n", "print('\\n')\n", "# check the result\n", "print('The number of rows and columns in 2007 to 2019 model data is: ',loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Remove `issue_year`**\n", "\n", "We create this column for analysis, we don't need this in machine leaning model" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns in 2007 to 2019 model data is: (1188419, 59)\n" ] } ], "source": [ "loans_2007_2019.drop('issue_year', axis=1, inplace=True)\n", "# check the result\n", "print('The number of rows and columns in 2007 to 2019 model data is: ',loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.6 Drop columns that have redundant information**\n", "\n", "- `zip_code`: redundant with the `addr_state` column, also since only the first 3 digits of the 5 digit zip code are visible, which only can be used to identify the state the borrower lives in, this column is not useful for us. \n", "- `sub_grade`: redundant with the `grade` and `int_rate` column. From data dictionary, we know that each grade has 5 subgrade." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of rows and columns left is: (1188419, 57)\n" ] } ], "source": [ "# drop columns 'zip_code' and 'sub_grade'\n", "loans_2007_2019 = loans_2007_2019.drop(['zip_code', 'sub_grade'],axis=1)\n", "\n", "# check the result\n", "print('The number of rows and columns left is: ', loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now able to reduce the column number to 58, so far we started to become familiar with the columns in the dataset and removed many columns that aren't useful for analyzing and modeling. Our data is still not clean and many missing values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 3. More Data Cleaning on Category columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Select the columns that are object**" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
termint_rategradeemp_titleemp_lengthhome_ownershipverification_statusissue_dpurposetitleaddr_stateearliest_cr_linerevol_utilinitial_list_statuslast_credit_pull_d
11845136 months11.14%BAmerican Association for Clinical Chemis8 yearsRENTNot VerifiedMar-2013credit_cardDitch the rest of the credit cardsVAMay-200037.6%fNov-2015
\n", "
" ], "text/plain": [ " term int_rate grade emp_title \\\n", "118451 36 months 11.14% B American Association for Clinical Chemis \n", "\n", " emp_length home_ownership verification_status issue_d purpose \\\n", "118451 8 years RENT Not Verified Mar-2013 credit_card \n", "\n", " title addr_state earliest_cr_line \\\n", "118451 Ditch the rest of the credit cards VA May-2000 \n", "\n", " revol_util initial_list_status last_credit_pull_d \n", "118451 37.6% f Nov-2015 " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# select all the columns that are object\n", "object_col_df = loans_2007_2019.select_dtypes(include=['object'])\n", "# view the first row\n", "object_col_df.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the sample data, we can see many values are not in the right form, some should be numerical value, some shows repeated information or lengthy text. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.1. Investigate date columns**\n", "\n", "- `earliest_cr_line`: The month the borrower's earliest reported credit line was opened; we do not need ths column for our analysis\n", "- `last_credit_pull_d`: The most recent month LendingClub pulled credit for this loan; we do not need ths column for our analysis.\n", "- `issue_d`: The date which the loan was funded. It means the date investor received full amount of money they need. We don't need this column; also it leak future information." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "# drop columns `earliest_cr_line`\n", "loans_2007_2019.drop(['earliest_cr_line', 'last_credit_pull_d','issue_d'], axis=1, inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.2. `purpose` and `title` looks similar, delete one of them**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the first row's values for `purpose` and `title`, it seems like these columns could reflect the same information. Let's explore the unique value counts separately to confirm if this is true.\n", "\n", "- `purpose`: a category provided by the borrower for the loan request,\n", "- `title`: loan title provided the borrower" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "debt_consolidation 686540\n", "credit_card 261088\n", "home_improvement 78000\n", "other 70098\n", "major_purchase 26268\n", "medical 13901\n", "small_business 13465\n", "car 12913\n", "moving 8408\n", "vacation 8212\n", "house 6633\n", "wedding 1840\n", "renewable_energy 805\n", "educational 248\n", "Name: purpose, dtype: int64" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# view what values in 'purpose' column\n", "loans_2007_2019['purpose'].value_counts(dropna=False)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of unique value is: 50903\n", "\n", "\n", "Debt consolidation 589752\n", "Credit card refinancing 224240\n", "Home improvement 67862\n", "Other 61158\n", "Major purchase 21973\n", "NaN 15573\n", "Debt Consolidation 12533\n", "Medical expenses 12295\n", "Business 10512\n", "Car financing 10205\n", "Name: title, dtype: int64\n" ] } ], "source": [ "# check the number of unique value in the 'title' column\n", "print('The number of unique value is: ', loans_2007_2019['title'].nunique())\n", "\n", "print('\\n')\n", "\n", "# there are many values; show first 10 items in this clomun\n", "print(loans_2007_2019['title'].value_counts(dropna=False).head(10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It seems like the `purpose` and `title` columns do contain overlapping information but we'll keep the `purpose` column since it contains a few discrete values. In addition, the `title` column has data quality issues since many of the values are repeated with slight modifications (e.g. Debt Consolidation and Debt Consolidation Loan and debt consolidation)." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "# drop 'title' column\n", "loans_2007_2019 = loans_2007_2019.drop('title', axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.3 Remove % in `int_rate` and `revol_util`**\n", "\n", "Those columns that actually represent numeric values, that need to be converted:\n", "\n", "`int_rate`: interest rate of the loan in %\n", "\n", "`revol_util`: revolving line utilization rate or the amount of credit the borrower is using relative to all available credit, read more [here](https://blog.credit.com/2013/04/what-is-revolving-utilization-65530/)." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# Remove % in int_rate and change the data type to float\n", "loans_2007_2019['int_rate'] = loans_2007_2019['int_rate'].str.rstrip('%').astype('float')\n", "\n", "# Remove % in revol_util and change the data type to float\n", "loans_2007_2019['revol_util'] = loans_2007_2019['revol_util'].str.rstrip('%').astype('float')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.4 Change values in `emp_length`**" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10+ years 390956\n", "2 years 107548\n", "< 1 year 95735\n", "3 years 95163\n", "1 year 78292\n", "5 years 74199\n", "4 years 71435\n", "NaN 71085\n", "6 years 55049\n", "8 years 52857\n", "7 years 51523\n", "9 years 44577\n", "Name: emp_length, dtype: int64" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# see what are the values in 'emp_length' column\n", "loans_2007_2019['emp_length'].value_counts(dropna=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I erred on the side of being conservative with the 10+ years, < 1 year mappings. I assume that people who may have been working more than 10 years have only really worked for 10 years, also assume that people who've worked less than a year or if the information is not available that they've worked for 0. " ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "mapping_dict = {\n", " \"emp_length\": {\n", " \"10+ years\": 10,\n", " \"9 years\": 9,\n", " \"8 years\": 8,\n", " \"7 years\": 7,\n", " \"6 years\": 6,\n", " \"5 years\": 5,\n", " \"4 years\": 4,\n", " \"3 years\": 3,\n", " \"2 years\": 2,\n", " \"1 year\": 1,\n", " \"< 1 year\": 0\n", " }\n", "}\n", "\n", "loans_2007_2019 = loans_2007_2019.replace(mapping_dict)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " 10.0 390956\n", " 2.0 107548\n", " 0.0 95735\n", " 3.0 95163\n", " 1.0 78292\n", " 5.0 74199\n", " 4.0 71435\n", "NaN 71085\n", " 6.0 55049\n", " 8.0 52857\n", " 7.0 51523\n", " 9.0 44577\n", "Name: emp_length, dtype: int64" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# view the result\n", "loans_2007_2019['emp_length'].value_counts(dropna=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.5 Check `emp_title` column**\n", "\n", "`emp_title`: The job title supplied by the Borrower when applying for the loan." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of unique value is: 335861\n", "\n", "\n", "NaN 77733\n", "Teacher 19088\n", "Manager 17383\n", "Owner 9470\n", "Registered Nurse 7954\n", "RN 7694\n", "Supervisor 7373\n", "Driver 6993\n", "Sales 6752\n", "Project Manager 5672\n", "Name: emp_title, dtype: int64\n" ] } ], "source": [ "# check the number of unique value in the 'emp_title' column\n", "print('The number of unique value is: ', loans_2007_2019['emp_title'].nunique())\n", "\n", "print('\\n')\n", "# show first 10 items in this clomun\n", "print(loans_2007_2019['emp_title'].value_counts(dropna=False).head(10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see there are 335861 categories in this column and the the most frequent one is NaN, we can drop this column. " ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "# drop 'emp_title' \n", "loans_2007_2019 = loans_2007_2019.drop('emp_title', axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.6 Check again what is left in our category columns**" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
termgradehome_ownershipverification_statuspurposeaddr_stateinitial_list_status
11845136 monthsBRENTNot Verifiedcredit_cardVAf
\n", "
" ], "text/plain": [ " term grade home_ownership verification_status purpose \\\n", "118451 36 months B RENT Not Verified credit_card \n", "\n", " addr_state initial_list_status \n", "118451 VA f " ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# select all the columns that are object\n", "object_col_df = loans_2007_2019.select_dtypes(include=['object'])\n", "# view the first row\n", "object_col_df.head(1)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 36 months 0.756839\n", " 60 months 0.243161\n", "Name: term, dtype: float64\n", "B 0.292385\n", "C 0.283943\n", "A 0.178205\n", "D 0.148446\n", "E 0.067753\n", "F 0.022760\n", "G 0.006508\n", "Name: grade, dtype: float64\n", "MORTGAGE 0.494533\n", "RENT 0.396344\n", "OWN 0.108679\n", "ANY 0.000312\n", "OTHER 0.000098\n", "NONE 0.000034\n", "Name: home_ownership, dtype: float64\n", "Source Verified 0.390512\n", "Verified 0.304997\n", "Not Verified 0.304491\n", "Name: verification_status, dtype: float64\n", "debt_consolidation 0.577692\n", "credit_card 0.219694\n", "home_improvement 0.065633\n", "other 0.058984\n", "major_purchase 0.022103\n", "medical 0.011697\n", "small_business 0.011330\n", "car 0.010866\n", "moving 0.007075\n", "vacation 0.006910\n", "house 0.005581\n", "wedding 0.001548\n", "renewable_energy 0.000677\n", "educational 0.000209\n", "Name: purpose, dtype: float64\n", "CA 0.144585\n", "TX 0.081952\n", "NY 0.081660\n", "FL 0.071540\n", "IL 0.038619\n", "NJ 0.035929\n", "PA 0.033757\n", "OH 0.032677\n", "GA 0.032262\n", "VA 0.028356\n", "NC 0.027965\n", "MI 0.026343\n", "AZ 0.024256\n", "MD 0.023301\n", "MA 0.022997\n", "CO 0.022052\n", "WA 0.021590\n", "MN 0.017814\n", "IN 0.016297\n", "MO 0.015941\n", "TN 0.015298\n", "NV 0.014997\n", "CT 0.014788\n", "WI 0.013213\n", "AL 0.012185\n", "OR 0.012180\n", "SC 0.011905\n", "LA 0.011511\n", "KY 0.009607\n", "OK 0.009105\n", "KS 0.008292\n", "AR 0.007495\n", "UT 0.007344\n", "NM 0.005498\n", "MS 0.005063\n", "HI 0.004931\n", "NH 0.004836\n", "RI 0.004344\n", "WV 0.003590\n", "MT 0.002841\n", "NE 0.002816\n", "DE 0.002812\n", "DC 0.002526\n", "AK 0.002333\n", "WY 0.002175\n", "VT 0.002035\n", "SD 0.002032\n", "ME 0.001627\n", "ID 0.001437\n", "ND 0.001289\n", "IA 0.000005\n", "Name: addr_state, dtype: float64\n", "w 0.601864\n", "f 0.398136\n", "Name: initial_list_status, dtype: float64\n" ] } ], "source": [ "# check what are the percentage of each value in those columns using a for loop: \n", "for col in object_col_df.columns:\n", " print(loans_2007_2019[col].value_counts(normalize=True, dropna=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now our data is mostly cleaned except for missing value. Before we clean our data, it is a good idea to save our data in this stage. In this way, we can test whether different ways of handlling missing data can affect our machine learing performance." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "loans_2007_2019.to_csv('loans_2007_2019_with_NaN.csv', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Visualize on selected columns**" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'The number of loans for each category')" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(15,10))\n", "\n", "# code for plotting bar chart for employment length:\n", "plt.subplot(2,2,1)\n", "plt.bar(loans_2007_2019['emp_length'].value_counts().index, loans_2007_2019['emp_length'].value_counts().values)\n", "plt.title('Loan Distribution based on employment length')\n", "plt.xlabel('employment length in years')\n", "plt.ylabel('The number of loans for each category')\n", "\n", "# code for plotting histagram for annal income:\n", "plt.subplot(2,2,2) # noted that there are some extremely high income can make our plot high screwed, that is why I set a range\n", "plt.hist(loans_2007_2019['annual_inc'], bins=100, range=(0, 500000)) \n", "plt.title('Loan Distribution based on annal income')\n", "plt.xlabel('Annual Income')\n", "plt.ylabel('The number of loans for different annal income')\n", "\n", "# code for plotting bar chart for purpose:\n", "plt.subplot(2,2,3)\n", "plt.bar(loans_2007_2019['purpose'].value_counts().index, loans_2007_2019['purpose'].value_counts().values)\n", "plt.title('Loan Distribution based on borrower purpose')\n", "plt.xlabel('Borrower purpose')\n", "plt.xticks(rotation=90)\n", "plt.ylabel('The number of loans for each category')\n", "\n", "# code for plotting bar chart \n", "plt.subplot(2,2,4)\n", "plt.bar(loans_2007_2019['home_ownership'].value_counts().index, loans_2007_2019['home_ownership'].value_counts().values)\n", "plt.title('Loan Distribution based on borrower home ownership status')\n", "plt.xlabel('Borrower home ownership status')\n", "plt.ylabel('The number of loans for each category')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 4. Handling missing values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we already removed the columns with missing values of more than 30%, and this reduced our column number. After further cleaning, we still have some columns with less than 10% of missing value. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.1 list the columns and the percentage of missing values**" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The column name and the percentage of missing values is: \n", "\n", "\n", "mths_since_recent_inq 1.274912e-01\n", "mo_sin_old_il_acct 7.409676e-02\n", "emp_length 5.981476e-02\n", "pct_tl_nvr_dlq 4.562953e-02\n", "avg_cur_bal 4.553949e-02\n", "num_rev_accts 4.552098e-02\n", "num_bc_tl 4.552014e-02\n", "num_il_tl 4.552014e-02\n", "num_accts_ever_120_pd 4.552014e-02\n", "num_actv_bc_tl 4.552014e-02\n", "num_actv_rev_tl 4.552014e-02\n", "mo_sin_old_rev_tl_op 4.552014e-02\n", "num_rev_tl_bal_gt_0 4.552014e-02\n", "num_op_rev_tl 4.552014e-02\n", "mo_sin_rcnt_tl 4.552014e-02\n", "num_tl_op_past_12m 4.552014e-02\n", "total_il_high_credit_limit 4.552014e-02\n", "total_rev_hi_lim 4.552014e-02\n", "tot_hi_cred_lim 4.552014e-02\n", "tot_cur_bal 4.552014e-02\n", "mo_sin_rcnt_rev_tl_op 4.552014e-02\n", "bc_util 4.296044e-02\n", "percent_bc_gt_75 4.268192e-02\n", "bc_open_to_buy 4.240592e-02\n", "mths_since_recent_bc 4.172182e-02\n", "num_bc_sats 3.765675e-02\n", "num_sats 3.765675e-02\n", "acc_open_past_24mths 3.188690e-02\n", "mort_acc 3.188690e-02\n", "total_bal_ex_mort 3.188690e-02\n", "total_bc_limit 3.188690e-02\n", "revol_util 6.672731e-04\n", "pub_rec_bankruptcies 4.686899e-04\n", "dti 3.643496e-04\n", "inq_last_6mths 8.414541e-07\n", "dtype: float64\n" ] } ], "source": [ "# check the percentage of misssing values and sort the data\n", "missing_fraction = loans_2007_2019.isnull().mean().sort_values(ascending=False)\n", "print('The column name and the percentage of missing values is: ')\n", "print('\\n')\n", "print(missing_fraction[missing_fraction>0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`mths_since_recent_inq` : Months since most recent inquiry. It has the highest percentage of the missing value, let's plot the data to see its distribution, from data dictionary, it means ." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1.036906e+06\n", "mean 6.745950e+00\n", "std 5.862184e+00\n", "min 0.000000e+00\n", "25% 2.000000e+00\n", "50% 5.000000e+00\n", "75% 1.000000e+01\n", "max 2.500000e+01\n", "Name: mths_since_recent_inq, dtype: float64" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check statistical information for this column\n", "loans_2007_2019['mths_since_recent_inq'].describe()" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'The number of loans')" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.hist(loans_2007_2019['mths_since_recent_inq']) \n", "plt.title('Loan Distribution based on Month since recent inquiry')\n", "plt.xlabel('Month since recent inquiry')\n", "plt.ylabel('The number of loans')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like it's reasonable to fill NaN as median in this column, which is 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.2 Fill NaN with median value for `mths_since_recent_inq` column**" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "loans_2007_2019['mths_since_recent_inq'].fillna(loans_2007_2019['mths_since_recent_inq'].median(), inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.3 Drop all the rows with missing values**\n", "\n", "Since there are many columns that still contain missing value, the highest percentage is 0.06768, this is not very high, since we already have a lot of data, we can remove rows with missing value. **I have also tested to fill missing data with median value for all the columns and use it for the same machine learning model, and there isn't too much difference.** In this case choosing the simpler way is better." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "loans_2007_2019 = loans_2007_2019.dropna(axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check which columns still have missing values:" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Is there any cloumns that contain missing value: False\n", "The number of rows and columns left is: (1023834, 52)\n" ] } ], "source": [ "# double check if we have any missing values left. \n", "print('Is there any cloumns that contain missing value: ', loans_2007_2019.isna().sum().any())\n", "print('The number of rows and columns left is: ', loans_2007_2019.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have done our data cleaning after a long process.\n", "\n", "Noted that to this step, we only covered the basic cleaning. For machine learning, we need to do more cleaning and change all the category data to binary form." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Save a copy for Part 2**" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [], "source": [ "# write out the data and save it to a new file\n", "loans_2007_2019.to_csv('loans_2007_2019_cleaned.csv', index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 5. Summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In Part 1, we explored and analyzed our data, some of the key findings and indications are:\n", "- **The Charged Off rate for all the loans in average is 19.57%**. This means if we choose loans to invest randomly, we could have about 19% of Charged-Off rate. *We should build a model to select loans that are predicted as \"Fully_paid\" with less that 19% of mistake, i.e. false positive rate is less than 19%*. \n", "\n", "- Loans with **A** grade has about **5.9%** of Charged Off rate. This means if an investor only choose A loans to invest, there is still 5.9% of the chance that they will lose money. And at the same time, by investing only A loans will not guarantee good return because interest rate is low too. *We should make our model to be able to build an investment portforlio that gives higher return than if the investors only choose A loans randomly*.\n", "\n", "- From 2008 to 2018, the number of loans and the average amount of per loan kept increasing. This shows the growth of popularitu for peer-to-peer lending. \n", "\n", "- For the year trend on the risk of loans, from 2009 to 2016, the average charged Off rate went up gradually. This is not good news, but hopefully my machine learning model can help investors reduce the risk." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }