├── LSTM评分卡.py
├── 决策树规则挖掘.ipynb
├── 常用反欺诈特征.ipynb
├── 异常检测.ipynb
├── 深度学习与金融.ipynb
└── 社交网络分析.ipynb
/LSTM评分卡.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | """
3 | Created on Tue Oct 15 00:33:10 2019
4 | RNN时序建模
5 | @author: kjc
6 | """
7 |
8 | import torch
9 | import torch.nn as nn
10 | import random
11 | from sklearn.model_selection import train_test_split
12 | import torchvision.transforms as transforms
13 | import torchvision.datasets as dsets
14 | from torch.autograd import Variable
15 |
16 | random_st = random.choice(range(10000))
17 | train_images, test_images = train_test_split(train_images,test_size=0.15,
18 | random_state=random_st)
19 |
20 | train_data = MyDataset(train_images)
21 | test_data = MyDataset(test_images)
22 |
23 | train_loader = torch.utils.data.DataLoader(train_data, batch_size=50,
24 | shuffle=True, num_workers=0)
25 | test_loader = torch.utils.data.DataLoader(test_data, batch_size=25,
26 | shuffle=False, num_workers=0)
27 |
28 | #搭建LSTM网络
29 | class Rnn(nn.Module):
30 | def __init__(self, in_dim, hidden_dim, n_layer, n_class):
31 | super(Rnn, self).__init__()
32 | self.n_layer = n_layer
33 | self.hidden_dim = hidden_dim
34 | self.LSTM = nn.LSTM(in_dim, hidden_dim,
35 | n_layer,batch_first=True)
36 | self.linear = nn.Linear(hidden_dim,n_class)
37 | self.sigmoid = nn.Sigmoid()
38 |
39 | def forward(self, x):
40 | x = x.sum(dim = 1)
41 | out, _ = self.LSTM(x)
42 | out = out[:, -1, :]
43 | out = self.linear(out)
44 | out = self.sigmoid(out)
45 | return out
46 |
47 | #指定网络参数。
48 |
49 | #28个特征,42个月切片,2个隐层,2分类
50 | model = Rnn(28,42,2,2)
51 | device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
52 | model = model.to(device)
53 | #使用二分类对数损失函数
54 | criterion = nn.SoftMarginLoss(reduction='mean')
55 | opt = torch.optim.Adam(model.parameters())
56 | total_step = len(train_loader)
57 | total_step_test = len(test_loader)
58 | num_epochs = 50
59 |
60 | #训练得到LSTM模型并计算单模型的KS值和AUC值。
61 | for epoch in range(num_epochs):
62 | train_label = []
63 | train_pred = []
64 | model.train()
65 | for i, (images, labels) in enumerate(train_loader):
66 | images = images.to(device)
67 | labels = labels.to(device)
68 | #网络训练
69 | out = model(images)
70 | loss = criterion(out, labels)
71 | opt.zero_grad()
72 | loss.backward()
73 | opt.step()
74 | #每一百轮打印一次
75 | if i%100 == 0:
76 | print('train epoch: {}/{}, round: {}/{},
77 | loss: {}'.format(epoch + 1, num_epochs,
78 | i + 1, total_step, loss))
79 | #真实标记和预测值
80 | train_label.extend(labels.cpu().numpy().flatten().tolist())
81 | train_pred.extend(out.detach().cpu().numpy().flatten().tolist())
82 | #计算真正率和假正率
83 | fpr_lm_train, tpr_lm_train, _ = roc_curve(np.array(train_label),
84 | np.array(train_pred))
85 | #计算KS和AUC
86 | print('train epoch: {}/{}, KS: {}, ROC: {}'.format(
87 | epoch + 1, num_epochs,abs(fpr_lm_train - tpr_lm_train).max(),
88 | metrics.auc(fpr_lm_train, tpr_lm_train)))
89 |
90 | test_label = []
91 | test_pred = []
92 |
93 | model.eval()
94 | #计算测试集上的KS值和AUC值
95 | for i, (images, labels) in enumerate(test_loader):
96 |
97 | images = images.to(device)
98 | labels = labels.to(device)
99 | out = model(images)
100 | loss = criterion(out, labels)
101 |
102 | #计算KS和AUC
103 | if i%100 == 0:
104 | print('test epoch: {}/{}, round: {}/{},
105 | loss: {}'.format(epoch + 1, num_epochs,
106 | i + 1, total_step_test, loss))
107 | test_label.extend(labels.cpu().numpy().flatten().tolist())
108 | test_pred.extend(out.detach().cpu().numpy().flatten().tolist())
109 |
110 | fpr_lm_test, tpr_lm_test, _ = roc_curve(np.array(test_label),
111 | np.array(test_pred))
112 |
113 | print('test epoch: {}/{}, KS: {}, ROC: {}'.format(
114 | epoch + 1, num_epochs,
115 | abs(fpr_lm_test - tpr_lm_test).max(),
116 |
117 |
--------------------------------------------------------------------------------
/决策树规则挖掘.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "import os\n",
12 | "os.environ[\"PATH\"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'"
13 | ]
14 | },
15 | {
16 | "cell_type": "code",
17 | "execution_count": 2,
18 | "metadata": {},
19 | "outputs": [
20 | {
21 | "data": {
22 | "text/html": [
23 | "
\n",
24 | "\n",
37 | "
\n",
38 | " \n",
39 | " \n",
40 | " | \n",
41 | " uid | \n",
42 | " oil_actv_dt | \n",
43 | " create_dt | \n",
44 | " total_oil_cnt | \n",
45 | " pay_amount_total | \n",
46 | " class_new | \n",
47 | " bad_ind | \n",
48 | " oil_amount | \n",
49 | " discount_amount | \n",
50 | " sale_amount | \n",
51 | " amount | \n",
52 | " pay_amount | \n",
53 | " coupon_amount | \n",
54 | " payment_coupon_amount | \n",
55 | " channel_code | \n",
56 | " oil_code | \n",
57 | " scene | \n",
58 | " source_app | \n",
59 | " call_source | \n",
60 | "
\n",
61 | " \n",
62 | " \n",
63 | " \n",
64 | " | 0 | \n",
65 | " A8217710 | \n",
66 | " 2018-08-19 | \n",
67 | " 2018-08-17 | \n",
68 | " 137.0 | \n",
69 | " 24147747.2 | \n",
70 | " B | \n",
71 | " 0 | \n",
72 | " 1653.78 | \n",
73 | " 880040.0 | \n",
74 | " 898000.0 | \n",
75 | " 865540.0 | \n",
76 | " 4327700.0 | \n",
77 | " 0.0 | \n",
78 | " 100.0 | \n",
79 | " 1 | \n",
80 | " 3 | \n",
81 | " 2 | \n",
82 | " 0 | \n",
83 | " 3 | \n",
84 | "
\n",
85 | " \n",
86 | " | 1 | \n",
87 | " A8217710 | \n",
88 | " 2018-08-19 | \n",
89 | " 2018-08-16 | \n",
90 | " 137.0 | \n",
91 | " 24147747.2 | \n",
92 | " B | \n",
93 | " 0 | \n",
94 | " 2336.84 | \n",
95 | " 1243522.0 | \n",
96 | " 1268900.0 | \n",
97 | " 1218922.0 | \n",
98 | " 6094610.0 | \n",
99 | " 0.0 | \n",
100 | " 100.0 | \n",
101 | " 1 | \n",
102 | " 3 | \n",
103 | " 2 | \n",
104 | " 0 | \n",
105 | " 3 | \n",
106 | "
\n",
107 | " \n",
108 | " | 2 | \n",
109 | " A8217710 | \n",
110 | " 2018-08-19 | \n",
111 | " 2018-08-15 | \n",
112 | " 137.0 | \n",
113 | " 24147747.2 | \n",
114 | " B | \n",
115 | " 0 | \n",
116 | " 936.03 | \n",
117 | " 488922.0 | \n",
118 | " 498900.0 | \n",
119 | " 480922.0 | \n",
120 | " 2404610.0 | \n",
121 | " 0.0 | \n",
122 | " 200.0 | \n",
123 | " 1 | \n",
124 | " 2 | \n",
125 | " 2 | \n",
126 | " 0 | \n",
127 | " 3 | \n",
128 | "
\n",
129 | " \n",
130 | " | 3 | \n",
131 | " A8217710 | \n",
132 | " 2018-08-19 | \n",
133 | " 2018-08-14 | \n",
134 | " 137.0 | \n",
135 | " 24147747.2 | \n",
136 | " B | \n",
137 | " 0 | \n",
138 | " 2418.39 | \n",
139 | " 1263220.0 | \n",
140 | " 1289000.0 | \n",
141 | " 1242220.0 | \n",
142 | " 6211100.0 | \n",
143 | " 0.0 | \n",
144 | " 300.0 | \n",
145 | " 1 | \n",
146 | " 2 | \n",
147 | " 2 | \n",
148 | " 0 | \n",
149 | " 3 | \n",
150 | "
\n",
151 | " \n",
152 | " | 4 | \n",
153 | " A8217710 | \n",
154 | " 2018-08-19 | \n",
155 | " 2018-08-13 | \n",
156 | " 137.0 | \n",
157 | " 24147747.2 | \n",
158 | " B | \n",
159 | " 0 | \n",
160 | " 1292.69 | \n",
161 | " 675220.0 | \n",
162 | " 689000.0 | \n",
163 | " 664220.0 | \n",
164 | " 3321100.0 | \n",
165 | " 0.0 | \n",
166 | " 100.0 | \n",
167 | " 1 | \n",
168 | " 2 | \n",
169 | " 2 | \n",
170 | " 0 | \n",
171 | " 3 | \n",
172 | "
\n",
173 | " \n",
174 | "
\n",
175 | "
"
176 | ],
177 | "text/plain": [
178 | " uid oil_actv_dt create_dt total_oil_cnt pay_amount_total class_new \\\n",
179 | "0 A8217710 2018-08-19 2018-08-17 137.0 24147747.2 B \n",
180 | "1 A8217710 2018-08-19 2018-08-16 137.0 24147747.2 B \n",
181 | "2 A8217710 2018-08-19 2018-08-15 137.0 24147747.2 B \n",
182 | "3 A8217710 2018-08-19 2018-08-14 137.0 24147747.2 B \n",
183 | "4 A8217710 2018-08-19 2018-08-13 137.0 24147747.2 B \n",
184 | "\n",
185 | " bad_ind oil_amount discount_amount sale_amount amount pay_amount \\\n",
186 | "0 0 1653.78 880040.0 898000.0 865540.0 4327700.0 \n",
187 | "1 0 2336.84 1243522.0 1268900.0 1218922.0 6094610.0 \n",
188 | "2 0 936.03 488922.0 498900.0 480922.0 2404610.0 \n",
189 | "3 0 2418.39 1263220.0 1289000.0 1242220.0 6211100.0 \n",
190 | "4 0 1292.69 675220.0 689000.0 664220.0 3321100.0 \n",
191 | "\n",
192 | " coupon_amount payment_coupon_amount channel_code oil_code scene \\\n",
193 | "0 0.0 100.0 1 3 2 \n",
194 | "1 0.0 100.0 1 3 2 \n",
195 | "2 0.0 200.0 1 2 2 \n",
196 | "3 0.0 300.0 1 2 2 \n",
197 | "4 0.0 100.0 1 2 2 \n",
198 | "\n",
199 | " source_app call_source \n",
200 | "0 0 3 \n",
201 | "1 0 3 \n",
202 | "2 0 3 \n",
203 | "3 0 3 \n",
204 | "4 0 3 "
205 | ]
206 | },
207 | "execution_count": 2,
208 | "metadata": {},
209 | "output_type": "execute_result"
210 | }
211 | ],
212 | "source": [
213 | "data = pd.read_excel( 'oil_data_for_tree.xlsx')\n",
214 | "data.head()"
215 | ]
216 | },
217 | {
218 | "cell_type": "code",
219 | "execution_count": 3,
220 | "metadata": {},
221 | "outputs": [
222 | {
223 | "data": {
224 | "text/plain": [
225 | "{'A', 'B', 'C', 'D', 'E', 'F'}"
226 | ]
227 | },
228 | "execution_count": 3,
229 | "metadata": {},
230 | "output_type": "execute_result"
231 | }
232 | ],
233 | "source": [
234 | "set(data.class_new)"
235 | ]
236 | },
237 | {
238 | "cell_type": "markdown",
239 | "metadata": {},
240 | "source": [
241 | "org_lst 不需要做特殊变换,直接去重 \n",
242 | "agg_lst 数值型变量做聚合 \n",
243 | "dstc_lst 文本型变量做cnt "
244 | ]
245 | },
246 | {
247 | "cell_type": "code",
248 | "execution_count": 14,
249 | "metadata": {},
250 | "outputs": [],
251 | "source": [
252 | "org_lst = ['uid','create_dt','oil_actv_dt','class_new','bad_ind']\n",
253 | "agg_lst = ['oil_amount','discount_amount','sale_amount','amount','pay_amount','coupon_amount','payment_coupon_amount']\n",
254 | "dstc_lst = ['channel_code','oil_code','scene','source_app','call_source']"
255 | ]
256 | },
257 | {
258 | "cell_type": "markdown",
259 | "metadata": {},
260 | "source": [
261 | "数据重组"
262 | ]
263 | },
264 | {
265 | "cell_type": "code",
266 | "execution_count": 15,
267 | "metadata": {},
268 | "outputs": [],
269 | "source": [
270 | "df = data[org_lst].copy()\n",
271 | "df[agg_lst] = data[agg_lst].copy()\n",
272 | "df[dstc_lst] = data[dstc_lst].copy()"
273 | ]
274 | },
275 | {
276 | "cell_type": "markdown",
277 | "metadata": {},
278 | "source": [
279 | "看一下缺失情况"
280 | ]
281 | },
282 | {
283 | "cell_type": "code",
284 | "execution_count": 16,
285 | "metadata": {},
286 | "outputs": [
287 | {
288 | "data": {
289 | "text/plain": [
290 | "uid 0\n",
291 | "create_dt 4944\n",
292 | "oil_actv_dt 0\n",
293 | "class_new 0\n",
294 | "bad_ind 0\n",
295 | "oil_amount 4944\n",
296 | "discount_amount 4944\n",
297 | "sale_amount 4944\n",
298 | "amount 4944\n",
299 | "pay_amount 4944\n",
300 | "coupon_amount 4944\n",
301 | "payment_coupon_amount 4946\n",
302 | "channel_code 0\n",
303 | "oil_code 0\n",
304 | "scene 0\n",
305 | "source_app 0\n",
306 | "call_source 0\n",
307 | "dtype: int64"
308 | ]
309 | },
310 | "execution_count": 16,
311 | "metadata": {},
312 | "output_type": "execute_result"
313 | }
314 | ],
315 | "source": [
316 | "df.isna().sum()"
317 | ]
318 | },
319 | {
320 | "cell_type": "markdown",
321 | "metadata": {},
322 | "source": [
323 | "看一下基础变量的describe"
324 | ]
325 | },
326 | {
327 | "cell_type": "code",
328 | "execution_count": 17,
329 | "metadata": {},
330 | "outputs": [
331 | {
332 | "data": {
333 | "text/html": [
334 | "\n",
335 | "\n",
348 | "
\n",
349 | " \n",
350 | " \n",
351 | " | \n",
352 | " bad_ind | \n",
353 | " oil_amount | \n",
354 | " discount_amount | \n",
355 | " sale_amount | \n",
356 | " amount | \n",
357 | " pay_amount | \n",
358 | " coupon_amount | \n",
359 | " payment_coupon_amount | \n",
360 | " channel_code | \n",
361 | " oil_code | \n",
362 | " scene | \n",
363 | " source_app | \n",
364 | " call_source | \n",
365 | "
\n",
366 | " \n",
367 | " \n",
368 | " \n",
369 | " | count | \n",
370 | " 50609.000000 | \n",
371 | " 45665.000000 | \n",
372 | " 4.566500e+04 | \n",
373 | " 4.566500e+04 | \n",
374 | " 4.566500e+04 | \n",
375 | " 4.566500e+04 | \n",
376 | " 45665.0 | \n",
377 | " 45663.000000 | \n",
378 | " 50609.000000 | \n",
379 | " 50609.000000 | \n",
380 | " 50609.000000 | \n",
381 | " 50609.000000 | \n",
382 | " 50609.000000 | \n",
383 | "
\n",
384 | " \n",
385 | " | mean | \n",
386 | " 0.017764 | \n",
387 | " 212.188054 | \n",
388 | " 1.091035e+05 | \n",
389 | " 1.121195e+05 | \n",
390 | " 1.077312e+05 | \n",
391 | " 5.386562e+05 | \n",
392 | " 0.0 | \n",
393 | " 417.055384 | \n",
394 | " 1.476378 | \n",
395 | " 1.617894 | \n",
396 | " 1.906519 | \n",
397 | " 0.306072 | \n",
398 | " 2.900729 | \n",
399 | "
\n",
400 | " \n",
401 | " | std | \n",
402 | " 0.132093 | \n",
403 | " 200.298122 | \n",
404 | " 1.010993e+05 | \n",
405 | " 1.031804e+05 | \n",
406 | " 9.953775e+04 | \n",
407 | " 4.976888e+05 | \n",
408 | " 0.0 | \n",
409 | " 968.250273 | \n",
410 | " 1.511470 | \n",
411 | " 3.074166 | \n",
412 | " 0.367280 | \n",
413 | " 0.893682 | \n",
414 | " 0.726231 | \n",
415 | "
\n",
416 | " \n",
417 | " | min | \n",
418 | " 0.000000 | \n",
419 | " 0.000000 | \n",
420 | " 0.000000e+00 | \n",
421 | " 0.000000e+00 | \n",
422 | " 1.000000e+00 | \n",
423 | " 5.000000e+00 | \n",
424 | " 0.0 | \n",
425 | " 0.000000 | \n",
426 | " 0.000000 | \n",
427 | " 0.000000 | \n",
428 | " 0.000000 | \n",
429 | " 0.000000 | \n",
430 | " 0.000000 | \n",
431 | "
\n",
432 | " \n",
433 | " | 25% | \n",
434 | " 0.000000 | \n",
435 | " 87.220000 | \n",
436 | " 4.854000e+04 | \n",
437 | " 5.000000e+04 | \n",
438 | " 4.820000e+04 | \n",
439 | " 2.410000e+05 | \n",
440 | " 0.0 | \n",
441 | " 0.000000 | \n",
442 | " 1.000000 | \n",
443 | " 0.000000 | \n",
444 | " 2.000000 | \n",
445 | " 0.000000 | \n",
446 | " 3.000000 | \n",
447 | "
\n",
448 | " \n",
449 | " | 50% | \n",
450 | " 0.000000 | \n",
451 | " 167.580000 | \n",
452 | " 8.820000e+04 | \n",
453 | " 9.000000e+04 | \n",
454 | " 8.709600e+04 | \n",
455 | " 4.354800e+05 | \n",
456 | " 0.0 | \n",
457 | " 100.000000 | \n",
458 | " 1.000000 | \n",
459 | " 0.000000 | \n",
460 | " 2.000000 | \n",
461 | " 0.000000 | \n",
462 | " 3.000000 | \n",
463 | "
\n",
464 | " \n",
465 | " | 75% | \n",
466 | " 0.000000 | \n",
467 | " 278.300000 | \n",
468 | " 1.391600e+05 | \n",
469 | " 1.430000e+05 | \n",
470 | " 1.371150e+05 | \n",
471 | " 6.855750e+05 | \n",
472 | " 0.0 | \n",
473 | " 500.000000 | \n",
474 | " 1.000000 | \n",
475 | " 0.000000 | \n",
476 | " 2.000000 | \n",
477 | " 0.000000 | \n",
478 | " 3.000000 | \n",
479 | "
\n",
480 | " \n",
481 | " | max | \n",
482 | " 1.000000 | \n",
483 | " 3975.910000 | \n",
484 | " 1.958040e+06 | \n",
485 | " 1.998000e+06 | \n",
486 | " 1.925540e+06 | \n",
487 | " 9.627700e+06 | \n",
488 | " 0.0 | \n",
489 | " 50000.000000 | \n",
490 | " 6.000000 | \n",
491 | " 9.000000 | \n",
492 | " 2.000000 | \n",
493 | " 3.000000 | \n",
494 | " 4.000000 | \n",
495 | "
\n",
496 | " \n",
497 | "
\n",
498 | "
"
499 | ],
500 | "text/plain": [
501 | " bad_ind oil_amount discount_amount sale_amount \\\n",
502 | "count 50609.000000 45665.000000 4.566500e+04 4.566500e+04 \n",
503 | "mean 0.017764 212.188054 1.091035e+05 1.121195e+05 \n",
504 | "std 0.132093 200.298122 1.010993e+05 1.031804e+05 \n",
505 | "min 0.000000 0.000000 0.000000e+00 0.000000e+00 \n",
506 | "25% 0.000000 87.220000 4.854000e+04 5.000000e+04 \n",
507 | "50% 0.000000 167.580000 8.820000e+04 9.000000e+04 \n",
508 | "75% 0.000000 278.300000 1.391600e+05 1.430000e+05 \n",
509 | "max 1.000000 3975.910000 1.958040e+06 1.998000e+06 \n",
510 | "\n",
511 | " amount pay_amount coupon_amount payment_coupon_amount \\\n",
512 | "count 4.566500e+04 4.566500e+04 45665.0 45663.000000 \n",
513 | "mean 1.077312e+05 5.386562e+05 0.0 417.055384 \n",
514 | "std 9.953775e+04 4.976888e+05 0.0 968.250273 \n",
515 | "min 1.000000e+00 5.000000e+00 0.0 0.000000 \n",
516 | "25% 4.820000e+04 2.410000e+05 0.0 0.000000 \n",
517 | "50% 8.709600e+04 4.354800e+05 0.0 100.000000 \n",
518 | "75% 1.371150e+05 6.855750e+05 0.0 500.000000 \n",
519 | "max 1.925540e+06 9.627700e+06 0.0 50000.000000 \n",
520 | "\n",
521 | " channel_code oil_code scene source_app call_source \n",
522 | "count 50609.000000 50609.000000 50609.000000 50609.000000 50609.000000 \n",
523 | "mean 1.476378 1.617894 1.906519 0.306072 2.900729 \n",
524 | "std 1.511470 3.074166 0.367280 0.893682 0.726231 \n",
525 | "min 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
526 | "25% 1.000000 0.000000 2.000000 0.000000 3.000000 \n",
527 | "50% 1.000000 0.000000 2.000000 0.000000 3.000000 \n",
528 | "75% 1.000000 0.000000 2.000000 0.000000 3.000000 \n",
529 | "max 6.000000 9.000000 2.000000 3.000000 4.000000 "
530 | ]
531 | },
532 | "execution_count": 17,
533 | "metadata": {},
534 | "output_type": "execute_result"
535 | }
536 | ],
537 | "source": [
538 | "df.describe()"
539 | ]
540 | },
541 | {
542 | "cell_type": "markdown",
543 | "metadata": {},
544 | "source": [
545 | "对creat_dt做补全,用oil_actv_dt来填补,并且截取6个月的数据。 \n",
546 | "构造变量的时候不能直接对历史所有数据做累加。 \n",
547 | "否则随着时间推移,变量分布会有很大的变化。"
548 | ]
549 | },
550 | {
551 | "cell_type": "code",
552 | "execution_count": 18,
553 | "metadata": {},
554 | "outputs": [
555 | {
556 | "data": {
557 | "text/html": [
558 | "\n",
559 | "\n",
572 | "
\n",
573 | " \n",
574 | " \n",
575 | " | \n",
576 | " uid | \n",
577 | " create_dt | \n",
578 | " oil_actv_dt | \n",
579 | " class_new | \n",
580 | " bad_ind | \n",
581 | " oil_amount | \n",
582 | " discount_amount | \n",
583 | " sale_amount | \n",
584 | " amount | \n",
585 | " pay_amount | \n",
586 | " coupon_amount | \n",
587 | " payment_coupon_amount | \n",
588 | " channel_code | \n",
589 | " oil_code | \n",
590 | " scene | \n",
591 | " source_app | \n",
592 | " call_source | \n",
593 | " dtn | \n",
594 | "
\n",
595 | " \n",
596 | " \n",
597 | " \n",
598 | " | 50608 | \n",
599 | " B96436391985035703 | \n",
600 | " 2018-10-08 | \n",
601 | " 2018-10-08 | \n",
602 | " B | \n",
603 | " 0 | \n",
604 | " NaN | \n",
605 | " NaN | \n",
606 | " NaN | \n",
607 | " NaN | \n",
608 | " NaN | \n",
609 | " NaN | \n",
610 | " NaN | \n",
611 | " 6 | \n",
612 | " 9 | \n",
613 | " 2 | \n",
614 | " 3 | \n",
615 | " 4 | \n",
616 | " 0 | \n",
617 | "
\n",
618 | " \n",
619 | " | 50607 | \n",
620 | " B96436391984693397 | \n",
621 | " 2018-10-11 | \n",
622 | " 2018-10-11 | \n",
623 | " E | \n",
624 | " 0 | \n",
625 | " NaN | \n",
626 | " NaN | \n",
627 | " NaN | \n",
628 | " NaN | \n",
629 | " NaN | \n",
630 | " NaN | \n",
631 | " NaN | \n",
632 | " 6 | \n",
633 | " 9 | \n",
634 | " 2 | \n",
635 | " 3 | \n",
636 | " 4 | \n",
637 | " 0 | \n",
638 | "
\n",
639 | " \n",
640 | " | 50606 | \n",
641 | " B96436391977217468 | \n",
642 | " 2018-10-17 | \n",
643 | " 2018-10-17 | \n",
644 | " B | \n",
645 | " 0 | \n",
646 | " NaN | \n",
647 | " NaN | \n",
648 | " NaN | \n",
649 | " NaN | \n",
650 | " NaN | \n",
651 | " NaN | \n",
652 | " NaN | \n",
653 | " 6 | \n",
654 | " 9 | \n",
655 | " 2 | \n",
656 | " 3 | \n",
657 | " 4 | \n",
658 | " 0 | \n",
659 | "
\n",
660 | " \n",
661 | " | 50605 | \n",
662 | " B96436391976480892 | \n",
663 | " 2018-09-28 | \n",
664 | " 2018-09-28 | \n",
665 | " B | \n",
666 | " 0 | \n",
667 | " NaN | \n",
668 | " NaN | \n",
669 | " NaN | \n",
670 | " NaN | \n",
671 | " NaN | \n",
672 | " NaN | \n",
673 | " NaN | \n",
674 | " 6 | \n",
675 | " 9 | \n",
676 | " 2 | \n",
677 | " 3 | \n",
678 | " 4 | \n",
679 | " 0 | \n",
680 | "
\n",
681 | " \n",
682 | " | 50604 | \n",
683 | " B96436391972106043 | \n",
684 | " 2018-10-19 | \n",
685 | " 2018-10-19 | \n",
686 | " A | \n",
687 | " 0 | \n",
688 | " NaN | \n",
689 | " NaN | \n",
690 | " NaN | \n",
691 | " NaN | \n",
692 | " NaN | \n",
693 | " NaN | \n",
694 | " NaN | \n",
695 | " 6 | \n",
696 | " 9 | \n",
697 | " 2 | \n",
698 | " 3 | \n",
699 | " 4 | \n",
700 | " 0 | \n",
701 | "
\n",
702 | " \n",
703 | "
\n",
704 | "
"
705 | ],
706 | "text/plain": [
707 | " uid create_dt oil_actv_dt class_new bad_ind \\\n",
708 | "50608 B96436391985035703 2018-10-08 2018-10-08 B 0 \n",
709 | "50607 B96436391984693397 2018-10-11 2018-10-11 E 0 \n",
710 | "50606 B96436391977217468 2018-10-17 2018-10-17 B 0 \n",
711 | "50605 B96436391976480892 2018-09-28 2018-09-28 B 0 \n",
712 | "50604 B96436391972106043 2018-10-19 2018-10-19 A 0 \n",
713 | "\n",
714 | " oil_amount discount_amount sale_amount amount pay_amount \\\n",
715 | "50608 NaN NaN NaN NaN NaN \n",
716 | "50607 NaN NaN NaN NaN NaN \n",
717 | "50606 NaN NaN NaN NaN NaN \n",
718 | "50605 NaN NaN NaN NaN NaN \n",
719 | "50604 NaN NaN NaN NaN NaN \n",
720 | "\n",
721 | " coupon_amount payment_coupon_amount channel_code oil_code scene \\\n",
722 | "50608 NaN NaN 6 9 2 \n",
723 | "50607 NaN NaN 6 9 2 \n",
724 | "50606 NaN NaN 6 9 2 \n",
725 | "50605 NaN NaN 6 9 2 \n",
726 | "50604 NaN NaN 6 9 2 \n",
727 | "\n",
728 | " source_app call_source dtn \n",
729 | "50608 3 4 0 \n",
730 | "50607 3 4 0 \n",
731 | "50606 3 4 0 \n",
732 | "50605 3 4 0 \n",
733 | "50604 3 4 0 "
734 | ]
735 | },
736 | "execution_count": 18,
737 | "metadata": {},
738 | "output_type": "execute_result"
739 | }
740 | ],
741 | "source": [
742 | "def time_isna(x,y):\n",
743 | " if str(x) == 'NaT':\n",
744 | " x = y\n",
745 | " else:\n",
746 | " x = x\n",
747 | " return x\n",
748 | "df2 = df.sort_values(['uid','create_dt'],ascending = False)\n",
749 | "df2['create_dt'] = df2.apply(lambda x: time_isna(x.create_dt,x.oil_actv_dt),axis = 1)\n",
750 | "df2['dtn'] = (df2.oil_actv_dt - df2.create_dt).apply(lambda x :x.days)\n",
751 | "df = df2[df2['dtn']<180]\n",
752 | "df.head()"
753 | ]
754 | },
755 | {
756 | "cell_type": "markdown",
757 | "metadata": {},
758 | "source": [
759 | "对org_list变量求历史贷款天数的最大间隔,并且去重"
760 | ]
761 | },
762 | {
763 | "cell_type": "code",
764 | "execution_count": 28,
765 | "metadata": {},
766 | "outputs": [
767 | {
768 | "name": "stderr",
769 | "output_type": "stream",
770 | "text": [
771 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:2: SettingWithCopyWarning: \n",
772 | "A value is trying to be set on a copy of a slice from a DataFrame.\n",
773 | "Try using .loc[row_indexer,col_indexer] = value instead\n",
774 | "\n",
775 | "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
776 | " \n"
777 | ]
778 | },
779 | {
780 | "data": {
781 | "text/plain": [
782 | "(11099, 6)"
783 | ]
784 | },
785 | "execution_count": 28,
786 | "metadata": {},
787 | "output_type": "execute_result"
788 | }
789 | ],
790 | "source": [
791 | "base = df[org_lst]\n",
792 | "base['dtn'] = df['dtn']\n",
793 | "base = base.sort_values(['uid','create_dt'],ascending = False)\n",
794 | "base = base.drop_duplicates(['uid'],keep = 'first')\n",
795 | "base.shape"
796 | ]
797 | },
798 | {
799 | "cell_type": "markdown",
800 | "metadata": {},
801 | "source": [
802 | "做变量衍生"
803 | ]
804 | },
805 | {
806 | "cell_type": "code",
807 | "execution_count": 20,
808 | "metadata": {},
809 | "outputs": [
810 | {
811 | "name": "stderr",
812 | "output_type": "stream",
813 | "text": [
814 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:21: RuntimeWarning: Mean of empty slice\n",
815 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:27: RuntimeWarning: All-NaN axis encountered\n",
816 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:33: RuntimeWarning: All-NaN axis encountered\n",
817 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:39: RuntimeWarning: Degrees of freedom <= 0 for slice.\n",
818 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:45: RuntimeWarning: All-NaN axis encountered\n",
819 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:51: RuntimeWarning: Mean of empty slice\n",
820 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:51: RuntimeWarning: Degrees of freedom <= 0 for slice.\n"
821 | ]
822 | }
823 | ],
824 | "source": [
825 | "gn = pd.DataFrame()\n",
826 | "for i in agg_lst:\n",
827 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:len(df[i])).reset_index())\n",
828 | " tp.columns = ['uid',i + '_cnt']\n",
829 | " if gn.empty == True:\n",
830 | " gn = tp\n",
831 | " else:\n",
832 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
833 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.where(df[i]>0,1,0).sum()).reset_index())\n",
834 | " tp.columns = ['uid',i + '_num']\n",
835 | " if gn.empty == True:\n",
836 | " gn = tp\n",
837 | " else:\n",
838 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
839 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nansum(df[i])).reset_index())\n",
840 | " tp.columns = ['uid',i + '_tot']\n",
841 | " if gn.empty == True:\n",
842 | " gn = tp\n",
843 | " else:\n",
844 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
845 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nanmean(df[i])).reset_index())\n",
846 | " tp.columns = ['uid',i + '_avg']\n",
847 | " if gn.empty == True:\n",
848 | " gn = tp\n",
849 | " else:\n",
850 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
851 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nanmax(df[i])).reset_index())\n",
852 | " tp.columns = ['uid',i + '_max']\n",
853 | " if gn.empty == True:\n",
854 | " gn = tp\n",
855 | " else:\n",
856 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
857 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nanmin(df[i])).reset_index())\n",
858 | " tp.columns = ['uid',i + '_min']\n",
859 | " if gn.empty == True:\n",
860 | " gn = tp\n",
861 | " else:\n",
862 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
863 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nanvar(df[i])).reset_index())\n",
864 | " tp.columns = ['uid',i + '_var']\n",
865 | " if gn.empty == True:\n",
866 | " gn = tp\n",
867 | " else:\n",
868 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
869 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nanmax(df[i]) -np.nanmin(df[i]) ).reset_index())\n",
870 | " tp.columns = ['uid',i + '_var']\n",
871 | " if gn.empty == True:\n",
872 | " gn = tp\n",
873 | " else:\n",
874 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')\n",
875 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df:np.nanmean(df[i])/max(np.nanvar(df[i]),1)).reset_index())\n",
876 | " tp.columns = ['uid',i + '_var']\n",
877 | " if gn.empty == True:\n",
878 | " gn = tp\n",
879 | " else:\n",
880 | " gn = pd.merge(gn,tp,on = 'uid',how = 'left')"
881 | ]
882 | },
883 | {
884 | "cell_type": "markdown",
885 | "metadata": {},
886 | "source": [
887 | "对dstc_lst变量求distinct个数"
888 | ]
889 | },
890 | {
891 | "cell_type": "code",
892 | "execution_count": 22,
893 | "metadata": {},
894 | "outputs": [],
895 | "source": [
896 | "gc = pd.DataFrame()\n",
897 | "for i in dstc_lst:\n",
898 | " tp = pd.DataFrame(df.groupby('uid').apply(lambda df: len(set(df[i]))).reset_index())\n",
899 | " tp.columns = ['uid',i + '_dstc']\n",
900 | " if gc.empty == True:\n",
901 | " gc = tp\n",
902 | " else:\n",
903 | " gc = pd.merge(gc,tp,on = 'uid',how = 'left')"
904 | ]
905 | },
906 | {
907 | "cell_type": "markdown",
908 | "metadata": {},
909 | "source": [
910 | "将变量组合在一起"
911 | ]
912 | },
913 | {
914 | "cell_type": "code",
915 | "execution_count": 29,
916 | "metadata": {},
917 | "outputs": [
918 | {
919 | "data": {
920 | "text/plain": [
921 | "(11099, 74)"
922 | ]
923 | },
924 | "execution_count": 29,
925 | "metadata": {},
926 | "output_type": "execute_result"
927 | }
928 | ],
929 | "source": [
930 | "fn = pd.merge(base,gn,on= 'uid')\n",
931 | "fn = pd.merge(fn,gc,on= 'uid') \n",
932 | "fn.shape"
933 | ]
934 | },
935 | {
936 | "cell_type": "code",
937 | "execution_count": 35,
938 | "metadata": {},
939 | "outputs": [],
940 | "source": [
941 | "fn = fn.fillna(0)"
942 | ]
943 | },
944 | {
945 | "cell_type": "code",
946 | "execution_count": 36,
947 | "metadata": {},
948 | "outputs": [
949 | {
950 | "data": {
951 | "text/html": [
952 | "\n",
953 | "\n",
966 | "
\n",
967 | " \n",
968 | " \n",
969 | " | \n",
970 | " uid | \n",
971 | " create_dt | \n",
972 | " oil_actv_dt | \n",
973 | " class_new | \n",
974 | " bad_ind | \n",
975 | " dtn | \n",
976 | " oil_amount_cnt | \n",
977 | " oil_amount_num | \n",
978 | " oil_amount_tot | \n",
979 | " oil_amount_avg | \n",
980 | " ... | \n",
981 | " payment_coupon_amount_max | \n",
982 | " payment_coupon_amount_min | \n",
983 | " payment_coupon_amount_var_x | \n",
984 | " payment_coupon_amount_var_y | \n",
985 | " payment_coupon_amount_var | \n",
986 | " channel_code_dstc | \n",
987 | " oil_code_dstc | \n",
988 | " scene_dstc | \n",
989 | " source_app_dstc | \n",
990 | " call_source_dstc | \n",
991 | "
\n",
992 | " \n",
993 | " \n",
994 | " \n",
995 | " | 0 | \n",
996 | " B96436391985035703 | \n",
997 | " 2018-10-08 | \n",
998 | " 2018-10-08 | \n",
999 | " B | \n",
1000 | " 0 | \n",
1001 | " 0 | \n",
1002 | " 1 | \n",
1003 | " 0 | \n",
1004 | " 0.00 | \n",
1005 | " 0.00 | \n",
1006 | " ... | \n",
1007 | " 0.0 | \n",
1008 | " 0.0 | \n",
1009 | " 0.0 | \n",
1010 | " 0.0 | \n",
1011 | " 0.0 | \n",
1012 | " 1 | \n",
1013 | " 1 | \n",
1014 | " 1 | \n",
1015 | " 1 | \n",
1016 | " 1 | \n",
1017 | "
\n",
1018 | " \n",
1019 | " | 1 | \n",
1020 | " B96436391984693397 | \n",
1021 | " 2018-10-11 | \n",
1022 | " 2018-10-11 | \n",
1023 | " E | \n",
1024 | " 0 | \n",
1025 | " 0 | \n",
1026 | " 1 | \n",
1027 | " 0 | \n",
1028 | " 0.00 | \n",
1029 | " 0.00 | \n",
1030 | " ... | \n",
1031 | " 0.0 | \n",
1032 | " 0.0 | \n",
1033 | " 0.0 | \n",
1034 | " 0.0 | \n",
1035 | " 0.0 | \n",
1036 | " 1 | \n",
1037 | " 1 | \n",
1038 | " 1 | \n",
1039 | " 1 | \n",
1040 | " 1 | \n",
1041 | "
\n",
1042 | " \n",
1043 | " | 2 | \n",
1044 | " B96436391977217468 | \n",
1045 | " 2018-10-17 | \n",
1046 | " 2018-10-17 | \n",
1047 | " B | \n",
1048 | " 0 | \n",
1049 | " 0 | \n",
1050 | " 1 | \n",
1051 | " 0 | \n",
1052 | " 0.00 | \n",
1053 | " 0.00 | \n",
1054 | " ... | \n",
1055 | " 0.0 | \n",
1056 | " 0.0 | \n",
1057 | " 0.0 | \n",
1058 | " 0.0 | \n",
1059 | " 0.0 | \n",
1060 | " 1 | \n",
1061 | " 1 | \n",
1062 | " 1 | \n",
1063 | " 1 | \n",
1064 | " 1 | \n",
1065 | "
\n",
1066 | " \n",
1067 | " | 3 | \n",
1068 | " B96436391976480892 | \n",
1069 | " 2018-09-28 | \n",
1070 | " 2018-09-28 | \n",
1071 | " B | \n",
1072 | " 0 | \n",
1073 | " 0 | \n",
1074 | " 1 | \n",
1075 | " 0 | \n",
1076 | " 0.00 | \n",
1077 | " 0.00 | \n",
1078 | " ... | \n",
1079 | " 0.0 | \n",
1080 | " 0.0 | \n",
1081 | " 0.0 | \n",
1082 | " 0.0 | \n",
1083 | " 0.0 | \n",
1084 | " 1 | \n",
1085 | " 1 | \n",
1086 | " 1 | \n",
1087 | " 1 | \n",
1088 | " 1 | \n",
1089 | "
\n",
1090 | " \n",
1091 | " | 4 | \n",
1092 | " B96436391972106043 | \n",
1093 | " 2018-10-19 | \n",
1094 | " 2018-10-19 | \n",
1095 | " A | \n",
1096 | " 0 | \n",
1097 | " 0 | \n",
1098 | " 1 | \n",
1099 | " 0 | \n",
1100 | " 0.00 | \n",
1101 | " 0.00 | \n",
1102 | " ... | \n",
1103 | " 0.0 | \n",
1104 | " 0.0 | \n",
1105 | " 0.0 | \n",
1106 | " 0.0 | \n",
1107 | " 0.0 | \n",
1108 | " 1 | \n",
1109 | " 1 | \n",
1110 | " 1 | \n",
1111 | " 1 | \n",
1112 | " 1 | \n",
1113 | "
\n",
1114 | " \n",
1115 | " | 5 | \n",
1116 | " B96436391964489355 | \n",
1117 | " 2018-09-29 | \n",
1118 | " 2018-09-29 | \n",
1119 | " C | \n",
1120 | " 0 | \n",
1121 | " 0 | \n",
1122 | " 1 | \n",
1123 | " 0 | \n",
1124 | " 0.00 | \n",
1125 | " 0.00 | \n",
1126 | " ... | \n",
1127 | " 0.0 | \n",
1128 | " 0.0 | \n",
1129 | " 0.0 | \n",
1130 | " 0.0 | \n",
1131 | " 0.0 | \n",
1132 | " 1 | \n",
1133 | " 1 | \n",
1134 | " 1 | \n",
1135 | " 1 | \n",
1136 | " 1 | \n",
1137 | "
\n",
1138 | " \n",
1139 | " | 6 | \n",
1140 | " B96436391942199711 | \n",
1141 | " 2018-10-18 | \n",
1142 | " 2018-10-18 | \n",
1143 | " E | \n",
1144 | " 0 | \n",
1145 | " 0 | \n",
1146 | " 1 | \n",
1147 | " 0 | \n",
1148 | " 0.00 | \n",
1149 | " 0.00 | \n",
1150 | " ... | \n",
1151 | " 0.0 | \n",
1152 | " 0.0 | \n",
1153 | " 0.0 | \n",
1154 | " 0.0 | \n",
1155 | " 0.0 | \n",
1156 | " 1 | \n",
1157 | " 1 | \n",
1158 | " 1 | \n",
1159 | " 1 | \n",
1160 | " 1 | \n",
1161 | "
\n",
1162 | " \n",
1163 | " | 7 | \n",
1164 | " B96436391941530690 | \n",
1165 | " 2018-09-29 | \n",
1166 | " 2018-09-29 | \n",
1167 | " B | \n",
1168 | " 0 | \n",
1169 | " 0 | \n",
1170 | " 1 | \n",
1171 | " 0 | \n",
1172 | " 0.00 | \n",
1173 | " 0.00 | \n",
1174 | " ... | \n",
1175 | " 0.0 | \n",
1176 | " 0.0 | \n",
1177 | " 0.0 | \n",
1178 | " 0.0 | \n",
1179 | " 0.0 | \n",
1180 | " 1 | \n",
1181 | " 1 | \n",
1182 | " 1 | \n",
1183 | " 1 | \n",
1184 | " 1 | \n",
1185 | "
\n",
1186 | " \n",
1187 | " | 8 | \n",
1188 | " B96436391899881051 | \n",
1189 | " 2018-10-10 | \n",
1190 | " 2018-10-10 | \n",
1191 | " A | \n",
1192 | " 0 | \n",
1193 | " 0 | \n",
1194 | " 1 | \n",
1195 | " 0 | \n",
1196 | " 0.00 | \n",
1197 | " 0.00 | \n",
1198 | " ... | \n",
1199 | " 0.0 | \n",
1200 | " 0.0 | \n",
1201 | " 0.0 | \n",
1202 | " 0.0 | \n",
1203 | " 0.0 | \n",
1204 | " 1 | \n",
1205 | " 1 | \n",
1206 | " 1 | \n",
1207 | " 1 | \n",
1208 | " 1 | \n",
1209 | "
\n",
1210 | " \n",
1211 | " | 9 | \n",
1212 | " B96436391889563211 | \n",
1213 | " 2018-09-25 | \n",
1214 | " 2018-09-25 | \n",
1215 | " E | \n",
1216 | " 0 | \n",
1217 | " 0 | \n",
1218 | " 1 | \n",
1219 | " 0 | \n",
1220 | " 0.00 | \n",
1221 | " 0.00 | \n",
1222 | " ... | \n",
1223 | " 0.0 | \n",
1224 | " 0.0 | \n",
1225 | " 0.0 | \n",
1226 | " 0.0 | \n",
1227 | " 0.0 | \n",
1228 | " 1 | \n",
1229 | " 1 | \n",
1230 | " 1 | \n",
1231 | " 1 | \n",
1232 | " 1 | \n",
1233 | "
\n",
1234 | " \n",
1235 | " | 10 | \n",
1236 | " B96436391864423458 | \n",
1237 | " 2018-10-27 | \n",
1238 | " 2018-10-27 | \n",
1239 | " D | \n",
1240 | " 0 | \n",
1241 | " 0 | \n",
1242 | " 1 | \n",
1243 | " 0 | \n",
1244 | " 0.00 | \n",
1245 | " 0.00 | \n",
1246 | " ... | \n",
1247 | " 0.0 | \n",
1248 | " 0.0 | \n",
1249 | " 0.0 | \n",
1250 | " 0.0 | \n",
1251 | " 0.0 | \n",
1252 | " 1 | \n",
1253 | " 1 | \n",
1254 | " 1 | \n",
1255 | " 1 | \n",
1256 | " 1 | \n",
1257 | "
\n",
1258 | " \n",
1259 | " | 11 | \n",
1260 | " B96436391861783745 | \n",
1261 | " 2018-09-27 | \n",
1262 | " 2018-09-27 | \n",
1263 | " E | \n",
1264 | " 0 | \n",
1265 | " 0 | \n",
1266 | " 1 | \n",
1267 | " 0 | \n",
1268 | " 0.00 | \n",
1269 | " 0.00 | \n",
1270 | " ... | \n",
1271 | " 0.0 | \n",
1272 | " 0.0 | \n",
1273 | " 0.0 | \n",
1274 | " 0.0 | \n",
1275 | " 0.0 | \n",
1276 | " 1 | \n",
1277 | " 1 | \n",
1278 | " 1 | \n",
1279 | " 1 | \n",
1280 | " 1 | \n",
1281 | "
\n",
1282 | " \n",
1283 | " | 12 | \n",
1284 | " B96436391851465287 | \n",
1285 | " 2018-10-19 | \n",
1286 | " 2018-10-19 | \n",
1287 | " D | \n",
1288 | " 0 | \n",
1289 | " 0 | \n",
1290 | " 1 | \n",
1291 | " 0 | \n",
1292 | " 0.00 | \n",
1293 | " 0.00 | \n",
1294 | " ... | \n",
1295 | " 0.0 | \n",
1296 | " 0.0 | \n",
1297 | " 0.0 | \n",
1298 | " 0.0 | \n",
1299 | " 0.0 | \n",
1300 | " 1 | \n",
1301 | " 1 | \n",
1302 | " 1 | \n",
1303 | " 1 | \n",
1304 | " 1 | \n",
1305 | "
\n",
1306 | " \n",
1307 | " | 13 | \n",
1308 | " B96436391812222712 | \n",
1309 | " 2018-10-12 | \n",
1310 | " 2018-10-12 | \n",
1311 | " B | \n",
1312 | " 0 | \n",
1313 | " 0 | \n",
1314 | " 1 | \n",
1315 | " 0 | \n",
1316 | " 0.00 | \n",
1317 | " 0.00 | \n",
1318 | " ... | \n",
1319 | " 0.0 | \n",
1320 | " 0.0 | \n",
1321 | " 0.0 | \n",
1322 | " 0.0 | \n",
1323 | " 0.0 | \n",
1324 | " 1 | \n",
1325 | " 1 | \n",
1326 | " 1 | \n",
1327 | " 1 | \n",
1328 | " 1 | \n",
1329 | "
\n",
1330 | " \n",
1331 | " | 14 | \n",
1332 | " B96436391761778117 | \n",
1333 | " 2018-10-11 | \n",
1334 | " 2018-10-11 | \n",
1335 | " C | \n",
1336 | " 0 | \n",
1337 | " 0 | \n",
1338 | " 1 | \n",
1339 | " 0 | \n",
1340 | " 0.00 | \n",
1341 | " 0.00 | \n",
1342 | " ... | \n",
1343 | " 0.0 | \n",
1344 | " 0.0 | \n",
1345 | " 0.0 | \n",
1346 | " 0.0 | \n",
1347 | " 0.0 | \n",
1348 | " 1 | \n",
1349 | " 1 | \n",
1350 | " 1 | \n",
1351 | " 1 | \n",
1352 | " 1 | \n",
1353 | "
\n",
1354 | " \n",
1355 | " | 15 | \n",
1356 | " B96436391758836159 | \n",
1357 | " 2018-09-29 | \n",
1358 | " 2018-09-29 | \n",
1359 | " E | \n",
1360 | " 0 | \n",
1361 | " 0 | \n",
1362 | " 1 | \n",
1363 | " 0 | \n",
1364 | " 0.00 | \n",
1365 | " 0.00 | \n",
1366 | " ... | \n",
1367 | " 0.0 | \n",
1368 | " 0.0 | \n",
1369 | " 0.0 | \n",
1370 | " 0.0 | \n",
1371 | " 0.0 | \n",
1372 | " 1 | \n",
1373 | " 1 | \n",
1374 | " 1 | \n",
1375 | " 1 | \n",
1376 | " 1 | \n",
1377 | "
\n",
1378 | " \n",
1379 | " | 16 | \n",
1380 | " B96436391733014891 | \n",
1381 | " 2018-06-26 | \n",
1382 | " 2018-06-26 | \n",
1383 | " E | \n",
1384 | " 0 | \n",
1385 | " 0 | \n",
1386 | " 1 | \n",
1387 | " 0 | \n",
1388 | " 0.00 | \n",
1389 | " 0.00 | \n",
1390 | " ... | \n",
1391 | " 0.0 | \n",
1392 | " 0.0 | \n",
1393 | " 0.0 | \n",
1394 | " 0.0 | \n",
1395 | " 0.0 | \n",
1396 | " 1 | \n",
1397 | " 1 | \n",
1398 | " 1 | \n",
1399 | " 1 | \n",
1400 | " 1 | \n",
1401 | "
\n",
1402 | " \n",
1403 | " | 17 | \n",
1404 | " B96436391679580342 | \n",
1405 | " 2018-10-10 | \n",
1406 | " 2018-10-10 | \n",
1407 | " D | \n",
1408 | " 0 | \n",
1409 | " 0 | \n",
1410 | " 1 | \n",
1411 | " 0 | \n",
1412 | " 0.00 | \n",
1413 | " 0.00 | \n",
1414 | " ... | \n",
1415 | " 0.0 | \n",
1416 | " 0.0 | \n",
1417 | " 0.0 | \n",
1418 | " 0.0 | \n",
1419 | " 0.0 | \n",
1420 | " 1 | \n",
1421 | " 1 | \n",
1422 | " 1 | \n",
1423 | " 1 | \n",
1424 | " 1 | \n",
1425 | "
\n",
1426 | " \n",
1427 | " | 18 | \n",
1428 | " B96436391635123385 | \n",
1429 | " 2018-09-19 | \n",
1430 | " 2018-09-19 | \n",
1431 | " D | \n",
1432 | " 0 | \n",
1433 | " 0 | \n",
1434 | " 1 | \n",
1435 | " 0 | \n",
1436 | " 0.00 | \n",
1437 | " 0.00 | \n",
1438 | " ... | \n",
1439 | " 0.0 | \n",
1440 | " 0.0 | \n",
1441 | " 0.0 | \n",
1442 | " 0.0 | \n",
1443 | " 0.0 | \n",
1444 | " 1 | \n",
1445 | " 1 | \n",
1446 | " 1 | \n",
1447 | " 1 | \n",
1448 | " 1 | \n",
1449 | "
\n",
1450 | " \n",
1451 | " | 19 | \n",
1452 | " B96436391607145327 | \n",
1453 | " 2018-10-20 | \n",
1454 | " 2018-10-20 | \n",
1455 | " B | \n",
1456 | " 0 | \n",
1457 | " 0 | \n",
1458 | " 1 | \n",
1459 | " 0 | \n",
1460 | " 0.00 | \n",
1461 | " 0.00 | \n",
1462 | " ... | \n",
1463 | " 0.0 | \n",
1464 | " 0.0 | \n",
1465 | " 0.0 | \n",
1466 | " 0.0 | \n",
1467 | " 0.0 | \n",
1468 | " 1 | \n",
1469 | " 1 | \n",
1470 | " 1 | \n",
1471 | " 1 | \n",
1472 | " 1 | \n",
1473 | "
\n",
1474 | " \n",
1475 | " | 20 | \n",
1476 | " B96436391601943473 | \n",
1477 | " 2018-10-25 | \n",
1478 | " 2018-10-25 | \n",
1479 | " D | \n",
1480 | " 0 | \n",
1481 | " 0 | \n",
1482 | " 1 | \n",
1483 | " 0 | \n",
1484 | " 0.00 | \n",
1485 | " 0.00 | \n",
1486 | " ... | \n",
1487 | " 0.0 | \n",
1488 | " 0.0 | \n",
1489 | " 0.0 | \n",
1490 | " 0.0 | \n",
1491 | " 0.0 | \n",
1492 | " 1 | \n",
1493 | " 1 | \n",
1494 | " 1 | \n",
1495 | " 1 | \n",
1496 | " 1 | \n",
1497 | "
\n",
1498 | " \n",
1499 | " | 21 | \n",
1500 | " B96436391594695697 | \n",
1501 | " 2018-09-24 | \n",
1502 | " 2018-09-24 | \n",
1503 | " F | \n",
1504 | " 0 | \n",
1505 | " 0 | \n",
1506 | " 1 | \n",
1507 | " 0 | \n",
1508 | " 0.00 | \n",
1509 | " 0.00 | \n",
1510 | " ... | \n",
1511 | " 0.0 | \n",
1512 | " 0.0 | \n",
1513 | " 0.0 | \n",
1514 | " 0.0 | \n",
1515 | " 0.0 | \n",
1516 | " 1 | \n",
1517 | " 1 | \n",
1518 | " 1 | \n",
1519 | " 1 | \n",
1520 | " 1 | \n",
1521 | "
\n",
1522 | " \n",
1523 | " | 22 | \n",
1524 | " B96436391593055178 | \n",
1525 | " 2018-09-28 | \n",
1526 | " 2018-09-28 | \n",
1527 | " D | \n",
1528 | " 0 | \n",
1529 | " 0 | \n",
1530 | " 1 | \n",
1531 | " 0 | \n",
1532 | " 0.00 | \n",
1533 | " 0.00 | \n",
1534 | " ... | \n",
1535 | " 0.0 | \n",
1536 | " 0.0 | \n",
1537 | " 0.0 | \n",
1538 | " 0.0 | \n",
1539 | " 0.0 | \n",
1540 | " 1 | \n",
1541 | " 1 | \n",
1542 | " 1 | \n",
1543 | " 1 | \n",
1544 | " 1 | \n",
1545 | "
\n",
1546 | " \n",
1547 | " | 23 | \n",
1548 | " B96436391584119601 | \n",
1549 | " 2018-10-10 | \n",
1550 | " 2018-10-10 | \n",
1551 | " D | \n",
1552 | " 0 | \n",
1553 | " 0 | \n",
1554 | " 1 | \n",
1555 | " 0 | \n",
1556 | " 0.00 | \n",
1557 | " 0.00 | \n",
1558 | " ... | \n",
1559 | " 0.0 | \n",
1560 | " 0.0 | \n",
1561 | " 0.0 | \n",
1562 | " 0.0 | \n",
1563 | " 0.0 | \n",
1564 | " 1 | \n",
1565 | " 1 | \n",
1566 | " 1 | \n",
1567 | " 1 | \n",
1568 | " 1 | \n",
1569 | "
\n",
1570 | " \n",
1571 | " | 24 | \n",
1572 | " B96436391558820968 | \n",
1573 | " 2018-10-16 | \n",
1574 | " 2018-10-16 | \n",
1575 | " D | \n",
1576 | " 0 | \n",
1577 | " 0 | \n",
1578 | " 1 | \n",
1579 | " 0 | \n",
1580 | " 0.00 | \n",
1581 | " 0.00 | \n",
1582 | " ... | \n",
1583 | " 0.0 | \n",
1584 | " 0.0 | \n",
1585 | " 0.0 | \n",
1586 | " 0.0 | \n",
1587 | " 0.0 | \n",
1588 | " 1 | \n",
1589 | " 1 | \n",
1590 | " 1 | \n",
1591 | " 1 | \n",
1592 | " 1 | \n",
1593 | "
\n",
1594 | " \n",
1595 | " | 25 | \n",
1596 | " B96436391546006453 | \n",
1597 | " 2018-10-26 | \n",
1598 | " 2018-10-26 | \n",
1599 | " B | \n",
1600 | " 0 | \n",
1601 | " 0 | \n",
1602 | " 1 | \n",
1603 | " 0 | \n",
1604 | " 0.00 | \n",
1605 | " 0.00 | \n",
1606 | " ... | \n",
1607 | " 0.0 | \n",
1608 | " 0.0 | \n",
1609 | " 0.0 | \n",
1610 | " 0.0 | \n",
1611 | " 0.0 | \n",
1612 | " 1 | \n",
1613 | " 1 | \n",
1614 | " 1 | \n",
1615 | " 1 | \n",
1616 | " 1 | \n",
1617 | "
\n",
1618 | " \n",
1619 | " | 26 | \n",
1620 | " B96436391544818920 | \n",
1621 | " 2018-10-06 | \n",
1622 | " 2018-10-06 | \n",
1623 | " C | \n",
1624 | " 0 | \n",
1625 | " 0 | \n",
1626 | " 1 | \n",
1627 | " 0 | \n",
1628 | " 0.00 | \n",
1629 | " 0.00 | \n",
1630 | " ... | \n",
1631 | " 0.0 | \n",
1632 | " 0.0 | \n",
1633 | " 0.0 | \n",
1634 | " 0.0 | \n",
1635 | " 0.0 | \n",
1636 | " 1 | \n",
1637 | " 1 | \n",
1638 | " 1 | \n",
1639 | " 1 | \n",
1640 | " 1 | \n",
1641 | "
\n",
1642 | " \n",
1643 | " | 27 | \n",
1644 | " B96436391543511443 | \n",
1645 | " 2018-10-24 | \n",
1646 | " 2018-10-24 | \n",
1647 | " C | \n",
1648 | " 0 | \n",
1649 | " 0 | \n",
1650 | " 1 | \n",
1651 | " 0 | \n",
1652 | " 0.00 | \n",
1653 | " 0.00 | \n",
1654 | " ... | \n",
1655 | " 0.0 | \n",
1656 | " 0.0 | \n",
1657 | " 0.0 | \n",
1658 | " 0.0 | \n",
1659 | " 0.0 | \n",
1660 | " 1 | \n",
1661 | " 1 | \n",
1662 | " 1 | \n",
1663 | " 1 | \n",
1664 | " 1 | \n",
1665 | "
\n",
1666 | " \n",
1667 | " | 28 | \n",
1668 | " B96436391477200631 | \n",
1669 | " 2018-10-05 | \n",
1670 | " 2018-10-05 | \n",
1671 | " B | \n",
1672 | " 0 | \n",
1673 | " 0 | \n",
1674 | " 1 | \n",
1675 | " 0 | \n",
1676 | " 0.00 | \n",
1677 | " 0.00 | \n",
1678 | " ... | \n",
1679 | " 0.0 | \n",
1680 | " 0.0 | \n",
1681 | " 0.0 | \n",
1682 | " 0.0 | \n",
1683 | " 0.0 | \n",
1684 | " 1 | \n",
1685 | " 1 | \n",
1686 | " 1 | \n",
1687 | " 1 | \n",
1688 | " 1 | \n",
1689 | "
\n",
1690 | " \n",
1691 | " | 29 | \n",
1692 | " B96436391474310727 | \n",
1693 | " 2018-10-19 | \n",
1694 | " 2018-10-19 | \n",
1695 | " F | \n",
1696 | " 0 | \n",
1697 | " 0 | \n",
1698 | " 1 | \n",
1699 | " 0 | \n",
1700 | " 0.00 | \n",
1701 | " 0.00 | \n",
1702 | " ... | \n",
1703 | " 0.0 | \n",
1704 | " 0.0 | \n",
1705 | " 0.0 | \n",
1706 | " 0.0 | \n",
1707 | " 0.0 | \n",
1708 | " 1 | \n",
1709 | " 1 | \n",
1710 | " 1 | \n",
1711 | " 1 | \n",
1712 | " 1 | \n",
1713 | "
\n",
1714 | " \n",
1715 | " | ... | \n",
1716 | " ... | \n",
1717 | " ... | \n",
1718 | " ... | \n",
1719 | " ... | \n",
1720 | " ... | \n",
1721 | " ... | \n",
1722 | " ... | \n",
1723 | " ... | \n",
1724 | " ... | \n",
1725 | " ... | \n",
1726 | " ... | \n",
1727 | " ... | \n",
1728 | " ... | \n",
1729 | " ... | \n",
1730 | " ... | \n",
1731 | " ... | \n",
1732 | " ... | \n",
1733 | " ... | \n",
1734 | " ... | \n",
1735 | " ... | \n",
1736 | " ... | \n",
1737 | "
\n",
1738 | " \n",
1739 | " | 70 | \n",
1740 | " B96436390507602521 | \n",
1741 | " 2018-10-29 | \n",
1742 | " 2018-10-29 | \n",
1743 | " C | \n",
1744 | " 0 | \n",
1745 | " 0 | \n",
1746 | " 1 | \n",
1747 | " 0 | \n",
1748 | " 0.00 | \n",
1749 | " 0.00 | \n",
1750 | " ... | \n",
1751 | " 0.0 | \n",
1752 | " 0.0 | \n",
1753 | " 0.0 | \n",
1754 | " 0.0 | \n",
1755 | " 0.0 | \n",
1756 | " 1 | \n",
1757 | " 1 | \n",
1758 | " 1 | \n",
1759 | " 1 | \n",
1760 | " 1 | \n",
1761 | "
\n",
1762 | " \n",
1763 | " | 71 | \n",
1764 | " B96436390497597008 | \n",
1765 | " 2018-09-24 | \n",
1766 | " 2018-09-24 | \n",
1767 | " E | \n",
1768 | " 0 | \n",
1769 | " 0 | \n",
1770 | " 1 | \n",
1771 | " 0 | \n",
1772 | " 0.00 | \n",
1773 | " 0.00 | \n",
1774 | " ... | \n",
1775 | " 0.0 | \n",
1776 | " 0.0 | \n",
1777 | " 0.0 | \n",
1778 | " 0.0 | \n",
1779 | " 0.0 | \n",
1780 | " 1 | \n",
1781 | " 1 | \n",
1782 | " 1 | \n",
1783 | " 1 | \n",
1784 | " 1 | \n",
1785 | "
\n",
1786 | " \n",
1787 | " | 72 | \n",
1788 | " B96436390495235932 | \n",
1789 | " 2018-10-03 | \n",
1790 | " 2018-10-03 | \n",
1791 | " D | \n",
1792 | " 0 | \n",
1793 | " 0 | \n",
1794 | " 1 | \n",
1795 | " 0 | \n",
1796 | " 0.00 | \n",
1797 | " 0.00 | \n",
1798 | " ... | \n",
1799 | " 0.0 | \n",
1800 | " 0.0 | \n",
1801 | " 0.0 | \n",
1802 | " 0.0 | \n",
1803 | " 0.0 | \n",
1804 | " 1 | \n",
1805 | " 1 | \n",
1806 | " 1 | \n",
1807 | " 1 | \n",
1808 | " 1 | \n",
1809 | "
\n",
1810 | " \n",
1811 | " | 73 | \n",
1812 | " B96436390487777832 | \n",
1813 | " 2018-09-22 | \n",
1814 | " 2018-09-22 | \n",
1815 | " D | \n",
1816 | " 0 | \n",
1817 | " 0 | \n",
1818 | " 1 | \n",
1819 | " 0 | \n",
1820 | " 0.00 | \n",
1821 | " 0.00 | \n",
1822 | " ... | \n",
1823 | " 0.0 | \n",
1824 | " 0.0 | \n",
1825 | " 0.0 | \n",
1826 | " 0.0 | \n",
1827 | " 0.0 | \n",
1828 | " 1 | \n",
1829 | " 1 | \n",
1830 | " 1 | \n",
1831 | " 1 | \n",
1832 | " 1 | \n",
1833 | "
\n",
1834 | " \n",
1835 | " | 74 | \n",
1836 | " B96436390480777386 | \n",
1837 | " 2018-09-16 | \n",
1838 | " 2018-09-16 | \n",
1839 | " F | \n",
1840 | " 0 | \n",
1841 | " 0 | \n",
1842 | " 1 | \n",
1843 | " 0 | \n",
1844 | " 0.00 | \n",
1845 | " 0.00 | \n",
1846 | " ... | \n",
1847 | " 0.0 | \n",
1848 | " 0.0 | \n",
1849 | " 0.0 | \n",
1850 | " 0.0 | \n",
1851 | " 0.0 | \n",
1852 | " 1 | \n",
1853 | " 1 | \n",
1854 | " 1 | \n",
1855 | " 1 | \n",
1856 | " 1 | \n",
1857 | "
\n",
1858 | " \n",
1859 | " | 75 | \n",
1860 | " B96436390479074152 | \n",
1861 | " 2018-10-15 | \n",
1862 | " 2018-10-15 | \n",
1863 | " C | \n",
1864 | " 0 | \n",
1865 | " 0 | \n",
1866 | " 1 | \n",
1867 | " 0 | \n",
1868 | " 0.00 | \n",
1869 | " 0.00 | \n",
1870 | " ... | \n",
1871 | " 0.0 | \n",
1872 | " 0.0 | \n",
1873 | " 0.0 | \n",
1874 | " 0.0 | \n",
1875 | " 0.0 | \n",
1876 | " 1 | \n",
1877 | " 1 | \n",
1878 | " 1 | \n",
1879 | " 1 | \n",
1880 | " 1 | \n",
1881 | "
\n",
1882 | " \n",
1883 | " | 76 | \n",
1884 | " B96436390475333449 | \n",
1885 | " 2018-10-16 | \n",
1886 | " 2018-10-16 | \n",
1887 | " C | \n",
1888 | " 0 | \n",
1889 | " 0 | \n",
1890 | " 1 | \n",
1891 | " 0 | \n",
1892 | " 0.00 | \n",
1893 | " 0.00 | \n",
1894 | " ... | \n",
1895 | " 0.0 | \n",
1896 | " 0.0 | \n",
1897 | " 0.0 | \n",
1898 | " 0.0 | \n",
1899 | " 0.0 | \n",
1900 | " 1 | \n",
1901 | " 1 | \n",
1902 | " 1 | \n",
1903 | " 1 | \n",
1904 | " 1 | \n",
1905 | "
\n",
1906 | " \n",
1907 | " | 77 | \n",
1908 | " B96436390454580556 | \n",
1909 | " 2018-09-26 | \n",
1910 | " 2018-09-26 | \n",
1911 | " D | \n",
1912 | " 0 | \n",
1913 | " 0 | \n",
1914 | " 1 | \n",
1915 | " 0 | \n",
1916 | " 0.00 | \n",
1917 | " 0.00 | \n",
1918 | " ... | \n",
1919 | " 0.0 | \n",
1920 | " 0.0 | \n",
1921 | " 0.0 | \n",
1922 | " 0.0 | \n",
1923 | " 0.0 | \n",
1924 | " 1 | \n",
1925 | " 1 | \n",
1926 | " 1 | \n",
1927 | " 1 | \n",
1928 | " 1 | \n",
1929 | "
\n",
1930 | " \n",
1931 | " | 78 | \n",
1932 | " B96436390427892316 | \n",
1933 | " 2018-10-11 | \n",
1934 | " 2018-10-11 | \n",
1935 | " D | \n",
1936 | " 0 | \n",
1937 | " 0 | \n",
1938 | " 1 | \n",
1939 | " 0 | \n",
1940 | " 0.00 | \n",
1941 | " 0.00 | \n",
1942 | " ... | \n",
1943 | " 0.0 | \n",
1944 | " 0.0 | \n",
1945 | " 0.0 | \n",
1946 | " 0.0 | \n",
1947 | " 0.0 | \n",
1948 | " 1 | \n",
1949 | " 1 | \n",
1950 | " 1 | \n",
1951 | " 1 | \n",
1952 | " 1 | \n",
1953 | "
\n",
1954 | " \n",
1955 | " | 79 | \n",
1956 | " B96436390425684833 | \n",
1957 | " 2018-09-27 | \n",
1958 | " 2018-09-27 | \n",
1959 | " D | \n",
1960 | " 0 | \n",
1961 | " 0 | \n",
1962 | " 1 | \n",
1963 | " 0 | \n",
1964 | " 0.00 | \n",
1965 | " 0.00 | \n",
1966 | " ... | \n",
1967 | " 0.0 | \n",
1968 | " 0.0 | \n",
1969 | " 0.0 | \n",
1970 | " 0.0 | \n",
1971 | " 0.0 | \n",
1972 | " 1 | \n",
1973 | " 1 | \n",
1974 | " 1 | \n",
1975 | " 1 | \n",
1976 | " 1 | \n",
1977 | "
\n",
1978 | " \n",
1979 | " | 80 | \n",
1980 | " B96436390415860138 | \n",
1981 | " 2018-10-28 | \n",
1982 | " 2018-10-28 | \n",
1983 | " F | \n",
1984 | " 0 | \n",
1985 | " 0 | \n",
1986 | " 1 | \n",
1987 | " 0 | \n",
1988 | " 0.00 | \n",
1989 | " 0.00 | \n",
1990 | " ... | \n",
1991 | " 0.0 | \n",
1992 | " 0.0 | \n",
1993 | " 0.0 | \n",
1994 | " 0.0 | \n",
1995 | " 0.0 | \n",
1996 | " 1 | \n",
1997 | " 1 | \n",
1998 | " 1 | \n",
1999 | " 1 | \n",
2000 | " 1 | \n",
2001 | "
\n",
2002 | " \n",
2003 | " | 81 | \n",
2004 | " B96436390414697217 | \n",
2005 | " 2018-10-11 | \n",
2006 | " 2018-10-11 | \n",
2007 | " D | \n",
2008 | " 0 | \n",
2009 | " 0 | \n",
2010 | " 1 | \n",
2011 | " 0 | \n",
2012 | " 0.00 | \n",
2013 | " 0.00 | \n",
2014 | " ... | \n",
2015 | " 0.0 | \n",
2016 | " 0.0 | \n",
2017 | " 0.0 | \n",
2018 | " 0.0 | \n",
2019 | " 0.0 | \n",
2020 | " 1 | \n",
2021 | " 1 | \n",
2022 | " 1 | \n",
2023 | " 1 | \n",
2024 | " 1 | \n",
2025 | "
\n",
2026 | " \n",
2027 | " | 82 | \n",
2028 | " B96436390413716157 | \n",
2029 | " 2018-10-30 | \n",
2030 | " 2018-10-30 | \n",
2031 | " A | \n",
2032 | " 0 | \n",
2033 | " 0 | \n",
2034 | " 1 | \n",
2035 | " 0 | \n",
2036 | " 0.00 | \n",
2037 | " 0.00 | \n",
2038 | " ... | \n",
2039 | " 0.0 | \n",
2040 | " 0.0 | \n",
2041 | " 0.0 | \n",
2042 | " 0.0 | \n",
2043 | " 0.0 | \n",
2044 | " 1 | \n",
2045 | " 1 | \n",
2046 | " 1 | \n",
2047 | " 1 | \n",
2048 | " 1 | \n",
2049 | "
\n",
2050 | " \n",
2051 | " | 83 | \n",
2052 | " B96380588067588203 | \n",
2053 | " 2018-07-20 | \n",
2054 | " 2018-07-20 | \n",
2055 | " E | \n",
2056 | " 0 | \n",
2057 | " 0 | \n",
2058 | " 1 | \n",
2059 | " 0 | \n",
2060 | " 0.00 | \n",
2061 | " 0.00 | \n",
2062 | " ... | \n",
2063 | " 0.0 | \n",
2064 | " 0.0 | \n",
2065 | " 0.0 | \n",
2066 | " 0.0 | \n",
2067 | " 0.0 | \n",
2068 | " 1 | \n",
2069 | " 1 | \n",
2070 | " 1 | \n",
2071 | " 1 | \n",
2072 | " 1 | \n",
2073 | "
\n",
2074 | " \n",
2075 | " | 84 | \n",
2076 | " B96380588054869625 | \n",
2077 | " 2018-10-29 | \n",
2078 | " 2018-10-29 | \n",
2079 | " C | \n",
2080 | " 0 | \n",
2081 | " 0 | \n",
2082 | " 1 | \n",
2083 | " 0 | \n",
2084 | " 0.00 | \n",
2085 | " 0.00 | \n",
2086 | " ... | \n",
2087 | " 0.0 | \n",
2088 | " 0.0 | \n",
2089 | " 0.0 | \n",
2090 | " 0.0 | \n",
2091 | " 0.0 | \n",
2092 | " 1 | \n",
2093 | " 1 | \n",
2094 | " 1 | \n",
2095 | " 1 | \n",
2096 | " 1 | \n",
2097 | "
\n",
2098 | " \n",
2099 | " | 85 | \n",
2100 | " B96380588050798444 | \n",
2101 | " 2018-10-21 | \n",
2102 | " 2018-10-21 | \n",
2103 | " F | \n",
2104 | " 0 | \n",
2105 | " 0 | \n",
2106 | " 1 | \n",
2107 | " 0 | \n",
2108 | " 0.00 | \n",
2109 | " 0.00 | \n",
2110 | " ... | \n",
2111 | " 0.0 | \n",
2112 | " 0.0 | \n",
2113 | " 0.0 | \n",
2114 | " 0.0 | \n",
2115 | " 0.0 | \n",
2116 | " 1 | \n",
2117 | " 1 | \n",
2118 | " 1 | \n",
2119 | " 1 | \n",
2120 | " 1 | \n",
2121 | "
\n",
2122 | " \n",
2123 | " | 86 | \n",
2124 | " B96380588029632882 | \n",
2125 | " 2018-10-26 | \n",
2126 | " 2018-10-26 | \n",
2127 | " B | \n",
2128 | " 0 | \n",
2129 | " 0 | \n",
2130 | " 1 | \n",
2131 | " 0 | \n",
2132 | " 0.00 | \n",
2133 | " 0.00 | \n",
2134 | " ... | \n",
2135 | " 0.0 | \n",
2136 | " 0.0 | \n",
2137 | " 0.0 | \n",
2138 | " 0.0 | \n",
2139 | " 0.0 | \n",
2140 | " 1 | \n",
2141 | " 1 | \n",
2142 | " 1 | \n",
2143 | " 1 | \n",
2144 | " 1 | \n",
2145 | "
\n",
2146 | " \n",
2147 | " | 87 | \n",
2148 | " B96315273759294263 | \n",
2149 | " 2018-10-31 | \n",
2150 | " 2018-10-31 | \n",
2151 | " B | \n",
2152 | " 0 | \n",
2153 | " 0 | \n",
2154 | " 1 | \n",
2155 | " 0 | \n",
2156 | " 0.00 | \n",
2157 | " 0.00 | \n",
2158 | " ... | \n",
2159 | " 0.0 | \n",
2160 | " 0.0 | \n",
2161 | " 0.0 | \n",
2162 | " 0.0 | \n",
2163 | " 0.0 | \n",
2164 | " 1 | \n",
2165 | " 1 | \n",
2166 | " 1 | \n",
2167 | " 1 | \n",
2168 | " 1 | \n",
2169 | "
\n",
2170 | " \n",
2171 | " | 88 | \n",
2172 | " B96315273748163247 | \n",
2173 | " 2018-10-14 | \n",
2174 | " 2018-10-14 | \n",
2175 | " E | \n",
2176 | " 0 | \n",
2177 | " 0 | \n",
2178 | " 1 | \n",
2179 | " 0 | \n",
2180 | " 0.00 | \n",
2181 | " 0.00 | \n",
2182 | " ... | \n",
2183 | " 0.0 | \n",
2184 | " 0.0 | \n",
2185 | " 0.0 | \n",
2186 | " 0.0 | \n",
2187 | " 0.0 | \n",
2188 | " 1 | \n",
2189 | " 1 | \n",
2190 | " 1 | \n",
2191 | " 1 | \n",
2192 | " 1 | \n",
2193 | "
\n",
2194 | " \n",
2195 | " | 89 | \n",
2196 | " B96315273747468640 | \n",
2197 | " 2018-09-13 | \n",
2198 | " 2018-10-18 | \n",
2199 | " D | \n",
2200 | " 0 | \n",
2201 | " 35 | \n",
2202 | " 1 | \n",
2203 | " 1 | \n",
2204 | " 201.68 | \n",
2205 | " 201.68 | \n",
2206 | " ... | \n",
2207 | " 300.0 | \n",
2208 | " 300.0 | \n",
2209 | " 0.0 | \n",
2210 | " 0.0 | \n",
2211 | " 300.0 | \n",
2212 | " 1 | \n",
2213 | " 1 | \n",
2214 | " 1 | \n",
2215 | " 1 | \n",
2216 | " 1 | \n",
2217 | "
\n",
2218 | " \n",
2219 | " | 90 | \n",
2220 | " B96315273737157951 | \n",
2221 | " 2018-09-24 | \n",
2222 | " 2018-09-24 | \n",
2223 | " B | \n",
2224 | " 0 | \n",
2225 | " 0 | \n",
2226 | " 1 | \n",
2227 | " 0 | \n",
2228 | " 0.00 | \n",
2229 | " 0.00 | \n",
2230 | " ... | \n",
2231 | " 0.0 | \n",
2232 | " 0.0 | \n",
2233 | " 0.0 | \n",
2234 | " 0.0 | \n",
2235 | " 0.0 | \n",
2236 | " 1 | \n",
2237 | " 1 | \n",
2238 | " 1 | \n",
2239 | " 1 | \n",
2240 | " 1 | \n",
2241 | "
\n",
2242 | " \n",
2243 | " | 91 | \n",
2244 | " B96315273732581702 | \n",
2245 | " 2018-10-16 | \n",
2246 | " 2018-10-16 | \n",
2247 | " B | \n",
2248 | " 0 | \n",
2249 | " 0 | \n",
2250 | " 1 | \n",
2251 | " 0 | \n",
2252 | " 0.00 | \n",
2253 | " 0.00 | \n",
2254 | " ... | \n",
2255 | " 0.0 | \n",
2256 | " 0.0 | \n",
2257 | " 0.0 | \n",
2258 | " 0.0 | \n",
2259 | " 0.0 | \n",
2260 | " 1 | \n",
2261 | " 1 | \n",
2262 | " 1 | \n",
2263 | " 1 | \n",
2264 | " 1 | \n",
2265 | "
\n",
2266 | " \n",
2267 | " | 92 | \n",
2268 | " B96268191749370731 | \n",
2269 | " 2018-09-28 | \n",
2270 | " 2018-09-28 | \n",
2271 | " B | \n",
2272 | " 0 | \n",
2273 | " 0 | \n",
2274 | " 1 | \n",
2275 | " 0 | \n",
2276 | " 0.00 | \n",
2277 | " 0.00 | \n",
2278 | " ... | \n",
2279 | " 0.0 | \n",
2280 | " 0.0 | \n",
2281 | " 0.0 | \n",
2282 | " 0.0 | \n",
2283 | " 0.0 | \n",
2284 | " 1 | \n",
2285 | " 1 | \n",
2286 | " 1 | \n",
2287 | " 1 | \n",
2288 | " 1 | \n",
2289 | "
\n",
2290 | " \n",
2291 | " | 93 | \n",
2292 | " B96268191746104292 | \n",
2293 | " 2018-09-27 | \n",
2294 | " 2018-09-27 | \n",
2295 | " C | \n",
2296 | " 0 | \n",
2297 | " 0 | \n",
2298 | " 1 | \n",
2299 | " 0 | \n",
2300 | " 0.00 | \n",
2301 | " 0.00 | \n",
2302 | " ... | \n",
2303 | " 0.0 | \n",
2304 | " 0.0 | \n",
2305 | " 0.0 | \n",
2306 | " 0.0 | \n",
2307 | " 0.0 | \n",
2308 | " 1 | \n",
2309 | " 1 | \n",
2310 | " 1 | \n",
2311 | " 1 | \n",
2312 | " 1 | \n",
2313 | "
\n",
2314 | " \n",
2315 | " | 94 | \n",
2316 | " B96268191735040374 | \n",
2317 | " 2018-10-24 | \n",
2318 | " 2018-10-24 | \n",
2319 | " E | \n",
2320 | " 0 | \n",
2321 | " 0 | \n",
2322 | " 1 | \n",
2323 | " 0 | \n",
2324 | " 0.00 | \n",
2325 | " 0.00 | \n",
2326 | " ... | \n",
2327 | " 0.0 | \n",
2328 | " 0.0 | \n",
2329 | " 0.0 | \n",
2330 | " 0.0 | \n",
2331 | " 0.0 | \n",
2332 | " 1 | \n",
2333 | " 1 | \n",
2334 | " 1 | \n",
2335 | " 1 | \n",
2336 | " 1 | \n",
2337 | "
\n",
2338 | " \n",
2339 | " | 95 | \n",
2340 | " B96117370332355190 | \n",
2341 | " 2018-10-19 | \n",
2342 | " 2018-10-19 | \n",
2343 | " B | \n",
2344 | " 0 | \n",
2345 | " 0 | \n",
2346 | " 1 | \n",
2347 | " 0 | \n",
2348 | " 0.00 | \n",
2349 | " 0.00 | \n",
2350 | " ... | \n",
2351 | " 0.0 | \n",
2352 | " 0.0 | \n",
2353 | " 0.0 | \n",
2354 | " 0.0 | \n",
2355 | " 0.0 | \n",
2356 | " 1 | \n",
2357 | " 1 | \n",
2358 | " 1 | \n",
2359 | " 1 | \n",
2360 | " 1 | \n",
2361 | "
\n",
2362 | " \n",
2363 | " | 96 | \n",
2364 | " B96117370330101658 | \n",
2365 | " 2018-10-12 | \n",
2366 | " 2018-10-12 | \n",
2367 | " B | \n",
2368 | " 0 | \n",
2369 | " 0 | \n",
2370 | " 1 | \n",
2371 | " 0 | \n",
2372 | " 0.00 | \n",
2373 | " 0.00 | \n",
2374 | " ... | \n",
2375 | " 0.0 | \n",
2376 | " 0.0 | \n",
2377 | " 0.0 | \n",
2378 | " 0.0 | \n",
2379 | " 0.0 | \n",
2380 | " 1 | \n",
2381 | " 1 | \n",
2382 | " 1 | \n",
2383 | " 1 | \n",
2384 | " 1 | \n",
2385 | "
\n",
2386 | " \n",
2387 | " | 97 | \n",
2388 | " B96117370330066347 | \n",
2389 | " 2018-10-01 | \n",
2390 | " 2018-10-01 | \n",
2391 | " D | \n",
2392 | " 0 | \n",
2393 | " 0 | \n",
2394 | " 1 | \n",
2395 | " 0 | \n",
2396 | " 0.00 | \n",
2397 | " 0.00 | \n",
2398 | " ... | \n",
2399 | " 0.0 | \n",
2400 | " 0.0 | \n",
2401 | " 0.0 | \n",
2402 | " 0.0 | \n",
2403 | " 0.0 | \n",
2404 | " 1 | \n",
2405 | " 1 | \n",
2406 | " 1 | \n",
2407 | " 1 | \n",
2408 | " 1 | \n",
2409 | "
\n",
2410 | " \n",
2411 | " | 98 | \n",
2412 | " B96117370328724350 | \n",
2413 | " 2018-09-20 | \n",
2414 | " 2018-09-20 | \n",
2415 | " C | \n",
2416 | " 0 | \n",
2417 | " 0 | \n",
2418 | " 1 | \n",
2419 | " 0 | \n",
2420 | " 0.00 | \n",
2421 | " 0.00 | \n",
2422 | " ... | \n",
2423 | " 0.0 | \n",
2424 | " 0.0 | \n",
2425 | " 0.0 | \n",
2426 | " 0.0 | \n",
2427 | " 0.0 | \n",
2428 | " 1 | \n",
2429 | " 1 | \n",
2430 | " 1 | \n",
2431 | " 1 | \n",
2432 | " 1 | \n",
2433 | "
\n",
2434 | " \n",
2435 | " | 99 | \n",
2436 | " B96117370321159033 | \n",
2437 | " 2018-10-08 | \n",
2438 | " 2018-10-08 | \n",
2439 | " D | \n",
2440 | " 0 | \n",
2441 | " 0 | \n",
2442 | " 1 | \n",
2443 | " 0 | \n",
2444 | " 0.00 | \n",
2445 | " 0.00 | \n",
2446 | " ... | \n",
2447 | " 0.0 | \n",
2448 | " 0.0 | \n",
2449 | " 0.0 | \n",
2450 | " 0.0 | \n",
2451 | " 0.0 | \n",
2452 | " 1 | \n",
2453 | " 1 | \n",
2454 | " 1 | \n",
2455 | " 1 | \n",
2456 | " 1 | \n",
2457 | "
\n",
2458 | " \n",
2459 | "
\n",
2460 | "
100 rows × 74 columns
\n",
2461 | "
"
2462 | ],
2463 | "text/plain": [
2464 | " uid create_dt oil_actv_dt class_new bad_ind dtn \\\n",
2465 | "0 B96436391985035703 2018-10-08 2018-10-08 B 0 0 \n",
2466 | "1 B96436391984693397 2018-10-11 2018-10-11 E 0 0 \n",
2467 | "2 B96436391977217468 2018-10-17 2018-10-17 B 0 0 \n",
2468 | "3 B96436391976480892 2018-09-28 2018-09-28 B 0 0 \n",
2469 | "4 B96436391972106043 2018-10-19 2018-10-19 A 0 0 \n",
2470 | "5 B96436391964489355 2018-09-29 2018-09-29 C 0 0 \n",
2471 | "6 B96436391942199711 2018-10-18 2018-10-18 E 0 0 \n",
2472 | "7 B96436391941530690 2018-09-29 2018-09-29 B 0 0 \n",
2473 | "8 B96436391899881051 2018-10-10 2018-10-10 A 0 0 \n",
2474 | "9 B96436391889563211 2018-09-25 2018-09-25 E 0 0 \n",
2475 | "10 B96436391864423458 2018-10-27 2018-10-27 D 0 0 \n",
2476 | "11 B96436391861783745 2018-09-27 2018-09-27 E 0 0 \n",
2477 | "12 B96436391851465287 2018-10-19 2018-10-19 D 0 0 \n",
2478 | "13 B96436391812222712 2018-10-12 2018-10-12 B 0 0 \n",
2479 | "14 B96436391761778117 2018-10-11 2018-10-11 C 0 0 \n",
2480 | "15 B96436391758836159 2018-09-29 2018-09-29 E 0 0 \n",
2481 | "16 B96436391733014891 2018-06-26 2018-06-26 E 0 0 \n",
2482 | "17 B96436391679580342 2018-10-10 2018-10-10 D 0 0 \n",
2483 | "18 B96436391635123385 2018-09-19 2018-09-19 D 0 0 \n",
2484 | "19 B96436391607145327 2018-10-20 2018-10-20 B 0 0 \n",
2485 | "20 B96436391601943473 2018-10-25 2018-10-25 D 0 0 \n",
2486 | "21 B96436391594695697 2018-09-24 2018-09-24 F 0 0 \n",
2487 | "22 B96436391593055178 2018-09-28 2018-09-28 D 0 0 \n",
2488 | "23 B96436391584119601 2018-10-10 2018-10-10 D 0 0 \n",
2489 | "24 B96436391558820968 2018-10-16 2018-10-16 D 0 0 \n",
2490 | "25 B96436391546006453 2018-10-26 2018-10-26 B 0 0 \n",
2491 | "26 B96436391544818920 2018-10-06 2018-10-06 C 0 0 \n",
2492 | "27 B96436391543511443 2018-10-24 2018-10-24 C 0 0 \n",
2493 | "28 B96436391477200631 2018-10-05 2018-10-05 B 0 0 \n",
2494 | "29 B96436391474310727 2018-10-19 2018-10-19 F 0 0 \n",
2495 | ".. ... ... ... ... ... ... \n",
2496 | "70 B96436390507602521 2018-10-29 2018-10-29 C 0 0 \n",
2497 | "71 B96436390497597008 2018-09-24 2018-09-24 E 0 0 \n",
2498 | "72 B96436390495235932 2018-10-03 2018-10-03 D 0 0 \n",
2499 | "73 B96436390487777832 2018-09-22 2018-09-22 D 0 0 \n",
2500 | "74 B96436390480777386 2018-09-16 2018-09-16 F 0 0 \n",
2501 | "75 B96436390479074152 2018-10-15 2018-10-15 C 0 0 \n",
2502 | "76 B96436390475333449 2018-10-16 2018-10-16 C 0 0 \n",
2503 | "77 B96436390454580556 2018-09-26 2018-09-26 D 0 0 \n",
2504 | "78 B96436390427892316 2018-10-11 2018-10-11 D 0 0 \n",
2505 | "79 B96436390425684833 2018-09-27 2018-09-27 D 0 0 \n",
2506 | "80 B96436390415860138 2018-10-28 2018-10-28 F 0 0 \n",
2507 | "81 B96436390414697217 2018-10-11 2018-10-11 D 0 0 \n",
2508 | "82 B96436390413716157 2018-10-30 2018-10-30 A 0 0 \n",
2509 | "83 B96380588067588203 2018-07-20 2018-07-20 E 0 0 \n",
2510 | "84 B96380588054869625 2018-10-29 2018-10-29 C 0 0 \n",
2511 | "85 B96380588050798444 2018-10-21 2018-10-21 F 0 0 \n",
2512 | "86 B96380588029632882 2018-10-26 2018-10-26 B 0 0 \n",
2513 | "87 B96315273759294263 2018-10-31 2018-10-31 B 0 0 \n",
2514 | "88 B96315273748163247 2018-10-14 2018-10-14 E 0 0 \n",
2515 | "89 B96315273747468640 2018-09-13 2018-10-18 D 0 35 \n",
2516 | "90 B96315273737157951 2018-09-24 2018-09-24 B 0 0 \n",
2517 | "91 B96315273732581702 2018-10-16 2018-10-16 B 0 0 \n",
2518 | "92 B96268191749370731 2018-09-28 2018-09-28 B 0 0 \n",
2519 | "93 B96268191746104292 2018-09-27 2018-09-27 C 0 0 \n",
2520 | "94 B96268191735040374 2018-10-24 2018-10-24 E 0 0 \n",
2521 | "95 B96117370332355190 2018-10-19 2018-10-19 B 0 0 \n",
2522 | "96 B96117370330101658 2018-10-12 2018-10-12 B 0 0 \n",
2523 | "97 B96117370330066347 2018-10-01 2018-10-01 D 0 0 \n",
2524 | "98 B96117370328724350 2018-09-20 2018-09-20 C 0 0 \n",
2525 | "99 B96117370321159033 2018-10-08 2018-10-08 D 0 0 \n",
2526 | "\n",
2527 | " oil_amount_cnt oil_amount_num oil_amount_tot oil_amount_avg \\\n",
2528 | "0 1 0 0.00 0.00 \n",
2529 | "1 1 0 0.00 0.00 \n",
2530 | "2 1 0 0.00 0.00 \n",
2531 | "3 1 0 0.00 0.00 \n",
2532 | "4 1 0 0.00 0.00 \n",
2533 | "5 1 0 0.00 0.00 \n",
2534 | "6 1 0 0.00 0.00 \n",
2535 | "7 1 0 0.00 0.00 \n",
2536 | "8 1 0 0.00 0.00 \n",
2537 | "9 1 0 0.00 0.00 \n",
2538 | "10 1 0 0.00 0.00 \n",
2539 | "11 1 0 0.00 0.00 \n",
2540 | "12 1 0 0.00 0.00 \n",
2541 | "13 1 0 0.00 0.00 \n",
2542 | "14 1 0 0.00 0.00 \n",
2543 | "15 1 0 0.00 0.00 \n",
2544 | "16 1 0 0.00 0.00 \n",
2545 | "17 1 0 0.00 0.00 \n",
2546 | "18 1 0 0.00 0.00 \n",
2547 | "19 1 0 0.00 0.00 \n",
2548 | "20 1 0 0.00 0.00 \n",
2549 | "21 1 0 0.00 0.00 \n",
2550 | "22 1 0 0.00 0.00 \n",
2551 | "23 1 0 0.00 0.00 \n",
2552 | "24 1 0 0.00 0.00 \n",
2553 | "25 1 0 0.00 0.00 \n",
2554 | "26 1 0 0.00 0.00 \n",
2555 | "27 1 0 0.00 0.00 \n",
2556 | "28 1 0 0.00 0.00 \n",
2557 | "29 1 0 0.00 0.00 \n",
2558 | ".. ... ... ... ... \n",
2559 | "70 1 0 0.00 0.00 \n",
2560 | "71 1 0 0.00 0.00 \n",
2561 | "72 1 0 0.00 0.00 \n",
2562 | "73 1 0 0.00 0.00 \n",
2563 | "74 1 0 0.00 0.00 \n",
2564 | "75 1 0 0.00 0.00 \n",
2565 | "76 1 0 0.00 0.00 \n",
2566 | "77 1 0 0.00 0.00 \n",
2567 | "78 1 0 0.00 0.00 \n",
2568 | "79 1 0 0.00 0.00 \n",
2569 | "80 1 0 0.00 0.00 \n",
2570 | "81 1 0 0.00 0.00 \n",
2571 | "82 1 0 0.00 0.00 \n",
2572 | "83 1 0 0.00 0.00 \n",
2573 | "84 1 0 0.00 0.00 \n",
2574 | "85 1 0 0.00 0.00 \n",
2575 | "86 1 0 0.00 0.00 \n",
2576 | "87 1 0 0.00 0.00 \n",
2577 | "88 1 0 0.00 0.00 \n",
2578 | "89 1 1 201.68 201.68 \n",
2579 | "90 1 0 0.00 0.00 \n",
2580 | "91 1 0 0.00 0.00 \n",
2581 | "92 1 0 0.00 0.00 \n",
2582 | "93 1 0 0.00 0.00 \n",
2583 | "94 1 0 0.00 0.00 \n",
2584 | "95 1 0 0.00 0.00 \n",
2585 | "96 1 0 0.00 0.00 \n",
2586 | "97 1 0 0.00 0.00 \n",
2587 | "98 1 0 0.00 0.00 \n",
2588 | "99 1 0 0.00 0.00 \n",
2589 | "\n",
2590 | " ... payment_coupon_amount_max payment_coupon_amount_min \\\n",
2591 | "0 ... 0.0 0.0 \n",
2592 | "1 ... 0.0 0.0 \n",
2593 | "2 ... 0.0 0.0 \n",
2594 | "3 ... 0.0 0.0 \n",
2595 | "4 ... 0.0 0.0 \n",
2596 | "5 ... 0.0 0.0 \n",
2597 | "6 ... 0.0 0.0 \n",
2598 | "7 ... 0.0 0.0 \n",
2599 | "8 ... 0.0 0.0 \n",
2600 | "9 ... 0.0 0.0 \n",
2601 | "10 ... 0.0 0.0 \n",
2602 | "11 ... 0.0 0.0 \n",
2603 | "12 ... 0.0 0.0 \n",
2604 | "13 ... 0.0 0.0 \n",
2605 | "14 ... 0.0 0.0 \n",
2606 | "15 ... 0.0 0.0 \n",
2607 | "16 ... 0.0 0.0 \n",
2608 | "17 ... 0.0 0.0 \n",
2609 | "18 ... 0.0 0.0 \n",
2610 | "19 ... 0.0 0.0 \n",
2611 | "20 ... 0.0 0.0 \n",
2612 | "21 ... 0.0 0.0 \n",
2613 | "22 ... 0.0 0.0 \n",
2614 | "23 ... 0.0 0.0 \n",
2615 | "24 ... 0.0 0.0 \n",
2616 | "25 ... 0.0 0.0 \n",
2617 | "26 ... 0.0 0.0 \n",
2618 | "27 ... 0.0 0.0 \n",
2619 | "28 ... 0.0 0.0 \n",
2620 | "29 ... 0.0 0.0 \n",
2621 | ".. ... ... ... \n",
2622 | "70 ... 0.0 0.0 \n",
2623 | "71 ... 0.0 0.0 \n",
2624 | "72 ... 0.0 0.0 \n",
2625 | "73 ... 0.0 0.0 \n",
2626 | "74 ... 0.0 0.0 \n",
2627 | "75 ... 0.0 0.0 \n",
2628 | "76 ... 0.0 0.0 \n",
2629 | "77 ... 0.0 0.0 \n",
2630 | "78 ... 0.0 0.0 \n",
2631 | "79 ... 0.0 0.0 \n",
2632 | "80 ... 0.0 0.0 \n",
2633 | "81 ... 0.0 0.0 \n",
2634 | "82 ... 0.0 0.0 \n",
2635 | "83 ... 0.0 0.0 \n",
2636 | "84 ... 0.0 0.0 \n",
2637 | "85 ... 0.0 0.0 \n",
2638 | "86 ... 0.0 0.0 \n",
2639 | "87 ... 0.0 0.0 \n",
2640 | "88 ... 0.0 0.0 \n",
2641 | "89 ... 300.0 300.0 \n",
2642 | "90 ... 0.0 0.0 \n",
2643 | "91 ... 0.0 0.0 \n",
2644 | "92 ... 0.0 0.0 \n",
2645 | "93 ... 0.0 0.0 \n",
2646 | "94 ... 0.0 0.0 \n",
2647 | "95 ... 0.0 0.0 \n",
2648 | "96 ... 0.0 0.0 \n",
2649 | "97 ... 0.0 0.0 \n",
2650 | "98 ... 0.0 0.0 \n",
2651 | "99 ... 0.0 0.0 \n",
2652 | "\n",
2653 | " payment_coupon_amount_var_x payment_coupon_amount_var_y \\\n",
2654 | "0 0.0 0.0 \n",
2655 | "1 0.0 0.0 \n",
2656 | "2 0.0 0.0 \n",
2657 | "3 0.0 0.0 \n",
2658 | "4 0.0 0.0 \n",
2659 | "5 0.0 0.0 \n",
2660 | "6 0.0 0.0 \n",
2661 | "7 0.0 0.0 \n",
2662 | "8 0.0 0.0 \n",
2663 | "9 0.0 0.0 \n",
2664 | "10 0.0 0.0 \n",
2665 | "11 0.0 0.0 \n",
2666 | "12 0.0 0.0 \n",
2667 | "13 0.0 0.0 \n",
2668 | "14 0.0 0.0 \n",
2669 | "15 0.0 0.0 \n",
2670 | "16 0.0 0.0 \n",
2671 | "17 0.0 0.0 \n",
2672 | "18 0.0 0.0 \n",
2673 | "19 0.0 0.0 \n",
2674 | "20 0.0 0.0 \n",
2675 | "21 0.0 0.0 \n",
2676 | "22 0.0 0.0 \n",
2677 | "23 0.0 0.0 \n",
2678 | "24 0.0 0.0 \n",
2679 | "25 0.0 0.0 \n",
2680 | "26 0.0 0.0 \n",
2681 | "27 0.0 0.0 \n",
2682 | "28 0.0 0.0 \n",
2683 | "29 0.0 0.0 \n",
2684 | ".. ... ... \n",
2685 | "70 0.0 0.0 \n",
2686 | "71 0.0 0.0 \n",
2687 | "72 0.0 0.0 \n",
2688 | "73 0.0 0.0 \n",
2689 | "74 0.0 0.0 \n",
2690 | "75 0.0 0.0 \n",
2691 | "76 0.0 0.0 \n",
2692 | "77 0.0 0.0 \n",
2693 | "78 0.0 0.0 \n",
2694 | "79 0.0 0.0 \n",
2695 | "80 0.0 0.0 \n",
2696 | "81 0.0 0.0 \n",
2697 | "82 0.0 0.0 \n",
2698 | "83 0.0 0.0 \n",
2699 | "84 0.0 0.0 \n",
2700 | "85 0.0 0.0 \n",
2701 | "86 0.0 0.0 \n",
2702 | "87 0.0 0.0 \n",
2703 | "88 0.0 0.0 \n",
2704 | "89 0.0 0.0 \n",
2705 | "90 0.0 0.0 \n",
2706 | "91 0.0 0.0 \n",
2707 | "92 0.0 0.0 \n",
2708 | "93 0.0 0.0 \n",
2709 | "94 0.0 0.0 \n",
2710 | "95 0.0 0.0 \n",
2711 | "96 0.0 0.0 \n",
2712 | "97 0.0 0.0 \n",
2713 | "98 0.0 0.0 \n",
2714 | "99 0.0 0.0 \n",
2715 | "\n",
2716 | " payment_coupon_amount_var channel_code_dstc oil_code_dstc scene_dstc \\\n",
2717 | "0 0.0 1 1 1 \n",
2718 | "1 0.0 1 1 1 \n",
2719 | "2 0.0 1 1 1 \n",
2720 | "3 0.0 1 1 1 \n",
2721 | "4 0.0 1 1 1 \n",
2722 | "5 0.0 1 1 1 \n",
2723 | "6 0.0 1 1 1 \n",
2724 | "7 0.0 1 1 1 \n",
2725 | "8 0.0 1 1 1 \n",
2726 | "9 0.0 1 1 1 \n",
2727 | "10 0.0 1 1 1 \n",
2728 | "11 0.0 1 1 1 \n",
2729 | "12 0.0 1 1 1 \n",
2730 | "13 0.0 1 1 1 \n",
2731 | "14 0.0 1 1 1 \n",
2732 | "15 0.0 1 1 1 \n",
2733 | "16 0.0 1 1 1 \n",
2734 | "17 0.0 1 1 1 \n",
2735 | "18 0.0 1 1 1 \n",
2736 | "19 0.0 1 1 1 \n",
2737 | "20 0.0 1 1 1 \n",
2738 | "21 0.0 1 1 1 \n",
2739 | "22 0.0 1 1 1 \n",
2740 | "23 0.0 1 1 1 \n",
2741 | "24 0.0 1 1 1 \n",
2742 | "25 0.0 1 1 1 \n",
2743 | "26 0.0 1 1 1 \n",
2744 | "27 0.0 1 1 1 \n",
2745 | "28 0.0 1 1 1 \n",
2746 | "29 0.0 1 1 1 \n",
2747 | ".. ... ... ... ... \n",
2748 | "70 0.0 1 1 1 \n",
2749 | "71 0.0 1 1 1 \n",
2750 | "72 0.0 1 1 1 \n",
2751 | "73 0.0 1 1 1 \n",
2752 | "74 0.0 1 1 1 \n",
2753 | "75 0.0 1 1 1 \n",
2754 | "76 0.0 1 1 1 \n",
2755 | "77 0.0 1 1 1 \n",
2756 | "78 0.0 1 1 1 \n",
2757 | "79 0.0 1 1 1 \n",
2758 | "80 0.0 1 1 1 \n",
2759 | "81 0.0 1 1 1 \n",
2760 | "82 0.0 1 1 1 \n",
2761 | "83 0.0 1 1 1 \n",
2762 | "84 0.0 1 1 1 \n",
2763 | "85 0.0 1 1 1 \n",
2764 | "86 0.0 1 1 1 \n",
2765 | "87 0.0 1 1 1 \n",
2766 | "88 0.0 1 1 1 \n",
2767 | "89 300.0 1 1 1 \n",
2768 | "90 0.0 1 1 1 \n",
2769 | "91 0.0 1 1 1 \n",
2770 | "92 0.0 1 1 1 \n",
2771 | "93 0.0 1 1 1 \n",
2772 | "94 0.0 1 1 1 \n",
2773 | "95 0.0 1 1 1 \n",
2774 | "96 0.0 1 1 1 \n",
2775 | "97 0.0 1 1 1 \n",
2776 | "98 0.0 1 1 1 \n",
2777 | "99 0.0 1 1 1 \n",
2778 | "\n",
2779 | " source_app_dstc call_source_dstc \n",
2780 | "0 1 1 \n",
2781 | "1 1 1 \n",
2782 | "2 1 1 \n",
2783 | "3 1 1 \n",
2784 | "4 1 1 \n",
2785 | "5 1 1 \n",
2786 | "6 1 1 \n",
2787 | "7 1 1 \n",
2788 | "8 1 1 \n",
2789 | "9 1 1 \n",
2790 | "10 1 1 \n",
2791 | "11 1 1 \n",
2792 | "12 1 1 \n",
2793 | "13 1 1 \n",
2794 | "14 1 1 \n",
2795 | "15 1 1 \n",
2796 | "16 1 1 \n",
2797 | "17 1 1 \n",
2798 | "18 1 1 \n",
2799 | "19 1 1 \n",
2800 | "20 1 1 \n",
2801 | "21 1 1 \n",
2802 | "22 1 1 \n",
2803 | "23 1 1 \n",
2804 | "24 1 1 \n",
2805 | "25 1 1 \n",
2806 | "26 1 1 \n",
2807 | "27 1 1 \n",
2808 | "28 1 1 \n",
2809 | "29 1 1 \n",
2810 | ".. ... ... \n",
2811 | "70 1 1 \n",
2812 | "71 1 1 \n",
2813 | "72 1 1 \n",
2814 | "73 1 1 \n",
2815 | "74 1 1 \n",
2816 | "75 1 1 \n",
2817 | "76 1 1 \n",
2818 | "77 1 1 \n",
2819 | "78 1 1 \n",
2820 | "79 1 1 \n",
2821 | "80 1 1 \n",
2822 | "81 1 1 \n",
2823 | "82 1 1 \n",
2824 | "83 1 1 \n",
2825 | "84 1 1 \n",
2826 | "85 1 1 \n",
2827 | "86 1 1 \n",
2828 | "87 1 1 \n",
2829 | "88 1 1 \n",
2830 | "89 1 1 \n",
2831 | "90 1 1 \n",
2832 | "91 1 1 \n",
2833 | "92 1 1 \n",
2834 | "93 1 1 \n",
2835 | "94 1 1 \n",
2836 | "95 1 1 \n",
2837 | "96 1 1 \n",
2838 | "97 1 1 \n",
2839 | "98 1 1 \n",
2840 | "99 1 1 \n",
2841 | "\n",
2842 | "[100 rows x 74 columns]"
2843 | ]
2844 | },
2845 | "execution_count": 36,
2846 | "metadata": {},
2847 | "output_type": "execute_result"
2848 | }
2849 | ],
2850 | "source": [
2851 | "fn.head(100)"
2852 | ]
2853 | },
2854 | {
2855 | "cell_type": "markdown",
2856 | "metadata": {},
2857 | "source": [
2858 | "训练决策树模型"
2859 | ]
2860 | },
2861 | {
2862 | "cell_type": "code",
2863 | "execution_count": 37,
2864 | "metadata": {},
2865 | "outputs": [],
2866 | "source": [
2867 | "x = fn.drop(['uid','oil_actv_dt','create_dt','bad_ind','class_new'],axis = 1)\n",
2868 | "y = fn.bad_ind.copy()\n",
2869 | "from sklearn import tree\n",
2870 | "\n",
2871 | "dtree = tree.DecisionTreeRegressor(max_depth = 2,min_samples_leaf = 500,min_samples_split = 5000)\n",
2872 | "dtree = dtree.fit(x,y)"
2873 | ]
2874 | },
2875 | {
2876 | "cell_type": "markdown",
2877 | "metadata": {},
2878 | "source": [
2879 | "输出决策树图像,并作出决策"
2880 | ]
2881 | },
2882 | {
2883 | "cell_type": "code",
2884 | "execution_count": 49,
2885 | "metadata": {},
2886 | "outputs": [
2887 | {
2888 | "data": {
2889 | "image/png": "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\n",
2890 | "text/plain": [
2891 | ""
2892 | ]
2893 | },
2894 | "execution_count": 49,
2895 | "metadata": {},
2896 | "output_type": "execute_result"
2897 | }
2898 | ],
2899 | "source": [
2900 | "import pydotplus \n",
2901 | "from IPython.display import Image\n",
2902 | "from sklearn.externals.six import StringIO\n",
2903 | "import os\n",
2904 | "os.environ[\"PATH\"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'\n",
2905 | "with open(path + \"dt.dot\", \"w\") as f:\n",
2906 | " tree.export_graphviz(dtree, out_file=f)\n",
2907 | "dot_data = StringIO()\n",
2908 | "tree.export_graphviz(dtree, out_file=dot_data,\n",
2909 | " feature_names=x.columns,\n",
2910 | " class_names=['bad_ind'],\n",
2911 | " filled=True, rounded=True,\n",
2912 | " special_characters=True)\n",
2913 | "graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) \n",
2914 | "Image(graph.create_png())"
2915 | ]
2916 | },
2917 | {
2918 | "cell_type": "markdown",
2919 | "metadata": {},
2920 | "source": [
2921 | "value = badrate"
2922 | ]
2923 | },
2924 | {
2925 | "cell_type": "code",
2926 | "execution_count": 53,
2927 | "metadata": {},
2928 | "outputs": [
2929 | {
2930 | "data": {
2931 | "text/plain": [
2932 | "0.04658077304261645"
2933 | ]
2934 | },
2935 | "execution_count": 53,
2936 | "metadata": {},
2937 | "output_type": "execute_result"
2938 | }
2939 | ],
2940 | "source": [
2941 | "sum(fn.bad_ind)/len(fn.bad_ind)"
2942 | ]
2943 | }
2944 | ],
2945 | "metadata": {
2946 | "kernelspec": {
2947 | "display_name": "Python 3",
2948 | "language": "python",
2949 | "name": "python3"
2950 | },
2951 | "language_info": {
2952 | "codemirror_mode": {
2953 | "name": "ipython",
2954 | "version": 3
2955 | },
2956 | "file_extension": ".py",
2957 | "mimetype": "text/x-python",
2958 | "name": "python",
2959 | "nbconvert_exporter": "python",
2960 | "pygments_lexer": "ipython3",
2961 | "version": "3.7.3"
2962 | }
2963 | },
2964 | "nbformat": 4,
2965 | "nbformat_minor": 2
2966 | }
2967 |
--------------------------------------------------------------------------------
/常用反欺诈特征.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "### 金融反欺诈 常用特征处理方法 "
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "#### 用户基本属性\n",
15 | "\n",
16 | "phone_nember \n",
17 | "\n",
18 | "- 手机号前缀是否相同\n",
19 | "- 手机号归属地是否相同\n",
20 | "- 是否是虚拟运营商\n",
21 | "- 流量卡还是通话卡\n",
22 | "\n",
23 | "nickname\n",
24 | "\n",
25 | "- 昵称符合固定的规律(中文+数字)\n",
26 | "- 备注是否符合某种亲密的称呼\n",
27 | "\n",
28 | "birthday \n",
29 | "\n",
30 | "- 年纪\n",
31 | "- 星座\n",
32 | "- 生肖\n",
33 | "\n",
34 | "sex \n",
35 | "\n",
36 | "- 性别是否失衡\n",
37 | "\n",
38 | "password \n",
39 | "\n",
40 | "- 是否都相同\n",
41 | "\n",
42 | "\n",
43 | "身份证号码\n",
44 | "\n",
45 | "- 年龄 核对\n",
46 | "- 性比 核对\n",
47 | "- 城市\n",
48 | "\n",
49 | "邮箱\n",
50 | "- 是否是一次性邮箱\n",
51 | "- username 满足规律\n",
52 | "- 是否同一邮箱服务商\n",
53 | "- 邮箱里面的数据(账单)\n",
54 | "\n",
55 | "\n",
56 | "学历\n",
57 | "- 相似性\n",
58 | "\n",
59 | "\n",
60 | "住房\n",
61 | "- 租房情况是否雷同\n",
62 | "\n",
63 | "\n",
64 | "积分 \n",
65 | "- 是不是超过某个阈值\n",
66 | "\n",
67 | "\n",
68 | "签到 \n",
69 | "- 相似性\n",
70 | "\n",
71 | "\n",
72 | "ip \n",
73 | "\n",
74 | "- 是否是同一个号段\n",
75 | "- 每次登录ip地址是否相同\n",
76 | "- 是不是临时ip 和 gps\n",
77 | "- ip 和 gps 是否能对的上\n",
78 | "\n",
79 | "gps\n",
80 | "\n",
81 | "- 经纬度相似性分析\n",
82 | "- 国家 省份 城市 相似性\n",
83 | "- ip 和 gps 是否能对的上\n",
84 | "\n",
85 | "\n",
86 | "wifi\n",
87 | "\n",
88 | "- ssid\n",
89 | "- wifi list\n",
90 | "- 贷款前的几分钟有没有切换过wifi\n",
91 | "\n",
92 | "\n",
93 | "application time\n",
94 | "\n",
95 | "- 时间切片\n",
96 | "- 注册用了多长时间(太快太慢都有问题)\n",
97 | "- 一共申请了几次\n",
98 | "\n",
99 | "login time \n",
100 | "\n",
101 | "- 时间切片\n",
102 | "- 登陆了几次、频率\n",
103 | "- 最后一次登录时间距贷款时间的间隔\n",
104 | "- 同一时间登录做一个校验(同一时间多人登录)\n",
105 | "\n",
106 | "\n",
107 | "ua(user agent)\n",
108 | "\n",
109 | "- 每次打开是否是同一个ua\n",
110 | "\n",
111 | "\n",
112 | "渠道\n",
113 | "\n",
114 | "- app/H5/微信\n",
115 | "- 渠道ID属于违规渠道\n",
116 | "\n",
117 | "app version\n",
118 | "\n",
119 | "- 每次app的版本号是否相同\n",
120 | "- app版本会不会太老了(老版本的app有bug,可能会被黑中介用来攻击我们) \n",
121 | "\n",
122 | "推荐人/联系人 \n",
123 | "\n",
124 | "- 名字匹配\n",
125 | "- 手机号匹配\n"
126 | ]
127 | },
128 | {
129 | "cell_type": "markdown",
130 | "metadata": {},
131 | "source": [
132 | "#### 设备指纹 \n",
133 | "\n",
134 | "imei \n",
135 | "\n",
136 | "- 受否都相同\n",
137 | "- 每次登录imei号是否都相同\n",
138 | " \n",
139 | " \n",
140 | "device id\n",
141 | "\n",
142 | "- 受否都相同\n",
143 | "- 每次登录device id号是否都相同\n",
144 | "\n",
145 | "\n",
146 | "分辨率 \n",
147 | "\n",
148 | "- 手机型号和屏幕分辨率是否一致\n",
149 | "\n",
150 | "mobile type\n",
151 | "\n",
152 | "- 手机品牌\n",
153 | "- 手机型号\n",
154 | "\n",
155 | "os(operating system)\n",
156 | "\n",
157 | "- 每次打开操作系统是否都相同\n",
158 | "- 来申请的人是否os都相同\n",
159 | "- os的版本是否太旧"
160 | ]
161 | },
162 | {
163 | "cell_type": "markdown",
164 | "metadata": {},
165 | "source": [
166 | "#### 中文错别字可以考虑转换成拼音做相似度匹配 \n",
167 | "\n",
168 | "address \n",
169 | "\n",
170 | "- 地址要标准化\n",
171 | "- 模糊匹配\n",
172 | "- 相似度计算(cos距离,词向量)\n",
173 | "\n",
174 | "company \n",
175 | "\n",
176 | "- 正则\n",
177 | "- 字节拆分\n",
178 | "- 关键字提取\n",
179 | "- 相似度计算\n",
180 | "- 错别字/同音字识别\n",
181 | "\n"
182 | ]
183 | },
184 | {
185 | "cell_type": "markdown",
186 | "metadata": {},
187 | "source": [
188 | "#### 第三方数据 \n",
189 | "\n",
190 | "人行征信 \n",
191 | "\n",
192 | "- 公司信息是否一致\n",
193 | "- 学历是否一致\n",
194 | "- 居住地址是否一致\n",
195 | "- 手机号码是否一致\n",
196 | "- 逾期数据\n",
197 | "\n",
198 | "运营商 \n",
199 | "\n",
200 | "- 是否有相同的联系人\n",
201 | "- 是否有黑名单客户在通讯录中\n",
202 | "- 通话最频繁的几个人(所在地是否和他相同)\n",
203 | "\n",
204 | "社保公积金 \n",
205 | "\n",
206 | "- 工资\n",
207 | "- 社保\n",
208 | "- 公积金\n"
209 | ]
210 | }
211 | ],
212 | "metadata": {
213 | "kernelspec": {
214 | "display_name": "Python 3",
215 | "language": "python",
216 | "name": "python3"
217 | },
218 | "language_info": {
219 | "codemirror_mode": {
220 | "name": "ipython",
221 | "version": 3
222 | },
223 | "file_extension": ".py",
224 | "mimetype": "text/x-python",
225 | "name": "python",
226 | "nbconvert_exporter": "python",
227 | "pygments_lexer": "ipython3",
228 | "version": "3.7.1"
229 | }
230 | },
231 | "nbformat": 4,
232 | "nbformat_minor": 2
233 | }
234 |
--------------------------------------------------------------------------------