{"cells": [{"cell_type": "code", "metadata": {"_cell_guid": "a3fa025e-b626-4377-bc57-27c271d33452", "_uuid": "e1a22d2eba382c3cb43e290d31e802112976b7f0", "collapsed": true}, "outputs": [], "source": ["from multiprocessing import Pool, cpu_count\n", "import gc; gc.enable()\n", "import xgboost as xgb\n", "import pandas as pd\n", "import numpy as np\n", "from sklearn import *\n", "import sklearn\n", "\n", "train = pd.read_csv('../input/train.csv')\n", "train = pd.concat((train, pd.read_csv('../input/train_v2.csv')), axis=0, ignore_index=True).reset_index(drop=True)\n", "test = pd.read_csv('../input/sample_submission_v2.csv')\n", "\n", "transactions = pd.read_csv('../input/transactions.csv', usecols=['msno'])\n", "transactions = pd.concat((transactions, pd.read_csv('../input/transactions_v2.csv', usecols=['msno'])), axis=0, ignore_index=True).reset_index(drop=True)\n", "transactions = pd.DataFrame(transactions['msno'].value_counts().reset_index())\n", "transactions.columns = ['msno','trans_count']\n", "train = pd.merge(train, transactions, how='left', on='msno')\n", "test = pd.merge(test, transactions, how='left', on='msno')\n", "transactions = []; print('transaction merge...')\n", "\n", "user_logs = pd.read_csv('../input/user_logs_v2.csv', usecols=['msno'])\n", "#user_logs = pd.read_csv('../input/user_logs.csv', usecols=['msno'])\n", "#user_logs = pd.concat((user_logs, pd.read_csv('../input/user_logs_v2.csv', usecols=['msno'])), axis=0, ignore_index=True).reset_index(drop=True)\n", "user_logs = pd.DataFrame(user_logs['msno'].value_counts().reset_index())\n", "user_logs.columns = ['msno','logs_count']\n", "train = pd.merge(train, user_logs, how='left', on='msno')\n", "test = pd.merge(test, user_logs, how='left', on='msno')\n", "user_logs = []; print('user logs merge...')\n", "\n", "members = pd.read_csv('../input/members_v3.csv')\n", "train = pd.merge(train, members, how='left', on='msno')\n", "test = pd.merge(test, members, how='left', on='msno')\n", "members = []; print('members merge...') "], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "48c17f47-87b0-4bc5-99f2-f4ba90faa921", "_uuid": "b24e7f1fb0c01887208a020356d783e46c7b4172", "collapsed": true}, "outputs": [], "source": ["gender = {'male':1, 'female':2}\n", "train['gender'] = train['gender'].map(gender)\n", "test['gender'] = test['gender'].map(gender)\n", "\n", "train = train.fillna(0)\n", "test = test.fillna(0)\n", "test.head()"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "4a52098a-2eee-401f-8b5d-eddaa5e28fbd", "_uuid": "2d1849e5b6c07933039b3d025b3390a7db320c01", "collapsed": true}, "outputs": [], "source": ["transactions = pd.read_csv('../input/transactions_v2.csv') #pd.read_csv('../input/transactions.csv')\n", "#transactions = pd.concat((transactions, pd.read_csv('../input/transactions_v2.csv')), axis=0, ignore_index=True).reset_index(drop=True)\n", "transactions = transactions.sort_values(by=['transaction_date'], ascending=[False]).reset_index(drop=True)\n", "transactions = transactions.drop_duplicates(subset=['msno'], keep='first')\n", "\n", "train = pd.merge(train, transactions, how='left', on='msno')\n", "test = pd.merge(test, transactions, how='left', on='msno')\n", "transactions=[]"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "ca305fc9-3fe3-4867-a178-9e0c7fe87b19", "_uuid": "7ad9df92001671b700a49444b797698a13562ed9", "collapsed": true}, "outputs": [], "source": ["test.head()"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "b2804075-d12d-4e4c-a673-99df8e17e1bd", "_uuid": "2555f89e43d3ad95c23e8f99b6d1f39bf3659936", "collapsed": true}, "outputs": [], "source": ["train.shape"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "0c01239e-83c2-418e-93af-6e48de669114", "_uuid": "52d2ead2dd93e16d61e18baca4d0b83fbffa8176", "collapsed": true}, "outputs": [], "source": ["train = train.loc[(train['bd'] > 10) & (train['bd'] < 100)]\n"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "f8d247ca-6ae4-4096-a473-37b606972ff3", "_uuid": "bfb709dbf80d54da36b32b97673e3f2f41374653", "collapsed": true}, "outputs": [], "source": ["train.shape"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "50f51680-0584-4411-abaa-43c28feb745d", "_uuid": "ee90ce913f6d2207a2f4dde716e669fc12f1df7f", "collapsed": true}, "outputs": [], "source": ["train['bd'].describe()"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "ef0ff7bd-cc4a-4603-b8a4-72591b6ba6c7", "_uuid": "0de7839769997cade8bb31b96ec40df398edee90", "collapsed": true}, "outputs": [], "source": ["def transform_df(df):\n", "    df = pd.DataFrame(df)\n", "    df = df.sort_values(by=['date'], ascending=[False])\n", "    df = df.reset_index(drop=True)\n", "    df = df.drop_duplicates(subset=['msno'], keep='first')\n", "    return df\n", "\n", "def transform_df2(df):\n", "    df = df.sort_values(by=['date'], ascending=[False])\n", "    df = df.reset_index(drop=True)\n", "    df = df.drop_duplicates(subset=['msno'], keep='first')\n", "    return df\n", "\n", "df_iter = pd.read_csv('../input/user_logs.csv', low_memory=False, iterator=True, chunksize=10000000)\n", "last_user_logs = []\n", "i = 0 #~400 Million Records - starting at the end but remove locally if needed\n", "for df in df_iter:\n", "    if i>35:\n", "        if len(df)>0:\n", "            print(df.shape)\n", "            p = Pool(cpu_count())\n", "            df = p.map(transform_df, np.array_split(df, cpu_count()))   \n", "            df = pd.concat(df, axis=0, ignore_index=True).reset_index(drop=True)\n", "            df = transform_df2(df)\n", "            p.close(); p.join()\n", "            last_user_logs.append(df)\n", "            print('...', df.shape)\n", "            df = []\n", "    i+=1\n", "last_user_logs.append(transform_df(pd.read_csv('../input/user_logs_v2.csv')))\n", "last_user_logs = pd.concat(last_user_logs, axis=0, ignore_index=True).reset_index(drop=True)\n", "last_user_logs = transform_df2(last_user_logs)\n", "\n", "train = pd.merge(train, last_user_logs, how='left', on='msno')\n", "test = pd.merge(test, last_user_logs, how='left', on='msno')\n", "last_user_logs=[]"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "df0fd7c7-dad2-41b9-b144-0ea2d4b9fae4", "_uuid": "10a1d624dcb3c7b4a4209aa642f5a837d92a2f09", "collapsed": true}, "outputs": [], "source": ["train = train.fillna(0)\n", "test = test.fillna(0)\n", "\n", "cols = [c for c in train.columns if c not in ['is_churn','msno']]"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "b8f305ba-3586-415f-a3bf-57494769dffb", "_uuid": "ec9829f72f041ae98f095b2a53df7cebed55ff8e", "collapsed": true}, "outputs": [], "source": ["test.to_csv('test_clean.csv', index=False)\n", "train.to_csv('train_clean.csv', index=False)"], "execution_count": null}, {"cell_type": "code", "metadata": {"_cell_guid": "9b139ccc-c449-4567-87d2-ee3af96f0e4c", "_uuid": "4b68f538892e3947b2c9ff41463cbbd889681187", "collapsed": true}, "outputs": [], "source": [], "execution_count": null}], "metadata": {"language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "nbconvert_exporter": "python", "version": "3.6.3", "name": "python", "file_extension": ".py", "mimetype": "text/x-python", "pygments_lexer": "ipython3"}, "kernelspec": {"display_name": "Python 3", "name": "python3", "language": "python"}}, "nbformat": 4, "nbformat_minor": 1}