{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 常用的 DataFrame 操作\n", "* merge / transform\n", "* subset\n", "* groupby\n", "\n", "其實先前在 kaggle learn 自修的時候已經練習過 Day 8 的內容,這邊再複習一遍,\n", "
且搭配 [Home Credit Default Risk](https://www.kaggle.com/c/home-credit-default-risk/data) 的資料可以在實戰上練習,而不只是操作自定義的數據。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import 需要的套件\n", "import os\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Merge / Transform" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# 生成範例用的資料 ()\n", "df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],\n", " 'B': ['B0', 'B1', 'B2', 'B3'],\n", " 'C': ['C0', 'C1', 'C2', 'C3'],\n", " 'D': ['D0', 'D1', 'D2', 'D3']},\n", " index=[0, 1, 2, 3])\n", "df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],\n", " 'B': ['B4', 'B5', 'B6', 'B7'],\n", " 'C': ['C4', 'C5', 'C6', 'C7'],\n", " 'D': ['D4', 'D5', 'D6', 'D7']},\n", " index=[4, 5, 6, 7])\n", "df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],\n", " 'B': ['B8', 'B9', 'B10', 'B11'],\n", " 'C': ['C8', 'C9', 'C10', 'C11'],\n", " 'D': ['D8', 'D9', 'D10', 'D11']},\n", " index=[8, 9, 10, 11])\n", "\n", "df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],\n", " 'D': ['D2', 'D3', 'D6', 'D7'],\n", " 'F': ['F2', 'F3', 'F6', 'F7']},\n", " index=[2, 3, 6, 7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "數據處理的 general functions 可以參考 [pandas 的文檔](https://pandas.pydata.org/pandas-docs/stable/reference/general_functions.html),寫得很詳細。" ] }, { "cell_type": "code", "execution_count": 3, "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", "
ABCD
0A0B0C0D0
1A1B1C1D1
2A2B2C2D2
3A3B3C3D3
4A4B4C4D4
5A5B5C5D5
6A6B6C6D6
7A7B7C7D7
8A8B8C8D8
9A9B9C9D9
10A10B10C10D10
11A11B11C11D11
\n", "
" ], "text/plain": [ " A B C D\n", "0 A0 B0 C0 D0\n", "1 A1 B1 C1 D1\n", "2 A2 B2 C2 D2\n", "3 A3 B3 C3 D3\n", "4 A4 B4 C4 D4\n", "5 A5 B5 C5 D5\n", "6 A6 B6 C6 D6\n", "7 A7 B7 C7 D7\n", "8 A8 B8 C8 D8\n", "9 A9 B9 C9 D9\n", "10 A10 B10 C10 D10\n", "11 A11 B11 C11 D11" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 沿縱軸合併\n", "result = pd.concat([df1, df2, df3])\n", "result" ] }, { "cell_type": "code", "execution_count": 4, "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", "
ABCDABCDABCD
0A0B0C0D0NaNNaNNaNNaNNaNNaNNaNNaN
1A1B1C1D1NaNNaNNaNNaNNaNNaNNaNNaN
2A2B2C2D2NaNNaNNaNNaNNaNNaNNaNNaN
3A3B3C3D3NaNNaNNaNNaNNaNNaNNaNNaN
4NaNNaNNaNNaNA4B4C4D4NaNNaNNaNNaN
5NaNNaNNaNNaNA5B5C5D5NaNNaNNaNNaN
6NaNNaNNaNNaNA6B6C6D6NaNNaNNaNNaN
7NaNNaNNaNNaNA7B7C7D7NaNNaNNaNNaN
8NaNNaNNaNNaNNaNNaNNaNNaNA8B8C8D8
9NaNNaNNaNNaNNaNNaNNaNNaNA9B9C9D9
10NaNNaNNaNNaNNaNNaNNaNNaNA10B10C10D10
11NaNNaNNaNNaNNaNNaNNaNNaNA11B11C11D11
\n", "
" ], "text/plain": [ " A B C D A B C D A B C D\n", "0 A0 B0 C0 D0 NaN NaN NaN NaN NaN NaN NaN NaN\n", "1 A1 B1 C1 D1 NaN NaN NaN NaN NaN NaN NaN NaN\n", "2 A2 B2 C2 D2 NaN NaN NaN NaN NaN NaN NaN NaN\n", "3 A3 B3 C3 D3 NaN NaN NaN NaN NaN NaN NaN NaN\n", "4 NaN NaN NaN NaN A4 B4 C4 D4 NaN NaN NaN NaN\n", "5 NaN NaN NaN NaN A5 B5 C5 D5 NaN NaN NaN NaN\n", "6 NaN NaN NaN NaN A6 B6 C6 D6 NaN NaN NaN NaN\n", "7 NaN NaN NaN NaN A7 B7 C7 D7 NaN NaN NaN NaN\n", "8 NaN NaN NaN NaN NaN NaN NaN NaN A8 B8 C8 D8\n", "9 NaN NaN NaN NaN NaN NaN NaN NaN A9 B9 C9 D9\n", "10 NaN NaN NaN NaN NaN NaN NaN NaN A10 B10 C10 D10\n", "11 NaN NaN NaN NaN NaN NaN NaN NaN A11 B11 C11 D11" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = pd.concat([df1, df2, df3], axis= 1)\n", "result" ] }, { "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", "
ABCDBDF
0A0B0C0D0NaNNaNNaN
1A1B1C1D1NaNNaNNaN
2A2B2C2D2B2D2F2
3A3B3C3D3B3D3F3
6NaNNaNNaNNaNB6D6F6
7NaNNaNNaNNaNB7D7F7
\n", "
" ], "text/plain": [ " A B C D B D F\n", "0 A0 B0 C0 D0 NaN NaN NaN\n", "1 A1 B1 C1 D1 NaN NaN NaN\n", "2 A2 B2 C2 D2 B2 D2 F2\n", "3 A3 B3 C3 D3 B3 D3 F3\n", "6 NaN NaN NaN NaN B6 D6 F6\n", "7 NaN NaN NaN NaN B7 D7 F7" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 沿橫軸合併\n", "result = pd.concat([df1, df4], axis = 1)\n", "result" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " A B C D B D F\n", "2 A2 B2 C2 D2 B2 D2 F2\n", "3 A3 B3 C3 D3 B3 D3 F3\n", " A B C D F\n", "0 A2 B2 C2 D2 F2\n", "1 A3 B3 C3 D3 F3\n" ] } ], "source": [ "# 沿橫軸合併\n", "result = pd.concat([df1, df4], axis = 1, join = 'inner') # 硬串接\n", "print(result)\n", "\n", "result = pd.merge(df1, df4, how='inner')\n", "print(result)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " A B C D\n", "0 A0 B0 C0 D0\n", "1 A1 B1 C1 D1\n", "2 A2 B2 C2 D2\n", "3 A3 B3 C3 D3\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
variablevalue
0AA0
1AA1
2AA2
3AA3
4BB0
5BB1
6BB2
7BB3
8CC0
9CC1
10CC2
11CC3
12DD0
13DD1
14DD2
15DD3
\n", "
" ], "text/plain": [ " variable value\n", "0 A A0\n", "1 A A1\n", "2 A A2\n", "3 A A3\n", "4 B B0\n", "5 B B1\n", "6 B B2\n", "7 B B3\n", "8 C C0\n", "9 C C1\n", "10 C C2\n", "11 C C3\n", "12 D D0\n", "13 D D1\n", "14 D D2\n", "15 D D3" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 將 欄-列 逐一解開\n", "print(df1)\n", "df1.melt()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Subset" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# 設定 data_path\n", "dir_data = './data/'" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Path of read in data: ./data/application_train.csv\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGETNAME_CONTRACT_TYPECODE_GENDERFLAG_OWN_CARFLAG_OWN_REALTYCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITY...FLAG_DOCUMENT_18FLAG_DOCUMENT_19FLAG_DOCUMENT_20FLAG_DOCUMENT_21AMT_REQ_CREDIT_BUREAU_HOURAMT_REQ_CREDIT_BUREAU_DAYAMT_REQ_CREDIT_BUREAU_WEEKAMT_REQ_CREDIT_BUREAU_MONAMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
01000021Cash loansMNY0202500.0406597.524700.5...00000.00.00.00.00.01.0
11000030Cash loansFNN0270000.01293502.535698.5...00000.00.00.00.00.00.0
21000040Revolving loansMYY067500.0135000.06750.0...00000.00.00.00.00.00.0
31000060Cash loansFNY0135000.0312682.529686.5...0000NaNNaNNaNNaNNaNNaN
41000070Cash loansMNY0121500.0513000.021865.5...00000.00.00.00.00.00.0
\n", "

5 rows × 122 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR \\\n", "0 100002 1 Cash loans M N \n", "1 100003 0 Cash loans F N \n", "2 100004 0 Revolving loans M Y \n", "3 100006 0 Cash loans F N \n", "4 100007 0 Cash loans M N \n", "\n", " FLAG_OWN_REALTY CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY \\\n", "0 Y 0 202500.0 406597.5 24700.5 \n", "1 N 0 270000.0 1293502.5 35698.5 \n", "2 Y 0 67500.0 135000.0 6750.0 \n", "3 Y 0 135000.0 312682.5 29686.5 \n", "4 Y 0 121500.0 513000.0 21865.5 \n", "\n", " ... FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 FLAG_DOCUMENT_21 \\\n", "0 ... 0 0 0 0 \n", "1 ... 0 0 0 0 \n", "2 ... 0 0 0 0 \n", "3 ... 0 0 0 0 \n", "4 ... 0 0 0 0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_HOUR AMT_REQ_CREDIT_BUREAU_DAY \\\n", "0 0.0 0.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_WEEK AMT_REQ_CREDIT_BUREAU_MON \\\n", "0 0.0 0.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR \n", "0 0.0 1.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", "[5 rows x 122 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f_app = os.path.join(dir_data, 'application_train.csv')\n", "print('Path of read in data: %s' % (f_app))\n", "app_train = pd.read_csv(f_app)\n", "app_train.head()" ] }, { "cell_type": "code", "execution_count": 10, "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", "
SK_ID_CURRTARGETNAME_CONTRACT_TYPECODE_GENDERFLAG_OWN_CARFLAG_OWN_REALTYCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITY...FLAG_DOCUMENT_18FLAG_DOCUMENT_19FLAG_DOCUMENT_20FLAG_DOCUMENT_21AMT_REQ_CREDIT_BUREAU_HOURAMT_REQ_CREDIT_BUREAU_DAYAMT_REQ_CREDIT_BUREAU_WEEKAMT_REQ_CREDIT_BUREAU_MONAMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
01000021Cash loansMNY0202500.0406597.524700.5...00000.00.00.00.00.01.0
261000311Cash loansFNY0112500.0979992.027076.5...00000.00.00.00.02.02.0
401000471Cash loansMNY0202500.01193580.035028.0...00000.00.00.02.00.04.0
421000491Cash loansFNN0135000.0288873.016258.5...00000.00.00.00.00.02.0
811000961Cash loansFNY081000.0252000.014593.5...00000.00.00.00.00.00.0
\n", "

5 rows × 122 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR \\\n", "0 100002 1 Cash loans M N \n", "26 100031 1 Cash loans F N \n", "40 100047 1 Cash loans M N \n", "42 100049 1 Cash loans F N \n", "81 100096 1 Cash loans F N \n", "\n", " FLAG_OWN_REALTY CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY \\\n", "0 Y 0 202500.0 406597.5 24700.5 \n", "26 Y 0 112500.0 979992.0 27076.5 \n", "40 Y 0 202500.0 1193580.0 35028.0 \n", "42 N 0 135000.0 288873.0 16258.5 \n", "81 Y 0 81000.0 252000.0 14593.5 \n", "\n", " ... FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 FLAG_DOCUMENT_21 \\\n", "0 ... 0 0 0 0 \n", "26 ... 0 0 0 0 \n", "40 ... 0 0 0 0 \n", "42 ... 0 0 0 0 \n", "81 ... 0 0 0 0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_HOUR AMT_REQ_CREDIT_BUREAU_DAY \\\n", "0 0.0 0.0 \n", "26 0.0 0.0 \n", "40 0.0 0.0 \n", "42 0.0 0.0 \n", "81 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_WEEK AMT_REQ_CREDIT_BUREAU_MON \\\n", "0 0.0 0.0 \n", "26 0.0 0.0 \n", "40 0.0 2.0 \n", "42 0.0 0.0 \n", "81 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR \n", "0 0.0 1.0 \n", "26 2.0 2.0 \n", "40 0.0 4.0 \n", "42 0.0 2.0 \n", "81 0.0 0.0 \n", "\n", "[5 rows x 122 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 取 TARGET 為 1 的\n", "sub_df = app_train[app_train['TARGET'] == 1]\n", "sub_df.head()" ] }, { "cell_type": "code", "execution_count": 11, "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", "
SK_ID_CURRTARGETNAME_CONTRACT_TYPECODE_GENDERFLAG_OWN_CARFLAG_OWN_REALTYCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITY...FLAG_DOCUMENT_18FLAG_DOCUMENT_19FLAG_DOCUMENT_20FLAG_DOCUMENT_21AMT_REQ_CREDIT_BUREAU_HOURAMT_REQ_CREDIT_BUREAU_DAYAMT_REQ_CREDIT_BUREAU_WEEKAMT_REQ_CREDIT_BUREAU_MONAMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
01000021Cash loansMNY0202500.0406597.524700.5...00000.00.00.00.00.01.0
261000311Cash loansFNY0112500.0979992.027076.5...00000.00.00.00.02.02.0
401000471Cash loansMNY0202500.01193580.035028.0...00000.00.00.02.00.04.0
421000491Cash loansFNN0135000.0288873.016258.5...00000.00.00.00.00.02.0
811000961Cash loansFNY081000.0252000.014593.5...00000.00.00.00.00.00.0
\n", "

5 rows × 122 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR \\\n", "0 100002 1 Cash loans M N \n", "26 100031 1 Cash loans F N \n", "40 100047 1 Cash loans M N \n", "42 100049 1 Cash loans F N \n", "81 100096 1 Cash loans F N \n", "\n", " FLAG_OWN_REALTY CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY \\\n", "0 Y 0 202500.0 406597.5 24700.5 \n", "26 Y 0 112500.0 979992.0 27076.5 \n", "40 Y 0 202500.0 1193580.0 35028.0 \n", "42 N 0 135000.0 288873.0 16258.5 \n", "81 Y 0 81000.0 252000.0 14593.5 \n", "\n", " ... FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 FLAG_DOCUMENT_21 \\\n", "0 ... 0 0 0 0 \n", "26 ... 0 0 0 0 \n", "40 ... 0 0 0 0 \n", "42 ... 0 0 0 0 \n", "81 ... 0 0 0 0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_HOUR AMT_REQ_CREDIT_BUREAU_DAY \\\n", "0 0.0 0.0 \n", "26 0.0 0.0 \n", "40 0.0 0.0 \n", "42 0.0 0.0 \n", "81 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_WEEK AMT_REQ_CREDIT_BUREAU_MON \\\n", "0 0.0 0.0 \n", "26 0.0 0.0 \n", "40 0.0 2.0 \n", "42 0.0 0.0 \n", "81 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR \n", "0 0.0 1.0 \n", "26 2.0 2.0 \n", "40 0.0 4.0 \n", "42 0.0 2.0 \n", "81 0.0 0.0 \n", "\n", "[5 rows x 122 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sub_df_2 = app_train.loc[app_train['TARGET'] == 1]\n", "sub_df_2.head()" ] }, { "cell_type": "code", "execution_count": 12, "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", "
SK_ID_CURRTARGET
01000021
11000030
61000090
71000100
131000170
\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET\n", "0 100002 1\n", "1 100003 0\n", "6 100009 0\n", "7 100010 0\n", "13 100017 0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 取 AMT_INCOME_TOTAL 大於平均資料中,SK_ID_CURR, TARGET 兩欄\n", "sub_df = app_train.loc[app_train['AMT_INCOME_TOTAL'] > app_train['AMT_INCOME_TOTAL'].mean(), ['SK_ID_CURR', 'TARGET']]\n", "sub_df.head()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "168797.9192969845" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train['AMT_INCOME_TOTAL'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "將'AMT_INCOME_TOTAL' 數值也一併 show 出,且看看是否大於平均。" ] }, { "cell_type": "code", "execution_count": 14, "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", "
AMT_INCOME_TOTALSK_ID_CURRTARGET
0202500.01000021
1270000.01000030
6171000.01000090
7360000.01000100
13225000.01000170
\n", "
" ], "text/plain": [ " AMT_INCOME_TOTAL SK_ID_CURR TARGET\n", "0 202500.0 100002 1\n", "1 270000.0 100003 0\n", "6 171000.0 100009 0\n", "7 360000.0 100010 0\n", "13 225000.0 100017 0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sub_df = app_train.loc[app_train['AMT_INCOME_TOTAL'] > app_train['AMT_INCOME_TOTAL'].mean(), ['AMT_INCOME_TOTAL','SK_ID_CURR', 'TARGET']]\n", "sub_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Groupby\n", "見 Pandas 文檔 [pandas.DataFrame.groupby](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html#pandas.DataFrame.groupby)" ] }, { "cell_type": "code", "execution_count": 15, "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", "
SK_ID_CURRTARGETNAME_CONTRACT_TYPECODE_GENDERFLAG_OWN_CARFLAG_OWN_REALTYCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITY...FLAG_DOCUMENT_18FLAG_DOCUMENT_19FLAG_DOCUMENT_20FLAG_DOCUMENT_21AMT_REQ_CREDIT_BUREAU_HOURAMT_REQ_CREDIT_BUREAU_DAYAMT_REQ_CREDIT_BUREAU_WEEKAMT_REQ_CREDIT_BUREAU_MONAMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
01000021Cash loansMNY0202500.0406597.524700.5...00000.00.00.00.00.01.0
11000030Cash loansFNN0270000.01293502.535698.5...00000.00.00.00.00.00.0
21000040Revolving loansMYY067500.0135000.06750.0...00000.00.00.00.00.00.0
31000060Cash loansFNY0135000.0312682.529686.5...0000NaNNaNNaNNaNNaNNaN
41000070Cash loansMNY0121500.0513000.021865.5...00000.00.00.00.00.00.0
\n", "

5 rows × 122 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR \\\n", "0 100002 1 Cash loans M N \n", "1 100003 0 Cash loans F N \n", "2 100004 0 Revolving loans M Y \n", "3 100006 0 Cash loans F N \n", "4 100007 0 Cash loans M N \n", "\n", " FLAG_OWN_REALTY CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY \\\n", "0 Y 0 202500.0 406597.5 24700.5 \n", "1 N 0 270000.0 1293502.5 35698.5 \n", "2 Y 0 67500.0 135000.0 6750.0 \n", "3 Y 0 135000.0 312682.5 29686.5 \n", "4 Y 0 121500.0 513000.0 21865.5 \n", "\n", " ... FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 FLAG_DOCUMENT_21 \\\n", "0 ... 0 0 0 0 \n", "1 ... 0 0 0 0 \n", "2 ... 0 0 0 0 \n", "3 ... 0 0 0 0 \n", "4 ... 0 0 0 0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_HOUR AMT_REQ_CREDIT_BUREAU_DAY \\\n", "0 0.0 0.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_WEEK AMT_REQ_CREDIT_BUREAU_MON \\\n", "0 0.0 0.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", " AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR \n", "0 0.0 1.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", "[5 rows x 122 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "透過 groupby 可以將資料群體歸類,像'NAME_CONTRACT_TYPE' 中就只有兩類 \"Cash loans\",\"Revolving loans\"" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "NAME_CONTRACT_TYPE\n", "Cash loans 278232\n", "Revolving loans 29279\n", "dtype: int64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['NAME_CONTRACT_TYPE']).size()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "也可以將性別歸類,研究不同性別的關係。" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "CODE_GENDER\n", "F 202448\n", "M 105059\n", "XNA 4\n", "dtype: int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['CODE_GENDER']).size()" ] }, { "cell_type": "code", "execution_count": 18, "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", "
SK_ID_CURRTARGETCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITYAMT_GOODS_PRICEREGION_POPULATION_RELATIVEDAYS_BIRTHDAYS_EMPLOYED...FLAG_DOCUMENT_18FLAG_DOCUMENT_19FLAG_DOCUMENT_20FLAG_DOCUMENT_21AMT_REQ_CREDIT_BUREAU_HOURAMT_REQ_CREDIT_BUREAU_DAYAMT_REQ_CREDIT_BUREAU_WEEKAMT_REQ_CREDIT_BUREAU_MONAMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
NAME_CONTRACT_TYPE
Cash loans278125.3623380.0834590.410025169069.513575627965.73253828244.263958560563.6644850.020748-16159.25606066310.442020...0.0083490.0006360.0005610.0000040.006390.0071830.0353700.2716340.2710911.931579
Revolving loans278704.6563750.0547830.483828166217.017656324017.98217216316.822637325724.3715730.022014-14875.17531340101.836709...0.0060450.0002050.0000000.0034840.006520.0052400.0246410.2265290.2113281.595304
\n", "

2 rows × 106 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET CNT_CHILDREN AMT_INCOME_TOTAL \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 278125.362338 0.083459 0.410025 169069.513575 \n", "Revolving loans 278704.656375 0.054783 0.483828 166217.017656 \n", "\n", " AMT_CREDIT AMT_ANNUITY AMT_GOODS_PRICE \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 627965.732538 28244.263958 560563.664485 \n", "Revolving loans 324017.982172 16316.822637 325724.371573 \n", "\n", " REGION_POPULATION_RELATIVE DAYS_BIRTH DAYS_EMPLOYED \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 0.020748 -16159.256060 66310.442020 \n", "Revolving loans 0.022014 -14875.175313 40101.836709 \n", "\n", " ... FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 \\\n", "NAME_CONTRACT_TYPE ... \n", "Cash loans ... 0.008349 0.000636 0.000561 \n", "Revolving loans ... 0.006045 0.000205 0.000000 \n", "\n", " FLAG_DOCUMENT_21 AMT_REQ_CREDIT_BUREAU_HOUR \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 0.000004 0.00639 \n", "Revolving loans 0.003484 0.00652 \n", "\n", " AMT_REQ_CREDIT_BUREAU_DAY AMT_REQ_CREDIT_BUREAU_WEEK \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 0.007183 0.035370 \n", "Revolving loans 0.005240 0.024641 \n", "\n", " AMT_REQ_CREDIT_BUREAU_MON AMT_REQ_CREDIT_BUREAU_QRT \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 0.271634 0.271091 \n", "Revolving loans 0.226529 0.211328 \n", "\n", " AMT_REQ_CREDIT_BUREAU_YEAR \n", "NAME_CONTRACT_TYPE \n", "Cash loans 1.931579 \n", "Revolving loans 1.595304 \n", "\n", "[2 rows x 106 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['NAME_CONTRACT_TYPE']).mean()" ] }, { "cell_type": "code", "execution_count": 19, "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", "
SK_ID_CURRTARGETCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITYAMT_GOODS_PRICEREGION_POPULATION_RELATIVEDAYS_BIRTHDAYS_EMPLOYED...FLAG_DOCUMENT_18FLAG_DOCUMENT_19FLAG_DOCUMENT_20FLAG_DOCUMENT_21AMT_REQ_CREDIT_BUREAU_HOURAMT_REQ_CREDIT_BUREAU_DAYAMT_REQ_CREDIT_BUREAU_WEEKAMT_REQ_CREDIT_BUREAU_MONAMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
CODE_GENDER
F278235.9640940.0699930.392397156032.309247592766.71730526304.815242532406.2205090.020728-16502.50717779693.262759...0.0066930.0005140.0004540.0000200.0062120.0069100.0345900.2615510.2697031.924312
M278076.6278280.1014190.464548193396.482153611095.19708428657.681177549942.3144040.021138-15140.05056233220.412187...0.0108990.0007520.0006090.0009420.0067760.0071780.0339150.2788550.2571661.852091
XNA200636.5000000.0000000.750000186750.000000399375.00000019968.750000421875.0000000.029672-13561.250000-4090.500000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.7500000.2500003.500000
\n", "

3 rows × 106 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET CNT_CHILDREN AMT_INCOME_TOTAL \\\n", "CODE_GENDER \n", "F 278235.964094 0.069993 0.392397 156032.309247 \n", "M 278076.627828 0.101419 0.464548 193396.482153 \n", "XNA 200636.500000 0.000000 0.750000 186750.000000 \n", "\n", " AMT_CREDIT AMT_ANNUITY AMT_GOODS_PRICE \\\n", "CODE_GENDER \n", "F 592766.717305 26304.815242 532406.220509 \n", "M 611095.197084 28657.681177 549942.314404 \n", "XNA 399375.000000 19968.750000 421875.000000 \n", "\n", " REGION_POPULATION_RELATIVE DAYS_BIRTH DAYS_EMPLOYED ... \\\n", "CODE_GENDER ... \n", "F 0.020728 -16502.507177 79693.262759 ... \n", "M 0.021138 -15140.050562 33220.412187 ... \n", "XNA 0.029672 -13561.250000 -4090.500000 ... \n", "\n", " FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 \\\n", "CODE_GENDER \n", "F 0.006693 0.000514 0.000454 \n", "M 0.010899 0.000752 0.000609 \n", "XNA 0.000000 0.000000 0.000000 \n", "\n", " FLAG_DOCUMENT_21 AMT_REQ_CREDIT_BUREAU_HOUR \\\n", "CODE_GENDER \n", "F 0.000020 0.006212 \n", "M 0.000942 0.006776 \n", "XNA 0.000000 0.000000 \n", "\n", " AMT_REQ_CREDIT_BUREAU_DAY AMT_REQ_CREDIT_BUREAU_WEEK \\\n", "CODE_GENDER \n", "F 0.006910 0.034590 \n", "M 0.007178 0.033915 \n", "XNA 0.000000 0.000000 \n", "\n", " AMT_REQ_CREDIT_BUREAU_MON AMT_REQ_CREDIT_BUREAU_QRT \\\n", "CODE_GENDER \n", "F 0.261551 0.269703 \n", "M 0.278855 0.257166 \n", "XNA 0.750000 0.250000 \n", "\n", " AMT_REQ_CREDIT_BUREAU_YEAR \n", "CODE_GENDER \n", "F 1.924312 \n", "M 1.852091 \n", "XNA 3.500000 \n", "\n", "[3 rows x 106 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['CODE_GENDER']).mean()" ] }, { "cell_type": "code", "execution_count": 20, "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", "
countmeanstdmin25%50%75%max
NAME_CONTRACT_TYPE
Cash loans278232.0169069.513575245910.95089625650.0112500.0153000.0202500.0117000000.0
Revolving loans29279.0166217.017656126028.60066027000.099000.0135000.0202500.04500000.0
\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "NAME_CONTRACT_TYPE \n", "Cash loans 278232.0 169069.513575 245910.950896 25650.0 112500.0 \n", "Revolving loans 29279.0 166217.017656 126028.600660 27000.0 99000.0 \n", "\n", " 50% 75% max \n", "NAME_CONTRACT_TYPE \n", "Cash loans 153000.0 202500.0 117000000.0 \n", "Revolving loans 135000.0 202500.0 4500000.0 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['NAME_CONTRACT_TYPE'])['AMT_INCOME_TOTAL'].describe()" ] }, { "cell_type": "code", "execution_count": 21, "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", "
countmeanstdmin25%50%75%max
CODE_GENDER
F202448.0156032.309247274825.59257025650.099000.0135000.0180000.0117000000.0
M105059.0193396.482153134597.16953127000.0135000.0180000.0225000.018000090.0
XNA4.0186750.00000050445.515162135000.0151875.0182250.0217125.0247500.0
\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "CODE_GENDER \n", "F 202448.0 156032.309247 274825.592570 25650.0 99000.0 \n", "M 105059.0 193396.482153 134597.169531 27000.0 135000.0 \n", "XNA 4.0 186750.000000 50445.515162 135000.0 151875.0 \n", "\n", " 50% 75% max \n", "CODE_GENDER \n", "F 135000.0 180000.0 117000000.0 \n", "M 180000.0 225000.0 18000090.0 \n", "XNA 182250.0 217125.0 247500.0 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['CODE_GENDER'])['AMT_INCOME_TOTAL'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看出男性平均收入較高,且標準差較低,女性最少收入比男性低,但可以看到 max 部分,女性高出男性10倍!!,這其中一定有可以研究的問題!!" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NAME_CONTRACT_TYPE\n", "Cash loans 0.083459\n", "Revolving loans 0.054783\n", "Name: TARGET, dtype: float64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['NAME_CONTRACT_TYPE'])['TARGET'].mean()" ] }, { "cell_type": "code", "execution_count": 23, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AMT_INCOME_TOTALAMT_CREDITAMT_ANNUITY
01.2052750.6428270.871394
11.6070342.0450171.259386
20.4156020.4308290.430084
30.8035170.4943491.047292
40.7231650.8110490.771380
50.5892460.7754690.970773
61.0177882.4674951.457033
72.1427112.4189181.484338
80.6695971.6119951.193345
90.8312031.2924881.290253
100.6695971.0315970.747091
110.2286700.2345640.376720
120.4017580.1278470.207490
131.3391951.4520911.021892
141.1249231.2231831.156355
150.9374360.4739370.711212
160.6428130.8056780.922512
170.4987220.8616580.860169
180.6926690.5026340.501765
190.5356780.8608360.619612
200.8312031.3642921.361934
211.2052751.7905901.325109
222.6783890.7865751.147306
230.4955020.3792010.841390
240.8035170.3912960.448159
250.5356780.3557230.390691
260.6695971.5493600.955215
270.6695970.5170220.840596
281.6070341.2502962.034734
290.5541360.5744390.573446
............
99711.4731141.4228931.028877
99721.3391951.0671700.772809
99730.4285420.2123530.466098
99740.4821100.8523130.975536
99750.8303010.7470190.806464
99761.2320591.4228931.345271
99771.2052750.9368331.071899
99780.4156020.5744390.573446
99790.9374360.0996030.207807
99801.0713560.2416070.537696
99810.6695970.3587400.393866
99821.0981400.7490111.657697
99830.8035170.4944840.511184
99841.0713562.0368711.333365
99850.4017580.3147440.217491
99861.7409532.8457862.211902
99871.1082711.7233171.720337
99880.6695970.6548940.529441
99891.1082710.7898540.788488
99900.8303011.3210850.866473
99911.8748720.5935171.050943
99921.0713561.2362091.496404
99932.0503012.8721952.867229
99940.6695971.3133441.166833
99950.8312030.8616580.860169
99960.9910041.5919331.818354
99971.3391950.7865751.890269
99982.1427110.5506030.975218
99990.5624620.5621000.661205
100001.3391951.0671700.696290
\n", "

10001 rows × 3 columns

\n", "
" ], "text/plain": [ " AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY\n", "0 1.205275 0.642827 0.871394\n", "1 1.607034 2.045017 1.259386\n", "2 0.415602 0.430829 0.430084\n", "3 0.803517 0.494349 1.047292\n", "4 0.723165 0.811049 0.771380\n", "5 0.589246 0.775469 0.970773\n", "6 1.017788 2.467495 1.457033\n", "7 2.142711 2.418918 1.484338\n", "8 0.669597 1.611995 1.193345\n", "9 0.831203 1.292488 1.290253\n", "10 0.669597 1.031597 0.747091\n", "11 0.228670 0.234564 0.376720\n", "12 0.401758 0.127847 0.207490\n", "13 1.339195 1.452091 1.021892\n", "14 1.124923 1.223183 1.156355\n", "15 0.937436 0.473937 0.711212\n", "16 0.642813 0.805678 0.922512\n", "17 0.498722 0.861658 0.860169\n", "18 0.692669 0.502634 0.501765\n", "19 0.535678 0.860836 0.619612\n", "20 0.831203 1.364292 1.361934\n", "21 1.205275 1.790590 1.325109\n", "22 2.678389 0.786575 1.147306\n", "23 0.495502 0.379201 0.841390\n", "24 0.803517 0.391296 0.448159\n", "25 0.535678 0.355723 0.390691\n", "26 0.669597 1.549360 0.955215\n", "27 0.669597 0.517022 0.840596\n", "28 1.607034 1.250296 2.034734\n", "29 0.554136 0.574439 0.573446\n", "... ... ... ...\n", "9971 1.473114 1.422893 1.028877\n", "9972 1.339195 1.067170 0.772809\n", "9973 0.428542 0.212353 0.466098\n", "9974 0.482110 0.852313 0.975536\n", "9975 0.830301 0.747019 0.806464\n", "9976 1.232059 1.422893 1.345271\n", "9977 1.205275 0.936833 1.071899\n", "9978 0.415602 0.574439 0.573446\n", "9979 0.937436 0.099603 0.207807\n", "9980 1.071356 0.241607 0.537696\n", "9981 0.669597 0.358740 0.393866\n", "9982 1.098140 0.749011 1.657697\n", "9983 0.803517 0.494484 0.511184\n", "9984 1.071356 2.036871 1.333365\n", "9985 0.401758 0.314744 0.217491\n", "9986 1.740953 2.845786 2.211902\n", "9987 1.108271 1.723317 1.720337\n", "9988 0.669597 0.654894 0.529441\n", "9989 1.108271 0.789854 0.788488\n", "9990 0.830301 1.321085 0.866473\n", "9991 1.874872 0.593517 1.050943\n", "9992 1.071356 1.236209 1.496404\n", "9993 2.050301 2.872195 2.867229\n", "9994 0.669597 1.313344 1.166833\n", "9995 0.831203 0.861658 0.860169\n", "9996 0.991004 1.591933 1.818354\n", "9997 1.339195 0.786575 1.890269\n", "9998 2.142711 0.550603 0.975218\n", "9999 0.562462 0.562100 0.661205\n", "10000 1.339195 1.067170 0.696290\n", "\n", "[10001 rows x 3 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 取前 10000 筆作範例: 分別將 AMT_INCOME_TOTAL, AMT_CREDIT, AMT_ANNUITY 除以根據 NAME_CONTRACT_TYPE 分組後的平均數,\n", "app_train.loc[0:10000, ['NAME_CONTRACT_TYPE', 'AMT_INCOME_TOTAL', 'AMT_CREDIT', 'AMT_ANNUITY']].groupby(['NAME_CONTRACT_TYPE']).apply(lambda x: x / x.mean())" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "app_train.groupby(['NAME_CONTRACT_TYPE'])['TARGET'].hist()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 作業\n", "1. 請將 app_train 中的 CNT_CHILDREN 依照下列規則分為四組,並將其結果在原本的 dataframe 命名為 CNT_CHILDREN_GROUP\n", " * 0 個小孩\n", " * 有 1 - 2 個小孩\n", " * 有 3 - 5 個小孩\n", " * 有超過 5 個小孩\n", "\n", "2. 請根據 CNT_CHILDREN_GROUP 以及 TARGET,列出各組的平均 AMT_INCOME_TOTAL,並繪製 baxplot\n", "3. 請根據 CNT_CHILDREN_GROUP 以及 TARGET,對 AMT_INCOME_TOTAL 計算 [Z 轉換](https://en.wikipedia.org/wiki/Standard_score) 後的分數" ] }, { "cell_type": "code", "execution_count": 25, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGET...AMT_REQ_CREDIT_BUREAU_QRTAMT_REQ_CREDIT_BUREAU_YEAR
countmeanstdmin25%50%75%maxcountmean...75%maxcountmeanstdmin25%50%75%max
CNT_CHILDREN
0215371.0278241.087440102742.655264100002.0189116.50278428.0367061.00456255.0215371.00.077118...0.008.0185323.01.9618131.9100280.00.002.03.0025.0
161119.0277874.907917103024.345648100009.0188998.00277193.0367566.50456246.061119.00.089236...0.00261.053362.01.7455491.7607670.00.001.03.0022.0
226749.0278910.119780102617.051922100029.0190586.00279093.0367458.00456235.026749.00.087218...0.006.023583.01.7743711.7690700.00.001.03.0013.0
33717.0275570.381759102966.244810100108.0184881.00275099.0365567.00456245.03717.00.096314...0.008.03258.01.8275021.7732240.00.001.03.0010.0
4429.0272406.734266102413.265752101324.0184407.00267238.0359521.00456016.0429.00.128205...0.003.0355.01.8788731.8409890.00.002.03.008.0
584.0263936.702381101212.990898104024.0177939.75258374.5349361.25455557.084.00.083333...0.002.076.01.8157891.7717070.01.001.03.008.0
621.0254632.047619101504.113304108386.0153737.00286431.0317544.00429262.021.00.285714...0.002.016.02.0000001.5055450.01.002.03.005.0
77.0281302.285714129808.307800103596.0182741.50320933.0362802.50453499.07.00.000000...0.752.06.01.3333331.0327960.01.001.01.753.0
82.0196781.000000116067.335491114709.0155745.00196781.0237817.00278853.02.00.000000...0.751.02.01.5000002.1213200.00.751.52.253.0
92.0274260.500000207151.881296127782.0201021.25274260.5347499.75420739.02.01.000000...0.000.02.00.5000000.7071070.00.250.50.751.0
102.0285179.50000044407.012965253779.0269479.25285179.5300879.75316580.02.00.000000...0.000.01.02.000000NaN2.02.002.02.002.0
111.0140032.000000NaN140032.0140032.00140032.0140032.00140032.01.01.000000...0.000.01.00.000000NaN0.00.000.00.000.0
122.0246087.50000073870.738324193853.0219970.25246087.5272204.75298322.02.00.000000...0.000.02.01.5000002.1213200.00.751.52.253.0
143.0342536.66666759059.638336303956.0308541.50313127.0361827.00410527.03.00.000000...0.000.03.01.3333330.5773501.01.001.01.502.0
192.0343992.50000090346.326325280108.0312050.25343992.5375934.75407877.02.00.000000...0.000.02.03.0000001.4142142.02.503.03.504.0
\n", "

15 rows × 840 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR \\\n", " count mean std min 25% \n", "CNT_CHILDREN \n", "0 215371.0 278241.087440 102742.655264 100002.0 189116.50 \n", "1 61119.0 277874.907917 103024.345648 100009.0 188998.00 \n", "2 26749.0 278910.119780 102617.051922 100029.0 190586.00 \n", "3 3717.0 275570.381759 102966.244810 100108.0 184881.00 \n", "4 429.0 272406.734266 102413.265752 101324.0 184407.00 \n", "5 84.0 263936.702381 101212.990898 104024.0 177939.75 \n", "6 21.0 254632.047619 101504.113304 108386.0 153737.00 \n", "7 7.0 281302.285714 129808.307800 103596.0 182741.50 \n", "8 2.0 196781.000000 116067.335491 114709.0 155745.00 \n", "9 2.0 274260.500000 207151.881296 127782.0 201021.25 \n", "10 2.0 285179.500000 44407.012965 253779.0 269479.25 \n", "11 1.0 140032.000000 NaN 140032.0 140032.00 \n", "12 2.0 246087.500000 73870.738324 193853.0 219970.25 \n", "14 3.0 342536.666667 59059.638336 303956.0 308541.50 \n", "19 2.0 343992.500000 90346.326325 280108.0 312050.25 \n", "\n", " TARGET ... \\\n", " 50% 75% max count mean ... \n", "CNT_CHILDREN ... \n", "0 278428.0 367061.00 456255.0 215371.0 0.077118 ... \n", "1 277193.0 367566.50 456246.0 61119.0 0.089236 ... \n", "2 279093.0 367458.00 456235.0 26749.0 0.087218 ... \n", "3 275099.0 365567.00 456245.0 3717.0 0.096314 ... \n", "4 267238.0 359521.00 456016.0 429.0 0.128205 ... \n", "5 258374.5 349361.25 455557.0 84.0 0.083333 ... \n", "6 286431.0 317544.00 429262.0 21.0 0.285714 ... \n", "7 320933.0 362802.50 453499.0 7.0 0.000000 ... \n", "8 196781.0 237817.00 278853.0 2.0 0.000000 ... \n", "9 274260.5 347499.75 420739.0 2.0 1.000000 ... \n", "10 285179.5 300879.75 316580.0 2.0 0.000000 ... \n", "11 140032.0 140032.00 140032.0 1.0 1.000000 ... \n", "12 246087.5 272204.75 298322.0 2.0 0.000000 ... \n", "14 313127.0 361827.00 410527.0 3.0 0.000000 ... \n", "19 343992.5 375934.75 407877.0 2.0 0.000000 ... \n", "\n", " AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR \\\n", " 75% max count \n", "CNT_CHILDREN \n", "0 0.00 8.0 185323.0 \n", "1 0.00 261.0 53362.0 \n", "2 0.00 6.0 23583.0 \n", "3 0.00 8.0 3258.0 \n", "4 0.00 3.0 355.0 \n", "5 0.00 2.0 76.0 \n", "6 0.00 2.0 16.0 \n", "7 0.75 2.0 6.0 \n", "8 0.75 1.0 2.0 \n", "9 0.00 0.0 2.0 \n", "10 0.00 0.0 1.0 \n", "11 0.00 0.0 1.0 \n", "12 0.00 0.0 2.0 \n", "14 0.00 0.0 3.0 \n", "19 0.00 0.0 2.0 \n", "\n", " \n", " mean std min 25% 50% 75% max \n", "CNT_CHILDREN \n", "0 1.961813 1.910028 0.0 0.00 2.0 3.00 25.0 \n", "1 1.745549 1.760767 0.0 0.00 1.0 3.00 22.0 \n", "2 1.774371 1.769070 0.0 0.00 1.0 3.00 13.0 \n", "3 1.827502 1.773224 0.0 0.00 1.0 3.00 10.0 \n", "4 1.878873 1.840989 0.0 0.00 2.0 3.00 8.0 \n", "5 1.815789 1.771707 0.0 1.00 1.0 3.00 8.0 \n", "6 2.000000 1.505545 0.0 1.00 2.0 3.00 5.0 \n", "7 1.333333 1.032796 0.0 1.00 1.0 1.75 3.0 \n", "8 1.500000 2.121320 0.0 0.75 1.5 2.25 3.0 \n", "9 0.500000 0.707107 0.0 0.25 0.5 0.75 1.0 \n", "10 2.000000 NaN 2.0 2.00 2.0 2.00 2.0 \n", "11 0.000000 NaN 0.0 0.00 0.0 0.00 0.0 \n", "12 1.500000 2.121320 0.0 0.75 1.5 2.25 3.0 \n", "14 1.333333 0.577350 1.0 1.00 1.0 1.50 2.0 \n", "19 3.000000 1.414214 2.0 2.50 3.0 3.50 4.0 \n", "\n", "[15 rows x 840 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train.groupby(['CNT_CHILDREN']).describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "根據提示:參考 [pandas.cut](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html?highlight=cut) 的使用方式。" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.001, 0.0] 215371\n", "(0.0, 2.0] 87868\n", "(2.0, 5.0] 4230\n", "(5.0, 19.0] 42\n", "Name: CNT_CHILDREN_GROUP, dtype: int64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "##### 1\n", "\"\"\"\n", "Your code here\n", "\"\"\"\n", "cut_rule = [-1,0,2,5,19]\n", "\n", "app_train['CNT_CHILDREN_GROUP'] = pd.cut(app_train['CNT_CHILDREN'].values, bins=cut_rule, include_lowest=True)\n", "app_train['CNT_CHILDREN_GROUP'].value_counts()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 (-1.001, 0.0]\n", "1 (-1.001, 0.0]\n", "2 (-1.001, 0.0]\n", "3 (-1.001, 0.0]\n", "4 (-1.001, 0.0]\n", "5 (-1.001, 0.0]\n", "6 (0.0, 2.0]\n", "7 (-1.001, 0.0]\n", "8 (-1.001, 0.0]\n", "9 (-1.001, 0.0]\n", "10 (0.0, 2.0]\n", "11 (-1.001, 0.0]\n", "12 (-1.001, 0.0]\n", "13 (0.0, 2.0]\n", "14 (-1.001, 0.0]\n", "15 (-1.001, 0.0]\n", "16 (-1.001, 0.0]\n", "17 (0.0, 2.0]\n", "18 (-1.001, 0.0]\n", "19 (0.0, 2.0]\n", "20 (-1.001, 0.0]\n", "21 (0.0, 2.0]\n", "22 (0.0, 2.0]\n", "23 (-1.001, 0.0]\n", "24 (0.0, 2.0]\n", "25 (-1.001, 0.0]\n", "26 (-1.001, 0.0]\n", "27 (0.0, 2.0]\n", "28 (-1.001, 0.0]\n", "29 (-1.001, 0.0]\n", " ... \n", "307481 (-1.001, 0.0]\n", "307482 (-1.001, 0.0]\n", "307483 (-1.001, 0.0]\n", "307484 (-1.001, 0.0]\n", "307485 (0.0, 2.0]\n", "307486 (0.0, 2.0]\n", "307487 (-1.001, 0.0]\n", "307488 (-1.001, 0.0]\n", "307489 (-1.001, 0.0]\n", "307490 (-1.001, 0.0]\n", "307491 (0.0, 2.0]\n", "307492 (-1.001, 0.0]\n", "307493 (-1.001, 0.0]\n", "307494 (0.0, 2.0]\n", "307495 (-1.001, 0.0]\n", "307496 (-1.001, 0.0]\n", "307497 (-1.001, 0.0]\n", "307498 (-1.001, 0.0]\n", "307499 (-1.001, 0.0]\n", "307500 (-1.001, 0.0]\n", "307501 (2.0, 5.0]\n", "307502 (0.0, 2.0]\n", "307503 (-1.001, 0.0]\n", "307504 (-1.001, 0.0]\n", "307505 (-1.001, 0.0]\n", "307506 (-1.001, 0.0]\n", "307507 (-1.001, 0.0]\n", "307508 (-1.001, 0.0]\n", "307509 (-1.001, 0.0]\n", "307510 (-1.001, 0.0]\n", "Name: CNT_CHILDREN_GROUP, Length: 307511, dtype: category\n", "Categories (4, interval[float64]): [(-1.001, 0.0] < (0.0, 2.0] < (2.0, 5.0] < (5.0, 19.0]]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "app_train['CNT_CHILDREN_GROUP']" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CNT_CHILDREN_GROUP TARGET\n", "(-1.001, 0.0] 0 166747.010980\n", " 1 160804.210548\n", "(0.0, 2.0] 0 174590.584401\n", " 1 176115.362720\n", "(2.0, 5.0] 0 175053.742913\n", " 1 160677.385714\n", "(5.0, 19.0] 0 139159.090909\n", " 1 180000.000000\n", "Name: AMT_INCOME_TOTAL, dtype: float64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#2-1 請根據 CNT_CHILDREN_GROUP 以及 TARGET,列出各組的平均 AMT_INCOME_TOTAL,並繪製 baxplot\n", "\"\"\"\n", "Your code here\n", "\"\"\"\n", "grp = ['CNT_CHILDREN_GROUP','TARGET']\n", "\n", "grouped_df = app_train.groupby(grp)['AMT_INCOME_TOTAL']\n", "grouped_df.mean()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#2-2 請根據 CNT_CHILDREN_GROUP 以及 TARGET,列出各組的平均 AMT_INCOME_TOTAL,並繪製 baxplot\n", "\"\"\"\n", "Your code here\n", "\"\"\"\n", "plt_column = 'AMT_INCOME_TOTAL'\n", "plt_by = ['CNT_CHILDREN_GROUP','TARGET']\n", "\n", "app_train.boxplot(column=plt_column, by = plt_by, showfliers = False, figsize=(8,8))\n", "plt.suptitle('boxplot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "根據 wiki 定義 z_score = (x-np.mean(x))/np.std(x)" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", "
AMT_INCOME_TOTALAMT_INCOME_TOTAL_Z_BY_CHILDREN_GRP-TARGET
0202500.00.491536
1270000.00.972437
267500.0-0.934708
3135000.0-0.298993
4121500.0-0.426136
\n", "
" ], "text/plain": [ " AMT_INCOME_TOTAL AMT_INCOME_TOTAL_Z_BY_CHILDREN_GRP-TARGET\n", "0 202500.0 0.491536\n", "1 270000.0 0.972437\n", "2 67500.0 -0.934708\n", "3 135000.0 -0.298993\n", "4 121500.0 -0.426136" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#3 請根據 CNT_CHILDREN_GROUP 以及 TARGET,對 AMT_INCOME_TOTAL 計算 Z 轉換後的分數\n", "\"\"\"\n", "Your code here\n", "\"\"\"\n", "\n", "app_train['AMT_INCOME_TOTAL_Z_BY_CHILDREN_GRP-TARGET'] = grouped_df.apply(lambda x: (x-np.mean(x))/np.std(x) )\n", "\n", "app_train[['AMT_INCOME_TOTAL','AMT_INCOME_TOTAL_Z_BY_CHILDREN_GRP-TARGET']].head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "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.6.8" } }, "nbformat": 4, "nbformat_minor": 1 }