{"action":"created","comment":{"url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/comments/237174808","pull_request_review_id":179409533,"id":237174808,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNzE3NDgwOA==","diff_hunk":"@@ -0,0 +1,568 @@\n+#!/usr/bin/env python\n+# coding: utf-8\n+\n+# # Segmenting Loan Application Data by Category\n+# ## Scope of Notebook\n+# This notebook demonstrates how to segment Loan Application Register \n+# (LAR) data by mortgage product. \n+# \n+# The example below presents a set of functions that pass \n+# in SQL statments to execute against a local database, and convert\n+# output to a Pandas dataframe.  A dataframe of output is returned \n+# that can be saved as a pipe-delimited csv file or used in a \n+# visualization. \n+# \n+# A custom library of functions was made to store ones used in \n+# previous notebooks. This library can be imported to support the \n+# analysis work in the notebook.\n+\n+# ### Importing Previously-Defined Functions to Support Setup\n+# The presense of an empty \"init.py\" file indicates that its \n+# directory contains importable functions. \n+# The function library used in this example is \n+# called \"analysis_library.\"\n+# \n+# The code below calls function libraries. \n+# According to the [PEP 8 -- Style Guide for Python Code]\n+# (https://www.python.org/dev/peps/pep-0008/#imports), \n+# imports are done first from the standard library, \n+# then third party libraries, and then custom libraries. \n+# The analysis_library is a custom library and is imported last.\n+\n+# Please note that data field values and categorical designations\n+# specified in this notebook are based on how loan applications are \n+# described in the [2017 Filing Instruction Guide]\n+# (https://www.consumerfinance.gov/data-research/\n+# hmda/static/for-filers/2017/2017-hmda-fig.pdf)\n+\n+# In[ ]:\n+\n+\n+import os\n+#Imports the Psycopg2 library\n+import psycopg2 \n+#Imports the Pandas library and renames it \"pd\"\n+import pandas as pd \n+#Imports the Numpy library and renames it \"np\"\n+import numpy as np \n+#Imports the Matplot library and renames it \"plt\"\n+import matplotlib.pyplot as plt \n+\n+#Imports the function definitions contained \n+#in the analysis_functions file within the analysis_library directory.\n+import analysis_library.analysis_functions as analysis \n+\n+\n+# ### Connect to the Database\n+# To establish a connection to the database, the connect() \n+# function can be called from the analysis_library. \n+# Connection parameters are established below, and then \n+# passed through the connection function. \n+\n+# In[ ]:\n+\n+\n+# \"User\" and \"password\" can be changed\n+#below to one's own username and password.\n+connection_params = {\"user\":\"fureym\", \n+                     \"password\":\"\", \n+                     \"dbname\":\"hmda\", \n+                     \"host\":\"localhost\"}\n+\n+\n+# In[ ]:\n+\n+\n+#Connecting to the database using the analysis function library\n+cur = analysis.connect(connection_params)\n+\n+\n+# ### Selecting LAR Data by Category and Transforming Non-Categorical \n+# Variables\n+# \n+# Categorical designations for the type of loan product include \n+# loan type, property type, occupancy, lien status, and loan purpose. \n+# According to the [2017 Filing Instruction Guide]\n+# (https://www.consumerfinance.gov/data-research/\n+# hmda/static/for-filers/2017/2017-hmda-fig.pdf), \n+# pages 16-17, each category is broken down to the following codes.   \n+# \n+# Loan Type (Codes: 1, 2, 3, 4)\n+#     - 1: Conventional (any loan other than FHA, VA, FSA, or \n+# RHS loans)\n+#     - 2: FHA-insured (Federal Housing Administration)\n+#     - 3: VA - guaranteed (Veterans Administration)\n+#     - 4: FSA/RHS-guaranteed (Farm Service Agency or Rural Housing \n+# Service)\n+# \n+# Property Type (Codes: 1, 2, 3)\n+#     - 1: One to four-family (other than manufactured housing)\n+#     - 2: Manufactured housing\n+#     - 3: Multifamily\n+# \n+# Owner Occupancy (Codes: 1, 2, 3)\n+#     - 1: Owner-occupied as a principal dwelling\n+#     - 2: Not owner-occupied\n+#     - 3: Not applicable\n+# \n+# Lien Status (Codes: 1, 2, 3, 4)\n+#     - 1: Secured by a first lien\n+#     - 2: Secured by a subordinate lien\n+#     - 3: Not secured by a lien\n+#     - 4: Not applicable (purchased loans)\n+# \n+# Loan Purpose (Codes: 1, 2, 3)\n+#     - 1: Home purchase\n+#     - 2: Home improvement\n+#     - 3: Refinancing\n+# \n+# The combination of these codes determines the subset of LAR data \n+# returned in the select_by_product function, shown below. \n+# Additional measures should be taken to ensure that the desired data \n+# subset matches the filter parameters supplied. \n+\n+# ### Like-Product Comparisons\n+# When analyzing economic, demographic, or geographic changes, \n+# it can be useful to examine trends within a set of \n+# like-products. Like-product comparisons can be used to analyze \n+# trends more faithfully by isolating the effects of a specific\n+# product type.\n+#\n+# The default parameters return LAR data for applications and \n+# originations for first-lien, owner-occupied, one to four-family, \n+# conventional home purchase loans. In this case: Loan Type = 1, \n+# Loan Purpose = 1, Property Type = 1, Owner Occupancy = 1 and \n+# Lien Status = 1. These filters may be changed to alter the \n+# subset of returned data.\n+# \n+# Additional filter codes may be used such as:\n+# \n+# #### One to four-family home refinancings:\n+#     Loan Purpose: 3\n+#     Loan Type: 1\n+#     Property Type: 1\n+#     Occupancy: 1\n+#     Lien Status: 1\n+# \n+# #### FHA-insured home purchases:\n+#     Loan Type: 2\n+#     Loan Purpose: 1\n+#     Property Type: 1\n+#     Occupancy: 1\n+#     Lien Status: 1\n+# \n+# #### Non-owner-occupied multifamily housing purchases:\n+#     Property Type: 3\n+#     Occupancy: 2\n+#     Loan Type: 1\n+#     Loan Purpose: 1\n+#     Lien Status: 1\n+#     \n+# \n+# ### Defining Functions to Segment by Loan Product. \n+# \n+# Below are a set of functions that aid in analyzing LAR data by \n+# mortgage product. \n+# \n+# With the lar_select_by_product function, users can pull LAR data by \n+# a specific loan product specification and have the option to segment \n+# data further by categories such as action type or geographic \n+# location. The select_by_product function outputs a SQL command \n+# in the form of a string. The string can be saved as a file with a \n+# SQL extention.  \n+# \n+# The lar_sql_to_df and the lar_sql_file_to_df function executes a sql \n+# query against a database, passing in a year or a set of years, \n+# and outputs a dataframe. The lar_time_series function is used to \n+# create a time series of data for multiple years. Users can choose to \n+# save the resulting dataframe output in a specified file path. \n+\n+# In[ ]:\n+\n+\n+def categories_to_sql_input(var=None):\n+\"\"\"\n+A helper function to convert the loan product codes in the \n+select_by product function from integers to strings. \n+For example, converts the integer 1 to ('1') or the list\n+[1,2] to ('1', '2').  \n+\"\"\"\n+#The case if multiple product codes are passed in a list. \n+if type(var) == list: \n+    #Creates a new list. \n+    new_list = [] \n+    #Takes each product code and converts it to a string. \n+    for num in var: \n+            #Appends each string to the new list.\n+            new_list.append(str(num))  \n+        #Creates a tuple of the string or set of strings. \n+        var = tuple(new_list) \n+        #Returns the tuple. \n+        return var \n+    #The case for one product code.\n+    else:  \n+        #Converts to a string with parentheses. \n+        var = \"(\" + \"'\"+ str(var)+ \"'\" + \")\" \n+        #Returns the product code as a string. \n+        return var \n+\n+def lar_select_by_product(\n+    schema_name=\"hmda_public\", \n+    table_name=\"lar_{year}\", \n+    select=\"*\", \n+    loan_type=1, \n+    property_type=1, \n+    occupancy=1, \n+    lien_status=1, \n+    loan_purpose=1, \n+    where_ext=None, \n+    filepath=None):\n+    \"\"\"\n+    Outputs a SQL command in the form of a string that pulls LAR \n+    data by a specific loan product specification. \n+    The resulting string output can be saved as a file with a SQL \n+    extention. \n+    \"\"\" \n+    #Converts each specification from integers to strings. \n+    loan_type = categories_to_sql_input(loan_type) \n+    \n+    property_type = categories_to_sql_input(property_type)\n+    \n+    occupancy = categories_to_sql_input(occupancy)\n+    \n+    lien_status = categories_to_sql_input(lien_status)\n+    \n+    loan_purpose = categories_to_sql_input(loan_purpose)\n+    \n+    #Passes in a blank string if where_ext = None. \n+    if where_ext == None:\n+        where_ext = \"\"\n+    \n+    #Stores a multiline string of the SQL statement to be formatted \n+    #with the parameters defined in the function. \n+    \n+    sql_base = \"\"\"\n+                 SELECT \n+                    {select}\n+                 FROM \n+                    {schema_name}.{table_name}\n+                 \n+                 WHERE\n+                    loan_type IN {loan_type}\n+                 AND  \n+                    property_type IN {property_type}\n+                 AND \n+                    occupancy IN {occupancy}\n+                 AND \n+                    lien_status IN {lien_status}\n+                 AND \n+                    loan_purpose IN {loan_purpose}\n+   \n+                 {where_ext}\n+                   ;\n+                   \"\"\"\n+    #Formats the statement with the parameters defined \n+    #in the function. \n+    sql_base=sql_base.format(schema_name=schema_name,\n+                             table_name=table_name,\n+                             select=select,\n+                             where_ext=where_ext,\n+                             loan_type=loan_type, \n+                             property_type=property_type,\n+                             occupancy=occupancy,\n+                             lien_status=lien_status,\n+                             loan_purpose=loan_purpose)\n+    \n+    #The case when a filepath is specified. \n+    if filepath != None:\n+        #Creates the directory if the directory did not \n+        #previously exist. \n+        os.makedirs(os.path.dirname(filepath), exist_ok=True)\n+        #Writes the text of the SQL command to the filepath.  \n+        with open(filepath, 'w' ) as f:\n+            f.writelines(sql_base)\n+        #Prints the location of the filepath. \n+        print(\"Command has been saved to: \" + filepath)\n+    \n+    return sql_base #Returns the SQL statement as a string. \n+\n+def lar_time_series(sql_base=None, start=None, end=None):\n+    \"\"\"\n+    Executes a sql query against a LAR database. \n+    Pulls data for each year between the start and end year specified.\n+    Returns a dataframe of results. \n+    \n+    \"\"\"\n+    #Converting start and stop points to a list for iteration.\n+    years = list(range(start, (end+1))) \n+    #Creating an empty list to hold query results.\n+    results_list = [] \n+    for year in years:\n+        #Creating an empty string sql variable. \n+        sql = \"\" \n+        #Storing the command as the sql variable. \n+        sql = sql_base.format(year=year) \n+        #Executing the command against the database. \n+        cur.execute(sql) \n+        lar_df = pd.DataFrame(cur.fetchall(), \n+            columns=[desc[0] for desc in cur.description])\n+        #Appending results to results_list. \n+        results_list.append(lar_df) \n+        #Prints the year of data added. \n+        print(\"Data added for \" + str(year)) \n+    \n+    #Concatenates the dataframes in the list. \n+    results_df = pd.concat(results_list) \n+    #Returns a dataframe of the results. \n+    return results_df \n+\n+def lar_sql_to_df(cur=None, year=None, sql_base=None, filepath=None):\n+    \"\"\"\n+    Executes a SQL query against a database of LAR rows, \n+    passing in a year or a list of years. \n+    \"\"\"\n+    #The case when a list of years are passed. \n+    if type(year) == list: \n+        #Uses the time_series function to generate the resulting \n+        #dataframe. \n+        lar_df = lar_time_series(sql_base=sql_base, start=year[0], \n+            end=year[-1])\n+    #The case when a single year is passed. \n+    else: \n+        #Formats the SQL statement for the year. \n+        sql_base = sql_base.format(year=year) \n+        #Executes the SQL statement against the database. \n+        cur.execute(sql_base) \n+        lar_df = pd.DataFrame(cur.fetchall(), \n+            columns=[desc[0] for desc in cur.description])  \n+    \n+    #The case when a filepath specified. \n+    if filepath != None: \n+        #Writes to the filepath specified as a csv. \n+        lar_df.to_csv(filepath, sep=\"|\", index=False, header=None)\n+        #Prints the location of the saved file. \n+        print(\"Dataframe has been saved to: \" + filepath)\n+    return lar_df\n+\n+def lar_sql_file_to_df(cur=None, year=None, sql_file=None, \n+    filepath=None):\n+    \"\"\"\n+    Reads in a file with a SQL statement, and \n+    executes the SQL statement against a LAR database. \n+    \"\"\"\n+    #Create blank string to modify into SQL query.\n+    sql_base = \"\" \n+    #Open the SQL file.\n+    with open(sql_file) as in_sql: \n+        #Reads all lines in the SQL file.\n+        for line in in_sql.readlines(): \n+            #Concatenates lines and removes newline characters.\n+            #Stores resulting string to a sql_base variable. \n+            sql_base = sql_base + line.strip(\"\\n\") \n+    #Executes sql_base against the LAR database with \n+    #the sql_to_df function. \n+    lar_df = lar_sql_to_df(sql_base=sql_base, year=year, \n+        filepath=filepath)\n+    return lar_df\n+\n+\n+# ### Creating SQL Command Files for Loan Products\n+# The following code generates a SQL command that pulls loans \n+# originated for conventional one to four-family home purchases. \n+# Action Type is the outcome of the loan application where \n+# Action Type = 1 indicates that the loan had been originated. \n+\n+# In[ ]:\n+\n+\n+sql_base = lar_select_by_product(where_ext = \"AND action_type = '1'\", \n+    filepath=\"sql_commands/4_conv_home_orig.sql\")\n+\n+print(sql_base)\n+\n+\n+# ### Executing a SQL Command Against a Database.\n+# The following code uses the sql_base defined above to create a \n+# Pandas dataframe, executing the command against the database. \n+\n+# In[ ]:\n+\n+\n+conv_home_orig_df = lar_sql_to_df(\n+    cur=cur, \n+    year=2017, \n+    sql_base=sql_base, \n+    filepath=\"analysis_output/data/3_conv_home_orig.txt\")\n+\n+conv_home_orig_df\n+\n+\n+# ### Converting to Numerics\n+# The load scripts store all LAR variables as character-varying \n+# strings in SQL. The code below transforms the dataframe output \n+# into numerics so that operations such as aggregations and averages \n+# can be performed. \n+\n+# In[ ]:\n+\n+#Takes the column names. \n+columns = conv_home_orig_df.columns.get_values() \n+#Places column names in a list. \n+columns = columns.tolist() \n+\n+#Converts each column value to numerics. \n+for column in columns:\n+    conv_home_orig_df[column] = pd.to_numeric(\n+        conv_home_orig_df[column], errors='ignore') \n+\n+\n+# A table of LAR data can be transformed into numerics by casting \n+# variables individually in the select statement. Non-categorical \n+# variables, such as loan amount or income, can be converted to \n+# numerics while maintaining non-categorical variables, such as ","path":"analysis_examples/3._Segmenting_Loan_Application_Data_by_Type_of_Loan.py","position":422,"original_position":422,"commit_id":"5f29c58859ab1e426c6fe0a542a90eb6b876d00c","original_commit_id":"5f29c58859ab1e426c6fe0a542a90eb6b876d00c","user":{"login":"MichaelFurey17","id":43118127,"node_id":"MDQ6VXNlcjQzMTE4MTI3","avatar_url":"https://avatars1.githubusercontent.com/u/43118127?v=4","gravatar_id":"","url":"https://api.github.com/users/MichaelFurey17","html_url":"https://github.com/MichaelFurey17","followers_url":"https://api.github.com/users/MichaelFurey17/followers","following_url":"https://api.github.com/users/MichaelFurey17/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFurey17/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFurey17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFurey17/subscriptions","organizations_url":"https://api.github.com/users/MichaelFurey17/orgs","repos_url":"https://api.github.com/users/MichaelFurey17/repos","events_url":"https://api.github.com/users/MichaelFurey17/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFurey17/received_events","type":"User","site_admin":false},"body":"Sure! We can discuss. ","created_at":"2018-11-28T17:00:44Z","updated_at":"2018-11-28T17:00:45Z","html_url":"https://github.com/cfpb/HMDA_Data_Science_Kit/pull/49#discussion_r237174808","pull_request_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/comments/237174808"},"html":{"href":"https://github.com/cfpb/HMDA_Data_Science_Kit/pull/49#discussion_r237174808"},"pull_request":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49"}},"in_reply_to_id":236934097},"pull_request":{"url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49","id":234004066,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM0MDA0MDY2","html_url":"https://github.com/cfpb/HMDA_Data_Science_Kit/pull/49","diff_url":"https://github.com/cfpb/HMDA_Data_Science_Kit/pull/49.diff","patch_url":"https://github.com/cfpb/HMDA_Data_Science_Kit/pull/49.patch","issue_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues/49","number":49,"state":"open","locked":false,"title":"Adding Notebook 3 and Function Library","user":{"login":"MichaelFurey17","id":43118127,"node_id":"MDQ6VXNlcjQzMTE4MTI3","avatar_url":"https://avatars1.githubusercontent.com/u/43118127?v=4","gravatar_id":"","url":"https://api.github.com/users/MichaelFurey17","html_url":"https://github.com/MichaelFurey17","followers_url":"https://api.github.com/users/MichaelFurey17/followers","following_url":"https://api.github.com/users/MichaelFurey17/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFurey17/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFurey17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFurey17/subscriptions","organizations_url":"https://api.github.com/users/MichaelFurey17/orgs","repos_url":"https://api.github.com/users/MichaelFurey17/repos","events_url":"https://api.github.com/users/MichaelFurey17/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFurey17/received_events","type":"User","site_admin":false},"body":"Close #40 and #43 ","created_at":"2018-11-27T17:47:21Z","updated_at":"2018-11-28T17:00:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5a8d1829e4119e884176b170b733b756570444dc","assignee":{"login":"MichaelFurey17","id":43118127,"node_id":"MDQ6VXNlcjQzMTE4MTI3","avatar_url":"https://avatars1.githubusercontent.com/u/43118127?v=4","gravatar_id":"","url":"https://api.github.com/users/MichaelFurey17","html_url":"https://github.com/MichaelFurey17","followers_url":"https://api.github.com/users/MichaelFurey17/followers","following_url":"https://api.github.com/users/MichaelFurey17/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFurey17/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFurey17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFurey17/subscriptions","organizations_url":"https://api.github.com/users/MichaelFurey17/orgs","repos_url":"https://api.github.com/users/MichaelFurey17/repos","events_url":"https://api.github.com/users/MichaelFurey17/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFurey17/received_events","type":"User","site_admin":false},"assignees":[{"login":"MichaelFurey17","id":43118127,"node_id":"MDQ6VXNlcjQzMTE4MTI3","avatar_url":"https://avatars1.githubusercontent.com/u/43118127?v=4","gravatar_id":"","url":"https://api.github.com/users/MichaelFurey17","html_url":"https://github.com/MichaelFurey17","followers_url":"https://api.github.com/users/MichaelFurey17/followers","following_url":"https://api.github.com/users/MichaelFurey17/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFurey17/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFurey17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFurey17/subscriptions","organizations_url":"https://api.github.com/users/MichaelFurey17/orgs","repos_url":"https://api.github.com/users/MichaelFurey17/repos","events_url":"https://api.github.com/users/MichaelFurey17/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFurey17/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49/commits","review_comments_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49/comments","review_comment_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues/49/comments","statuses_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/statuses/5f29c58859ab1e426c6fe0a542a90eb6b876d00c","head":{"label":"MichaelFurey17:product_function","ref":"product_function","sha":"5f29c58859ab1e426c6fe0a542a90eb6b876d00c","user":{"login":"MichaelFurey17","id":43118127,"node_id":"MDQ6VXNlcjQzMTE4MTI3","avatar_url":"https://avatars1.githubusercontent.com/u/43118127?v=4","gravatar_id":"","url":"https://api.github.com/users/MichaelFurey17","html_url":"https://github.com/MichaelFurey17","followers_url":"https://api.github.com/users/MichaelFurey17/followers","following_url":"https://api.github.com/users/MichaelFurey17/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFurey17/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFurey17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFurey17/subscriptions","organizations_url":"https://api.github.com/users/MichaelFurey17/orgs","repos_url":"https://api.github.com/users/MichaelFurey17/repos","events_url":"https://api.github.com/users/MichaelFurey17/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFurey17/received_events","type":"User","site_admin":false},"repo":{"id":149181745,"node_id":"MDEwOlJlcG9zaXRvcnkxNDkxODE3NDU=","name":"HMDA_Data_Science_Kit","full_name":"MichaelFurey17/HMDA_Data_Science_Kit","private":false,"owner":{"login":"MichaelFurey17","id":43118127,"node_id":"MDQ6VXNlcjQzMTE4MTI3","avatar_url":"https://avatars1.githubusercontent.com/u/43118127?v=4","gravatar_id":"","url":"https://api.github.com/users/MichaelFurey17","html_url":"https://github.com/MichaelFurey17","followers_url":"https://api.github.com/users/MichaelFurey17/followers","following_url":"https://api.github.com/users/MichaelFurey17/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFurey17/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFurey17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFurey17/subscriptions","organizations_url":"https://api.github.com/users/MichaelFurey17/orgs","repos_url":"https://api.github.com/users/MichaelFurey17/repos","events_url":"https://api.github.com/users/MichaelFurey17/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFurey17/received_events","type":"User","site_admin":false},"html_url":"https://github.com/MichaelFurey17/HMDA_Data_Science_Kit","description":null,"fork":true,"url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit","forks_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/forks","keys_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/teams","hooks_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/hooks","issue_events_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/issues/events{/number}","events_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/events","assignees_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/assignees{/user}","branches_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/branches{/branch}","tags_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/tags","blobs_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/git/refs{/sha}","trees_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/statuses/{sha}","languages_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/languages","stargazers_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/stargazers","contributors_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/contributors","subscribers_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/subscribers","subscription_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/subscription","commits_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/commits{/sha}","git_commits_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/git/commits{/sha}","comments_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/comments{/number}","issue_comment_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/issues/comments{/number}","contents_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/contents/{+path}","compare_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/merges","archive_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/downloads","issues_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/issues{/number}","pulls_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/pulls{/number}","milestones_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/milestones{/number}","notifications_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/labels{/name}","releases_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/releases{/id}","deployments_url":"https://api.github.com/repos/MichaelFurey17/HMDA_Data_Science_Kit/deployments","created_at":"2018-09-17T20:08:51Z","updated_at":"2018-10-09T21:00:47Z","pushed_at":"2018-11-27T17:45:24Z","git_url":"git://github.com/MichaelFurey17/HMDA_Data_Science_Kit.git","ssh_url":"git@github.com:MichaelFurey17/HMDA_Data_Science_Kit.git","clone_url":"https://github.com/MichaelFurey17/HMDA_Data_Science_Kit.git","svn_url":"https://github.com/MichaelFurey17/HMDA_Data_Science_Kit","homepage":null,"size":252,"stargazers_count":0,"watchers_count":0,"language":"Jupyter Notebook","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"cfpb:master","ref":"master","sha":"4a58026af546716905c693f2fdc2d2a94610e2a1","user":{"login":"cfpb","id":1071563,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNzE1NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1071563?v=4","gravatar_id":"","url":"https://api.github.com/users/cfpb","html_url":"https://github.com/cfpb","followers_url":"https://api.github.com/users/cfpb/followers","following_url":"https://api.github.com/users/cfpb/following{/other_user}","gists_url":"https://api.github.com/users/cfpb/gists{/gist_id}","starred_url":"https://api.github.com/users/cfpb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cfpb/subscriptions","organizations_url":"https://api.github.com/users/cfpb/orgs","repos_url":"https://api.github.com/users/cfpb/repos","events_url":"https://api.github.com/users/cfpb/events{/privacy}","received_events_url":"https://api.github.com/users/cfpb/received_events","type":"Organization","site_admin":false},"repo":{"id":144180218,"node_id":"MDEwOlJlcG9zaXRvcnkxNDQxODAyMTg=","name":"HMDA_Data_Science_Kit","full_name":"cfpb/HMDA_Data_Science_Kit","private":false,"owner":{"login":"cfpb","id":1071563,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNzE1NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1071563?v=4","gravatar_id":"","url":"https://api.github.com/users/cfpb","html_url":"https://github.com/cfpb","followers_url":"https://api.github.com/users/cfpb/followers","following_url":"https://api.github.com/users/cfpb/following{/other_user}","gists_url":"https://api.github.com/users/cfpb/gists{/gist_id}","starred_url":"https://api.github.com/users/cfpb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cfpb/subscriptions","organizations_url":"https://api.github.com/users/cfpb/orgs","repos_url":"https://api.github.com/users/cfpb/repos","events_url":"https://api.github.com/users/cfpb/events{/privacy}","received_events_url":"https://api.github.com/users/cfpb/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/cfpb/HMDA_Data_Science_Kit","description":null,"fork":false,"url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit","forks_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/forks","keys_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/teams","hooks_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/hooks","issue_events_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues/events{/number}","events_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/events","assignees_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/assignees{/user}","branches_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/branches{/branch}","tags_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/tags","blobs_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/git/refs{/sha}","trees_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/statuses/{sha}","languages_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/languages","stargazers_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/stargazers","contributors_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/contributors","subscribers_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/subscribers","subscription_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/subscription","commits_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/commits{/sha}","git_commits_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/git/commits{/sha}","comments_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/comments{/number}","issue_comment_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues/comments{/number}","contents_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/contents/{+path}","compare_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/merges","archive_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/downloads","issues_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues{/number}","pulls_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls{/number}","milestones_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/milestones{/number}","notifications_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/labels{/name}","releases_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/releases{/id}","deployments_url":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/deployments","created_at":"2018-08-09T16:52:07Z","updated_at":"2018-10-29T13:33:57Z","pushed_at":"2018-11-27T17:47:21Z","git_url":"git://github.com/cfpb/HMDA_Data_Science_Kit.git","ssh_url":"git@github.com:cfpb/HMDA_Data_Science_Kit.git","clone_url":"https://github.com/cfpb/HMDA_Data_Science_Kit.git","svn_url":"https://github.com/cfpb/HMDA_Data_Science_Kit","homepage":null,"size":245,"stargazers_count":2,"watchers_count":2,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":23,"license":null,"forks":2,"open_issues":23,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49"},"html":{"href":"https://github.com/cfpb/HMDA_Data_Science_Kit/pull/49"},"issue":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues/49"},"comments":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/issues/49/comments"},"review_comments":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49/comments"},"review_comment":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/pulls/49/commits"},"statuses":{"href":"https://api.github.com/repos/cfpb/HMDA_Data_Science_Kit/statuses/5f29c58859ab1e426c6fe0a542a90eb6b876d00c"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"MichaelFurey17"}}