{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# A Python Tour of Data Science: Data Acquisition & Exploration \n", "\n", "[Michaƫl Defferrard](http://deff.ch), *PhD student*, [EPFL](http://epfl.ch) [LTS2](http://lts2.epfl.ch)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python 3.5\n" ] } ], "source": [ "# While packages are usually imported at the top, they can\n", "# be imported wherever you prefer, in whatever scope.\n", "import numpy as np\n", "\n", "# Show matplotlib graphs inside the notebook.\n", "%matplotlib inline\n", "\n", "import sys\n", "print('Python {}.{}'.format(sys.version_info.major, sys.version_info.minor))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1 Data Importation\n", "\n", "* The world is messy, we got data in CSV, [JSON](http://www.json.org), Excel, [HDF5](https://www.hdfgroup.org/HDF5) files and an SQL database.\n", "* Could also have been matlab, HTML, XML files or from the web via scraping and APIs (e.g. [Twitter Firehose](https://dev.twitter.com/streaming/firehose)) or noSQL data stores, etc." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Search modules in parent folder.\n", "import sys\n", "sys.path.insert(1, '..')\n", "import ntds\n", "\n", "# Cross-platform (Windows / Mac / Linux) paths.\n", "import os.path\n", "folder = os.path.join('..', 'data', 'credit_card_defaults')\n", "\n", "# Download the data.\n", "ntds.get_data(folder)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bills.hdf5 demographics.csv payments.sqlite X.npy\r\n", "delays.xls original.xls target.json y.npy\r\n" ] } ], "source": [ "!ls ../data/credit_card_defaults/\n", "# Windows: !dir ..\\data\\credit_card_defaults\\" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.1 Importing from an SQL Database\n", "\n", "[SQLAlchemy](http://www.sqlalchemy.org/) to the rescue.\n", "* Abstraction between DBAPIs.\n", " * Supported databases: SQLite, Postgresql, MySQL, Oracle, MS-SQL, Firebird, Sybase and others.\n", "* [SQL Expression Language](http://docs.sqlalchemy.org/en/rel_1_0/core/tutorial.html).\n", "* [Object Relational Mapper (ORM)](http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2016-10-24 18:26:57,828 INFO sqlalchemy.engine.base.Engine SELECT payments.\"ID\", payments.\"PAY1\", payments.\"PAY2\", payments.\"PAY3\", payments.\"PAY4\", payments.\"PAY5\", payments.\"PAY6\" \n", "FROM payments\n", "2016-10-24 18:26:57,829 INFO sqlalchemy.engine.base.Engine ()\n" ] } ], "source": [ "import sqlalchemy\n", "filename = os.path.join(folder, 'payments.sqlite')\n", "engine = sqlalchemy.create_engine('sqlite:///' + filename, echo=False)\n", "\n", "# Infer from existing DB.\n", "metadata = sqlalchemy.MetaData()\n", "metadata.reflect(engine)\n", "\n", "# An SQL SELECT statement.\n", "table = metadata.tables.get('payments')\n", "op = sqlalchemy.sql.select([table])\n", "engine.echo = True\n", "result = engine.execute(op)\n", "engine.echo = False" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ID: 1, payments: (0, 689, 0, 0, 0, 0)\n", "ID: 2, payments: (0, 1000, 1000, 1000, 0, 2000)\n", "ID: 3, payments: (1518, 1500, 1000, 1000, 1000, 5000)\n", "ID: 4, payments: (2000, 2019, 1200, 1100, 1069, 1000)\n", "ID: 5, payments: (2000, 36681, 10000, 9000, 689, 679)\n", "ID: 6, payments: (2500, 1815, 657, 1000, 1000, 800)\n", "ID: 7, payments: (55000, 40000, 38000, 20239, 13750, 13770)\n", "ID: 8, payments: (380, 601, 0, 581, 1687, 1542)\n", "ID: 9, payments: (3329, 0, 432, 1000, 1000, 1000)\n", "ID: 10, payments: (0, 0, 0, 13007, 1122, 0)\n" ] } ], "source": [ "# Show some lines, i.e. clients.\n", "for row in result.fetchmany(size=10):\n", " print('ID: {:2d}, payments: {}'.format(row[0], row[1:]))\n", "result.close()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1299 clients paid 1000 in April 2005\n" ] } ], "source": [ "# Execute some raw SQL.\n", "paid = 1000\n", "op = sqlalchemy.sql.text('SELECT payments.\"ID\", payments.\"PAY6\" FROM payments WHERE payments.\"PAY6\" = {}'.format(paid))\n", "result = engine.execute(op).fetchall()\n", "print('{} clients paid {} in April 2005'.format(len(result), paid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 Merging data Sources\n", "\n", "Put some [pandas](http://pandas.pydata.org/) in our Python !\n", "* Import / export data from / to various sources.\n", "* Data frames manipulations: slicing, dicing, grouping.\n", "* And many more !" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_data(directory):\n", " filename_csv = os.path.join(directory, 'demographics.csv')\n", " filename_xls = os.path.join(directory, 'delays.xls')\n", " filename_hdf = os.path.join(directory, 'bills.hdf5')\n", " filename_json = os.path.join(directory, 'target.json')\n", "\n", " demographics = pd.read_csv(filename_csv, index_col=0)\n", " delays = pd.read_excel(filename_xls, index_col=0)\n", " bills = pd.read_hdf(filename_hdf, 'bills')\n", " payments = pd.read_sql('payments', engine, index_col='ID')\n", " target = pd.read_json(filename_json)\n", "\n", " return pd.concat([demographics, delays, bills, payments, target], axis=1)\n", "\n", "import pandas as pd\n", "data = get_data(folder)\n", "attributes = data.columns.tolist()\n", "\n", "# Tansform from numerical to categorical variable.\n", "data['SEX'] = data['SEX'].astype('category')\n", "data['SEX'].cat.categories = ['MALE', 'FEMALE']\n", "data['MARRIAGE'] = data['MARRIAGE'].astype('category')\n", "data['MARRIAGE'].cat.categories = ['UNK', 'MARRIED', 'SINGLE', 'OTHERS']\n", "data['EDUCATION'] = data['EDUCATION'].astype('category')\n", "data['EDUCATION'].cat.categories = ['UNK', 'GRAD SCHOOL', 'UNIVERSITY', 'HIGH SCHOOL', 'OTHERS', 'UNK1', 'UNK2']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.3 Looking at the Data" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": 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", "
LIMITSEXEDUCATIONMARRIAGEAGEDEFAULT
ID
120000FEMALEUNIVERSITYMARRIED241
2120000FEMALEUNIVERSITYSINGLE261
390000FEMALEUNIVERSITYSINGLE340
450000FEMALEUNIVERSITYMARRIED370
550000MALEUNIVERSITYMARRIED570
650000MALEGRAD SCHOOLSINGLE370
\n", "
" ], "text/plain": [ " LIMIT SEX EDUCATION MARRIAGE AGE DEFAULT\n", "ID \n", "1 20000 FEMALE UNIVERSITY MARRIED 24 1\n", "2 120000 FEMALE UNIVERSITY SINGLE 26 1\n", "3 90000 FEMALE UNIVERSITY SINGLE 34 0\n", "4 50000 FEMALE UNIVERSITY MARRIED 37 0\n", "5 50000 MALE UNIVERSITY MARRIED 57 0\n", "6 50000 MALE GRAD SCHOOL SINGLE 37 0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.loc[:6, ['LIMIT', 'SEX', 'EDUCATION', 'MARRIAGE', 'AGE', 'DEFAULT']]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "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", "
AGEDELAY1DELAY2DELAY3DELAY4DELAY5
ID
12422-1-1-2
226-12000
33400000
43700000
557-10-100
\n", "
" ], "text/plain": [ " AGE DELAY1 DELAY2 DELAY3 DELAY4 DELAY5\n", "ID \n", "1 24 2 2 -1 -1 -2\n", "2 26 -1 2 0 0 0\n", "3 34 0 0 0 0 0\n", "4 37 0 0 0 0 0\n", "5 57 -1 0 -1 0 0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.iloc[:5, 4:10]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": 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", "
BILL1BILL2BILL3BILL4BILL5BILL6PAY1PAY2PAY3PAY4PAY5PAY6
ID
13913310268900006890000
2268217252682327234553261010001000100002000
3292391402713559143311494815549151815001000100010005000
4469904823349291283142895929547200020191200110010691000
58617567035835209401914619131200036681100009000689679
\n", "
" ], "text/plain": [ " BILL1 BILL2 BILL3 BILL4 BILL5 BILL6 PAY1 PAY2 PAY3 PAY4 PAY5 \\\n", "ID \n", "1 3913 3102 689 0 0 0 0 689 0 0 0 \n", "2 2682 1725 2682 3272 3455 3261 0 1000 1000 1000 0 \n", "3 29239 14027 13559 14331 14948 15549 1518 1500 1000 1000 1000 \n", "4 46990 48233 49291 28314 28959 29547 2000 2019 1200 1100 1069 \n", "5 8617 5670 35835 20940 19146 19131 2000 36681 10000 9000 689 \n", "\n", " PAY6 \n", "ID \n", "1 0 \n", "2 2000 \n", "3 5000 \n", "4 1000 \n", "5 679 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.iloc[:5, 11:23]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Export as an [HTML table](./subset.html) for manual inspection." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data[:1000].to_html('subset.html')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2 Data Cleaning\n", "\n", "While cleaning data is the [most time-consuming, least enjoyable Data Science task](http://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-consuming-least-enjoyable-data-science-task-survey-says), it should be perfomed nonetheless. Problems come in two flavours:\n", "\n", "1. Missing data, i.e. unknown values.\n", "1. Errors in data, i.e. wrong values.\n", "\n", "The actions to be taken in each case is highly **data and problem specific**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: marital status\n", "1. According to dataset description, it should either be 1 (married), 2 (single) or 3 (others).\n", "1. But we find some 0 (previously transformed to `UNK`).\n", "1. Let's *assume* that 0 represents errors when collecting the data and that we should remove those clients." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SINGLE 15964\n", "MARRIED 13659\n", "OTHERS 323\n", "UNK 54\n", "Name: MARRIAGE, dtype: int64\n", "\n", "We are left with (29946, 24) clients\n", "\n", "[MARRIED, SINGLE, OTHERS]\n", "Categories (3, object): [MARRIED, SINGLE, OTHERS]\n" ] } ], "source": [ "print(data['MARRIAGE'].value_counts())\n", "data = data[data['MARRIAGE'] != 'UNK']\n", "data['MARRIAGE'] = data['MARRIAGE'].cat.remove_unused_categories()\n", "print('\\nWe are left with {} clients\\n'.format(data.shape))\n", "print(data['MARRIAGE'].unique())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example: education\n", "1. It should either be 1 (graduate school), 2 (university), 3 (high school) or 4 (others).\n", "1. But we find some 0, 5 and 6 (previously transformed to `UNK`, `UNK1` and `UNK2`).\n", "1. Let's *assume* these values are dubious, but do not invalidate the data and keep them as they may have some predictive power." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "UNIVERSITY 14024\n", "GRAD SCHOOL 10581\n", "HIGH SCHOOL 4873\n", "UNK1 280\n", "OTHERS 123\n", "UNK2 51\n", "UNK 14\n", "Name: EDUCATION, dtype: int64\n", "UNIVERSITY 14024\n", "GRAD SCHOOL 10581\n", "HIGH SCHOOL 4873\n", "UNK 345\n", "OTHERS 123\n", "Name: EDUCATION, dtype: int64\n" ] } ], "source": [ "print(data['EDUCATION'].value_counts())\n", "data.loc[data['EDUCATION']=='UNK1', 'EDUCATION'] = 'UNK'\n", "data.loc[data['EDUCATION']=='UNK2', 'EDUCATION'] = 'UNK'\n", "data['EDUCATION'] = data['EDUCATION'].cat.remove_unused_categories()\n", "print(data['EDUCATION'].value_counts())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3 Data Exploration\n", "\n", "* Get descriptive statistics.\n", "* Plot informative figures.\n", "* Verify some intuitive correlations.\n", "\n", "Let's get first some descriptive statistics of our numerical variables." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": 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", "
LIMITAGEBILL1BILL2BILL3BILL4BILL5BILL6PAY1PAY2PAY3PAY4PAY5PAY6
count2994629946299462994629946299462994629946299462994629946299462994629946
mean16754635512784922447063433064035238911565959265227482948045220
std1298079736827121969393643746083659592165522306017618156771529017791
min1000021-165580-69777-157264-170000-81334-339603000000
25%50000283570298826842335177012611000836390298255122
50%14000034224002122120108190661812117098210020101800150015001500
75%24000041672636410860240546015024449248500750004511401540404000
max10000007996451198393116640898915869271719616648735521684259896040621000426529528666
\n", "
" ], "text/plain": [ " LIMIT AGE BILL1 BILL2 BILL3 BILL4 BILL5 BILL6 \\\n", "count 29946 29946 29946 29946 29946 29946 29946 29946 \n", "mean 167546 35 51278 49224 47063 43306 40352 38911 \n", "std 129807 9 73682 71219 69393 64374 60836 59592 \n", "min 10000 21 -165580 -69777 -157264 -170000 -81334 -339603 \n", "25% 50000 28 3570 2988 2684 2335 1770 1261 \n", "50% 140000 34 22400 21221 20108 19066 18121 17098 \n", "75% 240000 41 67263 64108 60240 54601 50244 49248 \n", "max 1000000 79 964511 983931 1664089 891586 927171 961664 \n", "\n", " PAY1 PAY2 PAY3 PAY4 PAY5 PAY6 \n", "count 29946 29946 29946 29946 29946 29946 \n", "mean 5659 5926 5227 4829 4804 5220 \n", "std 16552 23060 17618 15677 15290 17791 \n", "min 0 0 0 0 0 0 \n", "25% 1000 836 390 298 255 122 \n", "50% 2100 2010 1800 1500 1500 1500 \n", "75% 5007 5000 4511 4015 4040 4000 \n", "max 873552 1684259 896040 621000 426529 528666 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "attributes_numerical = ['LIMIT', 'AGE']\n", "attributes_numerical.extend(attributes[11:23])\n", "data.loc[:, attributes_numerical].describe().astype(np.int)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot an histogram of the ages, so that we get a better impression of who our clients are. That may even be an end goal, e.g. if your marketing team asks which customer groups to target.\n", "\n", "Then a boxplot of the bills, which may serve as a verification of the quality of the acquired data." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nE51KAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.loc[:, 'AGE'].plot.hist(bins=20, figsize=(15,5))\n", "ax = data.iloc[:, 11:17].plot.box(logy=True, figsize=(15,5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simple **question**: which proportion of our clients default ?" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Percentage of defaults: 22.14%\n" ] } ], "source": [ "percentage = data['DEFAULT'].value_counts()[1] / data.shape[0] * 100\n", "print('Percentage of defaults: {:.2f}%'.format(percentage))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another **question**: who's more susceptible to default, males or females ?" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": 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", "
DEFAULT01All
SEX
MALE9003287111874
FEMALE14312376018072
All23315663129946
\n", "
" ], "text/plain": [ "DEFAULT 0 1 All\n", "SEX \n", "MALE 9003 2871 11874\n", "FEMALE 14312 3760 18072\n", "All 23315 6631 29946" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "observed = pd.crosstab(data['SEX'], data['DEFAULT'], margins=True)\n", "observed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Seems like females are better risk. Let's verify with a Chi-Squared test of independance, using [scipy.stats](http://docs.scipy.org/doc/scipy/reference/stats.html)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "p-value = 6.75e-12\n", "expected values:\n", "[[ 9244.71749148 2629.28250852]\n", " [ 14070.28250852 4001.71749148]]\n" ] } ], "source": [ "import scipy.stats as stats\n", "_, p, _, expected = stats.chi2_contingency(observed.iloc[:2,:2])\n", "print('p-value = {:.2e}'.format(p))\n", "print('expected values:\\n{}'.format(expected))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Intuition**: people who pay late present a higher risk of defaulting. Let's verify !\n", "Verifying some intuitions will also help you to identify mistakes. E.g. it would be suspicious if that intuition is not verified in the data: did we select the right column, or did we miss-compute a result ?" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "group = data.groupby('DELAY1').mean()\n", "corr = data['DEFAULT'].corr(data['DELAY1'], method='pearson')\n", "group['DEFAULT'].plot(grid=True, title='Pearson correlation: {:.4f}'.format(corr), figsize=(15,5));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4 Interactive Visualization\n", "\n", "[Bokeh](http://bokeh.pydata.org) is a Python interactive visualization library that targets modern web browsers for presentation, in the style of [D3.js](https://d3js.org). Alternatively, [matplotlib.widgets](http://matplotlib.org/api/widgets_api.html) could be used. Those interactive visualizations are very helpful to explore the data at hand in the quest of anomalies or patterns. Try with the plots below !" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "(function(global) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = \"1\";\n", "\n", " if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force !== \"\") {\n", " window._bokeh_onload_callbacks = [];\n", " window._bokeh_is_loading = undefined;\n", " }\n", "\n", "\n", " \n", " if (typeof (window._bokeh_timeout) === \"undefined\" || force !== \"\") {\n", " window._bokeh_timeout = Date.now() + 5000;\n", " window._bokeh_failed_load = false;\n", " }\n", "\n", " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"

\\n\"+\n", " \"
    \\n\"+\n", " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", " \"
\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " if (window.Bokeh !== undefined) {\n", " Bokeh.$(\"#6251e522-3dca-475a-9201-57f79a682f46\").text(\"BokehJS successfully loaded.\");\n", " } else if (Date.now() < window._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", " function run_callbacks() {\n", " window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " delete window._bokeh_onload_callbacks\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " window._bokeh_onload_callbacks.push(callback);\n", " if (window._bokeh_is_loading > 0) {\n", " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " window._bokeh_is_loading = js_urls.length;\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var s = document.createElement('script');\n", " s.src = url;\n", " s.async = false;\n", " s.onreadystatechange = s.onload = function() {\n", " window._bokeh_is_loading--;\n", " if (window._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", " run_callbacks()\n", " }\n", " };\n", " s.onerror = function() {\n", " console.warn(\"failed to load library \" + url);\n", " };\n", " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", " }\n", " };var element = document.getElementById(\"6251e522-3dca-475a-9201-57f79a682f46\");\n", " if (element == null) {\n", " console.log(\"Bokeh: ERROR: autoload.js configured with elementid '6251e522-3dca-475a-9201-57f79a682f46' but no matching script tag was found. \")\n", " return false;\n", " }\n", "\n", " var js_urls = ['https://cdn.pydata.org/bokeh/release/bokeh-0.12.3.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.3.min.js'];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", " \n", " function(Bokeh) {\n", " \n", " Bokeh.$(\"#6251e522-3dca-475a-9201-57f79a682f46\").text(\"BokehJS is loading...\");\n", " },\n", " function(Bokeh) {\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.3.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.3.min.css\");\n", " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.3.min.css\");\n", " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.3.min.css\");\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " \n", " if ((window.Bokeh !== undefined) || (force === \"1\")) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i](window.Bokeh);\n", " }if (force === \"1\") {\n", " display_loaded();\n", " }} else if (Date.now() < window._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!window._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " window._bokeh_failed_load = true;\n", " } else if (!force) {\n", " var cell = $(\"#6251e522-3dca-475a-9201-57f79a682f46\").parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", "\n", " }\n", "\n", " if (window._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(js_urls, function() {\n", " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(this));" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "
\n", "
\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from bokeh.plotting import output_notebook, figure, show\n", "from bokeh.layouts import gridplot\n", "from bokeh.models import ColumnDataSource\n", "\n", "output_notebook()\n", "\n", "x, y1, y2 = 'LIMIT', 'PAY1', 'PAY2'\n", "n = 1000 # Less intensive for the browser.\n", "\n", "options = dict(\n", " tools='pan,box_zoom,wheel_zoom,box_select,lasso_select,crosshair,reset,save',\n", " x_axis_type='log', y_axis_type='log',\n", ")\n", "plot1 = figure(\n", " x_range=[1e4,1e6],\n", " x_axis_label=x, y_axis_label=y1,\n", " **options\n", ")\n", "plot2 = figure(\n", " x_range=plot1.x_range, y_range=plot1.y_range,\n", " x_axis_label=x, y_axis_label=y2,\n", " **options\n", ")\n", "\n", "html_color = lambda r,g,b: '#{:02x}{:02x}{:02x}'.format(r,g,b)\n", "colors = [html_color(150,0,0) if default == 1 else html_color(0,150,0) for default in data['DEFAULT'][:n]]\n", "# The above line is a list comprehension.\n", "\n", "radii = data['AGE'][:n] / 5\n", "\n", "# To link brushing (where a selection on one plot causes a selection to update on other plots).\n", "source = ColumnDataSource(dict(x=data[x][:n], y1=data[y1][:n], y2=data[y2][:n], radii=radii, colors=colors))\n", "\n", "plot1.scatter('x', 'y1', source=source, size='radii', color='colors', alpha=0.6)\n", "plot2.scatter('x', 'y2', source=source, size='radii', color='colors', alpha=0.6)\n", "\n", "plot = gridplot([[plot1, plot2]], toolbar_location='right', plot_width=400, plot_height=400, title='adsf')\n", "\n", "show(plot)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5 Traditional Statistics\n", "\n", "[Statsmodels](http://statsmodels.sourceforge.net/) is similar to scikit-learn, with much stronger emphasis on parameter estimation and (statistical) testing. It is similar in spirit to other statistical packages such as [R](https://www.r-project.org), [SPSS](http://www.ibm.com/analytics/us/en/technology/spss), [SAS](http://www.sas.com/de_ch/home.html) and [Stata](http://www.stata.com). That split reflects the [two statistical modeling cultures](http://projecteuclid.org/euclid.ss/1009213726): (1) Statistics, which want to know how well a given model fits the data, and what variables \"explain\" or affect the outcome, and (2) Machine Learning, where the main supported task is chosing the \"best\" model for prediction." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Back to numeric values.\n", "# Note: in a serious project, these should be treated as categories.\n", "data['SEX'].cat.categories = [-1, 1]\n", "data['SEX'] = data['SEX'].astype(np.int)\n", "data['MARRIAGE'].cat.categories = [-1, 1, 0]\n", "data['MARRIAGE'] = data['MARRIAGE'].astype(np.int)\n", "data['EDUCATION'].cat.categories = [-2, 2, 1, 0, -1]\n", "data['EDUCATION'] = data['EDUCATION'].astype(np.int)\n", "\n", "data['DEFAULT'] = data['DEFAULT'] * 2 - 1 # [0,1] --> [-1,1]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The data is a with 29946 samples of dimensionality 23.\n" ] } ], "source": [ "# Observations and targets.\n", "X = data.values[:,:23]\n", "y = data.values[:,23]\n", "n, d = X.shape\n", "print('The data is a {} with {} samples of dimensionality {}.'.format(type(X), n, d))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: y R-squared: 0.384\n", "Model: OLS Adj. R-squared: 0.383\n", "Method: Least Squares F-statistic: 809.4\n", "Date: Mon, 24 Oct 2016 Prob (F-statistic): 0.00\n", "Time: 18:27:02 Log-Likelihood: -35248.\n", "No. Observations: 29946 AIC: 7.054e+04\n", "Df Residuals: 29923 BIC: 7.073e+04\n", "Df Model: 23 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [95.0% Conf. Int.]\n", "------------------------------------------------------------------------------\n", "x1 -2.364e-07 4.35e-08 -5.428 0.000 -3.22e-07 -1.51e-07\n", "x2 -0.0337 0.005 -7.280 0.000 -0.043 -0.025\n", "x3 -0.0265 0.006 -4.656 0.000 -0.038 -0.015\n", "x4 -0.0801 0.005 -16.708 0.000 -0.090 -0.071\n", "x5 -0.0103 0.000 -42.750 0.000 -0.011 -0.010\n", "x6 0.1853 0.006 33.159 0.000 0.174 0.196\n", "x7 0.0352 0.007 5.221 0.000 0.022 0.048\n", "x8 0.0196 0.007 2.695 0.007 0.005 0.034\n", "x9 0.0060 0.008 0.747 0.455 -0.010 0.022\n", "x10 0.0114 0.009 1.314 0.189 -0.006 0.029\n", "x11 0.0068 0.007 0.959 0.338 -0.007 0.021\n", "x12 -1.372e-06 2.31e-07 -5.946 0.000 -1.82e-06 -9.2e-07\n", "x13 3.537e-07 3.24e-07 1.091 0.275 -2.82e-07 9.89e-07\n", "x14 3.364e-08 3.05e-07 0.110 0.912 -5.65e-07 6.32e-07\n", "x15 -1.465e-07 3.18e-07 -0.461 0.645 -7.7e-07 4.77e-07\n", "x16 1.527e-08 3.73e-07 0.041 0.967 -7.16e-07 7.46e-07\n", "x17 2.117e-07 2.95e-07 0.717 0.473 -3.67e-07 7.9e-07\n", "x18 -1.583e-06 3.58e-07 -4.421 0.000 -2.29e-06 -8.81e-07\n", "x19 -4.521e-07 2.94e-07 -1.536 0.125 -1.03e-06 1.25e-07\n", "x20 -3.437e-08 3.41e-07 -0.101 0.920 -7.04e-07 6.35e-07\n", "x21 -6.357e-07 3.72e-07 -1.710 0.087 -1.36e-06 9.28e-08\n", "x22 -6.479e-07 3.86e-07 -1.680 0.093 -1.4e-06 1.08e-07\n", "x23 -1.959e-07 2.76e-07 -0.710 0.478 -7.37e-07 3.45e-07\n", "==============================================================================\n", "Omnibus: 4479.171 Durbin-Watson: 1.999\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 6851.842\n", "Skew: 1.169 Prob(JB): 0.00\n", "Kurtosis: 3.160 Cond. No. 6.14e+05\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The condition number is large, 6.14e+05. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] } ], "source": [ "import statsmodels.api as sm\n", "\n", "# Fit the Ordinary Least Square regression model.\n", "results = sm.OLS(y, X).fit()\n", "\n", "# Inspect the results.\n", "print(results.summary())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6 Exporting data\n", "\n", "Save the collected data to disk for further analysis." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "np.save(os.path.join(folder, 'X.npy'), X)\n", "np.save(os.path.join(folder, 'y.npy'), y)" ] } ], "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }