Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
duizhang_tools
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data—王林芳
duizhang_tools
Commits
03602612
Commit
03602612
authored
Nov 13, 2017
by
data—王林芳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
在贷明细-汇总最终版
parent
cd1e68d5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
258 deletions
+0
-258
去哪儿每日赔付.py
每日赔付/去哪儿每日赔付/去哪儿每日赔付.py
+0
-136
去哪儿赔付明细.py
每日赔付/去哪儿每日赔付/去哪儿赔付明细.py
+0
-122
No files found.
每日赔付/去哪儿每日赔付/去哪儿每日赔付.py
deleted
100644 → 0
View file @
cd1e68d5
# -*- encoding: utf8 -*-
import
sys
import
datetime
import
pandas
as
pd
from
sqlalchemy
import
create_engine
from
dateutil.relativedelta
import
relativedelta
from
itertools
import
product
import
os
reload
(
sys
)
sys
.
setdefaultencoding
(
"utf-8"
)
pd
.
options
.
mode
.
chained_assignment
=
None
max_limit
=
800000
#
# 表名称:
# 去哪儿-赔付明细
#表字段:
# 资金方 自然日,应还,提前还款可用,逾期还款,正常还款
# 数据库:
# qunaer_new
# 注意事项:
#
#
file_path
=
u'E:/审计出表/去哪儿-赔付专区/'
engine_qunaer
=
create_engine
(
'mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8'
,
echo
=
False
)
.
connect
()
# fund plan
sql_fund_plan
=
'''
select fund_code,product_no,current_stage_no,principle,interest,fee_amount,due_amount,date(deadline) deadline
from qunaer_new.fund_repayment_plan
'''
sql_del
=
'''
select product_no from qunaer_new.fund_repay_detail where type IN (5,7)
'''
sql_repay
=
'''
select repay.product_no,pay.fund_code,current_stage_no,date(repay_time) repay_time,repay_principle,repay_fee_amount,repay_due_amount
from qunaer_new.repay_detail repay
JOIN qunaer_new.pay_detail pay on repay.product_no = pay.product_no and pay.status = 1
where repay.fund_code !=1
'''
sql_refund
=
'''
select product_no,-sum(refund_principle) repay_principle ,-sum(refund_fee_amount) repay_fee_amount ,date(refund_time) repay_time
from qunaer_new.refund_detail WHERE product_no in
%
s
and fund_code != 1
GROUP BY 1
'''
# sql_refund = '''
# select product_no from qunaer_new.refund_detail where fund_code != 1
# '''
def
qunaer_peifu
(
start_time
,
end_time
):
#year,month = 2017,9
df_fund_plan
=
pd
.
read_sql
(
sql_fund_plan
,
engine_qunaer
)
df_fund_plan
.
loc
[
df_fund_plan
.
deadline
>=
end_time
,
'principle'
]
=
0
df_fund_plan
.
loc
[
df_fund_plan
.
deadline
<
start_time
,
'principle'
]
=
0
df_fund_plan
.
loc
[
df_fund_plan
.
deadline
>=
end_time
,
'fee_amount'
]
=
0
df_fund_plan
.
loc
[
df_fund_plan
.
deadline
<
start_time
,
'fee_amount'
]
=
0
df_del
=
pd
.
read_sql
(
sql_del
,
engine_qunaer
)
df_fund_plan
=
df_fund_plan
.
loc
[
~
df_fund_plan
.
product_no
.
isin
(
df_del
.
product_no
)]
df_repay
=
pd
.
read_sql
(
sql_repay
,
engine_qunaer
)
df_repay
=
df_repay
.
loc
[
~
df_repay
.
product_no
.
isin
(
df_del
.
product_no
)]
df_fund_plan
[
'product_no'
]
=
df_fund_plan
[
'product_no'
]
.
astype
(
str
)
df_repay
[
'product_no'
]
=
df_repay
[
'product_no'
]
.
astype
(
str
)
df_repay
=
pd
.
merge
(
df_repay
,
df_fund_plan
[[
'product_no'
,
'current_stage_no'
,
'deadline'
]],
how
=
'left'
)
df_repay
.
loc
[
df_repay
.
repay_time
>=
end_time
,
'repay_principle'
]
=
0
df_repay
.
loc
[
df_repay
.
repay_time
>=
end_time
,
'repay_fee_amount'
]
=
0
df_repay
.
loc
[
df_repay
.
deadline
<
start_time
,
'repay_principle'
]
=
0
df_repay
.
loc
[
df_repay
.
deadline
<
start_time
,
'repay_fee_amount'
]
=
0
df_repay
.
loc
[
df_repay
.
deadline
>=
end_time
,
'repay_principle'
]
=
0
df_repay
.
loc
[
df_repay
.
deadline
>=
end_time
,
'repay_fee_amount'
]
=
0
df_repay
.
loc
[(
df_repay
.
repay_time
<
start_time
)
&
(
df_repay
.
deadline
<
start_time
),
'repay_principle'
]
=
0
df_repay
.
loc
[(
df_repay
.
repay_time
<
start_time
)
&
(
df_repay
.
deadline
<
start_time
),
'repay_fee_amount'
]
=
0
df_result
=
pd
.
merge
(
df_repay
[[
'product_no'
,
'current_stage_no'
,
'repay_time'
,
'repay_principle'
,
'repay_fee_amount'
]],
df_fund_plan
[[
'fund_code'
,
'product_no'
,
'current_stage_no'
,
'deadline'
,
'principle'
,
'fee_amount'
]],
on
=
[
'product_no'
,
'current_stage_no'
],
how
=
'outer'
)
df_result
=
df_result
.
fillna
(
0
)
df_result
.
loc
[
df_result
[[
'product_no'
,
'current_stage_no'
]]
.
duplicated
(),
'principle'
]
=
0
df_result
.
loc
[
df_result
[[
'product_no'
,
'current_stage_no'
]]
.
duplicated
(),
'fee_amount'
]
=
0
df_result
.
deadline
=
pd
.
to_datetime
(
df_result
.
deadline
)
.
dt
.
date
df_result
=
df_result
.
loc
[
df_result
.
deadline
<
end_time
]
df_result_gp
=
df_result
[
~
df_result
[
'product_no'
]
.
duplicated
()]
df_refund
=
pd
.
read_sql
(
sql_refund
%
str
(
tuple
(
df_result_gp
[
'product_no'
]
.
astype
(
str
)
.
tolist
())),
engine_qunaer
)
df_refund
=
pd
.
merge
(
df_refund
,
df_fund_plan
[[
'product_no'
,
'deadline'
,
'fund_code'
]],
on
=
'product_no'
,
how
=
'left'
)
df_result
=
pd
.
concat
([
df_refund
,
df_result
],
axis
=
0
,
ignore_index
=
True
)
df_result_benjin
=
df_result
.
groupby
([
'deadline'
,
'fund_code'
])[[
'principle'
,
'fee_amount'
]]
.
sum
()
.
reset_index
()
df_result_pay
=
df_result
[
~
(
df_result
[
'repay_time'
]
==
0
)]
df_result_pay
.
repay_time
=
pd
.
to_datetime
(
df_result_pay
.
repay_time
)
.
dt
.
date
df_result_pay
[
'tq'
]
=
df_result_pay
.
loc
[
df_result_pay
[
'repay_time'
]
<
df_result_pay
[
'deadline'
],
'repay_principle'
]
df_result_pay
[
'zc'
]
=
df_result_pay
.
loc
[
df_result_pay
[
'repay_time'
]
==
df_result_pay
[
'deadline'
],
'repay_principle'
]
df_result_pay
[
'yq'
]
=
df_result_pay
.
loc
[
df_result_pay
[
'repay_time'
]
>
df_result_pay
[
'deadline'
],
'repay_principle'
]
df_result_sum
=
pd
.
merge
(
df_result_benjin
,
df_result_pay
.
groupby
([
'deadline'
,
'fund_code'
])[
'tq'
,
'zc'
,
'yq'
]
.
sum
()
.
reset_index
(),
on
=
[
'deadline'
,
'fund_code'
],
how
=
'left'
)
df_result_sum
.
loc
[
df_result_sum
.
fund_code
==
2
,
'fund_code'
]
=
u'惠金所'
df_result_sum
.
loc
[
df_result_sum
.
fund_code
==
3
,
'fund_code'
]
=
u'笑脸'
df_result_sum
.
rename
(
columns
=
{
'deadline'
:
u'自然日'
,
'fund_code'
:
u'资金方'
,
'principle'
:
u'应还本金'
,
'fee_amount'
:
u'应还利息'
,
'tq'
:
u'提前还款可用'
,
'zc'
:
u'正常还款'
,
'yq'
:
u'逾期还款'
},
inplace
=
True
)
df_result_sum
.
fillna
(
0
,
inplace
=
True
)
df_result_sum
.
to_excel
(
file_path
+
u'去哪儿每日赔付_
%
s.xlsx'
%
(
start_time
),
index
=
None
)
if
__name__
==
'__main__'
:
print
'____main__start'
start_time
=
datetime
.
date
(
2017
,
9
,
1
)
end_time
=
datetime
.
date
(
2017
,
10
,
1
)
qunaer_peifu
(
start_time
,
end_time
)
print
'____main__end'
每日赔付/去哪儿每日赔付/去哪儿赔付明细.py
deleted
100644 → 0
View file @
cd1e68d5
# -*- encoding: utf8 -*-
import
sys
import
datetime
import
pandas
as
pd
from
sqlalchemy
import
create_engine
from
dateutil.relativedelta
import
relativedelta
from
itertools
import
product
import
os
reload
(
sys
)
sys
.
setdefaultencoding
(
"utf-8"
)
pd
.
options
.
mode
.
chained_assignment
=
None
max_limit
=
800000
#
# 表名称:
# 去哪儿-赔付明细
#表字段:
# product_no 资金方 应还期数 应还资金方本金 应还资金方利息 应还资金方时间 实还本金 实还利息 赔付
# 数据库:
# qunaer_new
# 注意事项:
# 需要去掉转保理的订单,方式为left join baoli_pay_detail .... where product_no is null
#
file_path
=
u'E:/审计出表/去哪儿-赔付专区/'
engine_qunaer
=
create_engine
(
'mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8'
,
echo
=
False
)
.
connect
()
# fund plan
sql_fund_plan
=
'''
select fund_code,product_no,current_stage_no,principle,interest,fee_amount,due_amount,date(deadline) deadline
from qunaer_new.fund_repayment_plan
'''
sql_del
=
'''
select product_no from qunaer_new.fund_repay_detail where type IN (5,7)
'''
sql_repay
=
'''
select repay.product_no,current_stage_no,date(repay_time) repay_time,repay_principle,repay_fee_amount,repay_due_amount
from qunaer_new.repay_detail repay
JOIN qunaer_new.pay_detail pay on repay.product_no = pay.product_no and pay.status = 1
where repay.fund_code !=1
'''
sql_refund
=
'''
select product_no,-sum(refund_principle) refund_principle ,-sum(refund_fee_amount) refund_fee_amount
from qunaer_new.refund_detail WHERE product_no in
%
s
and fund_code != 1
GROUP BY 1
'''
# sql_refund = '''
# select product_no from qunaer_new.refund_detail where fund_code != 1
# '''
def
qunaer_peifu
(
start_time
,
end_time
):
#year,month = 2017,9
df_fund_plan
=
pd
.
read_sql
(
sql_fund_plan
,
engine_qunaer
)
df_fund_plan
.
ix
[
df_fund_plan
.
deadline
>=
end_time
,
'principle'
]
=
0
df_fund_plan
.
ix
[
df_fund_plan
.
deadline
<
start_time
,
'principle'
]
=
0
df_fund_plan
.
ix
[
df_fund_plan
.
deadline
>=
end_time
,
'fee_amount'
]
=
0
df_fund_plan
.
ix
[
df_fund_plan
.
deadline
<
start_time
,
'fee_amount'
]
=
0
df_del
=
pd
.
read_sql
(
sql_del
,
engine_qunaer
)
df_fund_plan
=
df_fund_plan
.
ix
[
~
df_fund_plan
.
product_no
.
isin
(
df_del
.
product_no
)]
df_repay
=
pd
.
read_sql
(
sql_repay
,
engine_qunaer
)
df_repay
=
df_repay
.
ix
[
~
df_repay
.
product_no
.
isin
(
df_del
.
product_no
)]
df_fund_plan
[
'product_no'
]
=
df_fund_plan
[
'product_no'
]
.
astype
(
str
)
df_repay
[
'product_no'
]
=
df_repay
[
'product_no'
]
.
astype
(
str
)
df_repay
=
pd
.
merge
(
df_repay
,
df_fund_plan
[[
'product_no'
,
'current_stage_no'
,
'deadline'
]],
how
=
'left'
)
df_repay
.
ix
[
df_repay
.
repay_time
>=
end_time
,
'repay_principle'
]
=
0
df_repay
.
ix
[
df_repay
.
repay_time
>=
end_time
,
'repay_fee_amount'
]
=
0
df_repay
.
ix
[
df_repay
.
deadline
<
start_time
,
'repay_principle'
]
=
0
df_repay
.
ix
[
df_repay
.
deadline
<
start_time
,
'repay_fee_amount'
]
=
0
df_repay
.
ix
[
df_repay
.
deadline
>=
end_time
,
'repay_principle'
]
=
0
df_repay
.
ix
[
df_repay
.
deadline
>=
end_time
,
'repay_fee_amount'
]
=
0
df_repay
.
ix
[(
df_repay
.
repay_time
<
start_time
)
&
(
df_repay
.
deadline
<
start_time
),
'repay_principle'
]
=
0
df_repay
.
ix
[(
df_repay
.
repay_time
<
start_time
)
&
(
df_repay
.
deadline
<
start_time
),
'repay_fee_amount'
]
=
0
df_result
=
pd
.
merge
(
df_repay
[[
'product_no'
,
'current_stage_no'
,
'repay_time'
,
'repay_principle'
,
'repay_fee_amount'
]],
df_fund_plan
[[
'fund_code'
,
'product_no'
,
'current_stage_no'
,
'deadline'
,
'principle'
,
'fee_amount'
]],
on
=
[
'product_no'
,
'current_stage_no'
],
how
=
'outer'
)
df_result
=
df_result
.
fillna
(
0
)
df_result
.
loc
[
df_result
[[
'product_no'
,
'current_stage_no'
]]
.
duplicated
(),
'principle'
]
=
0
df_result
.
loc
[
df_result
[[
'product_no'
,
'current_stage_no'
]]
.
duplicated
(),
'fee_amount'
]
=
0
df_result
.
deadline
=
pd
.
to_datetime
(
df_result
.
deadline
)
.
dt
.
date
df_result
=
df_result
.
ix
[
df_result
.
deadline
<
end_time
]
df_result_gp
=
df_result
.
groupby
([
'product_no'
])[
'repay_principle'
,
'repay_fee_amount'
,
'principle'
,
'fee_amount'
]
.
sum
()
.
reset_index
()
df_refund
=
pd
.
read_sql
(
sql_refund
%
str
(
tuple
(
df_result_gp
[
'product_no'
]
.
astype
(
str
)
.
tolist
())),
engine_qunaer
)
df_result_gp
=
pd
.
merge
(
df_result_gp
,
df_refund
,
on
=
'product_no'
,
how
=
'left'
)
df_result_gp
=
df_result_gp
.
fillna
(
0
)
df_result_gp
[
u'peifu'
]
=
df_result_gp
[
'principle'
]
-
df_result_gp
[
'repay_principle'
]
-
df_result_gp
[
'refund_principle'
]
df_result_gp
.
rename
(
columns
=
{
'fund_code'
:
u'资金方'
,
'product_no'
:
u'产品编号'
,
'current_stage_no'
:
u'当前期数'
,
'principle'
:
u'应还本金'
,
'interest'
:
u'应还利息'
,
\
'fee_amount'
:
u'应还服务费'
,
'due_amount'
:
u'应还罚息'
,
'deadline'
:
u'应还日期'
,
'repay_time'
:
u'实还日期'
,
'repay_principle'
:
u'实还本金'
,
\
'repay_fee_amount'
:
u'实还服务费'
,
'repay_due_amount'
:
u'实还罚息'
,
'peifu'
:
u'赔付'
,
'refund_principle'
:
u'退款本金'
,
'refund_fee_amount'
:
u'退款服务费'
}
,
inplace
=
True
)
df_result_gp
.
to_excel
(
file_path
+
u'去哪儿赔付明细_
%
s.xlsx'
%
(
start_time
),
index
=
None
)
if
__name__
==
'__main__'
:
print
'____main__start'
start_time
=
datetime
.
date
(
2017
,
9
,
1
)
end_time
=
datetime
.
date
(
2017
,
10
,
1
)
qunaer_peifu
(
start_time
,
end_time
)
print
'____main__end'
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment