首页 > 其他分享 >三方数据调用

三方数据调用

时间:2024-06-12 17:45:33浏览次数:16  
标签:三方 调用 数据 idcard json apply import data ZT2

import numpy as np
import pandas as pd
import sqlalchemy
import pymysql
conn=pymysql.connect(host="114.55.91.201",user="read",passwd="readrisk123456",db='likeshop')
sql="""SELECT o.user_id,
o.create_time,o.enjoy_time,o.pay_time,
JSON_UNQUOTE(JSON_EXTRACT( o.address, '$.mobile' )) AS phone
FROM ls_order as o where is_examine=1 """
order=pd.read_sql_query(sql,conn)
import datetime
def dates(x):
if pd.isnull(x):
return x
elif x==0:
return np.nan
else:
datetime_obj = datetime.datetime.fromtimestamp(x)
return datetime_obj.date()
#datetime_obj
#atetime_obj.time()
order["create_time"]=order["create_time"].apply(dates)
order["enjoy_time"]=order["enjoy_time"].apply(dates)
order["pay_time"]=order["pay_time"].apply(dates)
order['create_time']=order['create_time'].astype(str)
order=order[order['create_time']>="2024-05-01"]
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')
warnings.simplefilter('ignore')
import numpy as np
import pandas as pd
import pymysql
conn=pymysql.connect(host="114.55.91.201",user="read",passwd="readrisk123456",db='likeshop')
sql="""select uid as user_id,name,id_num as idcard from ls_user_id_card where step =4 """
idcard=pd.read_sql_query(sql,conn)
ZT=order.merge(idcard,on="user_id",how="inner")
ZT['type']="牛牛商城"
ZT.drop_duplicates(subset="idcard",inplace=True)
ZT=ZT[ZT['idcard'].notna()]
ZT

# 看看数据库有啥

In[207]:

import numpy as np
import pymysql
import pandas as pd
conn=pymysql.connect(host="112.124.40.41",user="score",passwd="jxy7RwPaLBryzFF8",db='score',port=9806)
sql="""SELECT idcard from order """
order=pd.read_sql_query(sql,conn)
order

In[208]:

zt1=ZT.merge(order,on="idcard",how="inner")
ztid=zt1['idcard'].to_list()
ZT1=ZT[~ZT['idcard'].isin(ztid)]

In[209]:

ZT1=ZT1.head(20)

# 判断有无新增数据,有新数据导入数据库,没有直接结束。

In[204]:

if len(ZT1)>0:
import pymysql
from sqlalchemy import create_engine
conn=pymysql.connect(host="112.124.40.41",user="score",passwd="jxy7RwPaLBryzFF8",db='score',port=9806)
conn = create_engine('mysql+pymysql://score:[email protected]:9806/score')
ZT1.to_sql("order", conn, if_exists='append',index=False)
ZT1=ZT1[['user_id','name','idcard','phone']]
import hashlib
def md5_jiami(x):
Jpwd = hashlib.md5()
Jpwd.update(x.encode('utf-8'))
return Jpwd.hexdigest()
ZT1['idcard_md5'] = ZT1['idcard'].apply(md5_jiami)
ZT1.reset_index(inplace=True)
import requests
response = requests.get('https://api.openapi.baiyizu.cn/api/open/access_token?account=baiyizu&signature=c3f0c807ac3240dabe4bc9d05506dd06')
import pandas as pd
token=pd.DataFrame(response.json())
token=token.at['access_token','data']
ZT2=ZT1.copy()
ZT2['data']=1
import requests
import json
headers = {"Content-Type": "application/json; charset=UTF-8"}
url = "https://api.openapi.baiyizu.cn/api/openapi/v1/gateway"
for i in range(len(ZT2)):
a=ZT2.at[i,'idcard']
b=ZT2.at[i,'name']
c=ZT2.at[i,'phone']
pyload ={"account":"baiyizu","access_token":token,"product_code":"11002",
"params":{"name":b,"id_card":a,"phone":c}}
response = requests.post(url, data=json.dumps(pyload), headers=headers).text
ZT2.iloc[i,6] = response
ZT2['data']=ZT2['data'].apply(lambda x:json.loads(x)['data']['data']['data']['result_detail'])
ZT2['channel']="xinyan"
ZT3=ZT1.copy()
ZT3['data']=1
import oss2
for i in range(len(ZT3)):
a=ZT3.at[i,'idcard']
b=ZT3.at[i,'name']
c=ZT3.at[i,'phone']
import requests
import json
headers = {"Content-Type": "application/json; charset=UTF-8"}
url = "https://api.openapi.baiyizu.cn/api/openapi/v1/gateway"
pyload ={"account":"baiyizu","access_token":token,"product_code":"12008",
"params":{"name":b,"id_card":a,"phone":c,"auth_file_url": "https://byzpro.oss-cn-chengdu.aliyuncs.com/contract/f7b19c34cd6835276de42583711c18b4.pdf"}}
response = requests.post(url, data=json.dumps(pyload), headers=headers).text
ZT3.iloc[i,6] = response
ZT3['data']=ZT3['data'].apply(lambda x:json.loads(x)['data'])
ZT3['channel']="yqtz"
data=pd.concat([ZT2,ZT3],axis=0)
data.drop(['index','idcard_md5'],axis=1,inplace=True)
data['data']=data['data'].apply(lambda x:json.dumps(x))
import pymysql
from sqlalchemy import create_engine
conn=pymysql.connect(host="112.124.40.41",user="score",passwd="jxy7RwPaLBryzFF8",db='score',port=9806)
conn = create_engine('mysql+pymysql://score:[email protected]:9806/score')
data.to_sql("data", conn, if_exists='append',index=False)
data.to_sql("ceshi1", conn, if_exists='append',index=False)
def get_data_from_json(json_obj, key='max_performance_amt'):
if isinstance(json_obj, dict):
for k, v in json_obj.items():
if k == key:
return v
elif isinstance(v, (dict, list)):
result = get_data_from_json(v, key)
if result is not None:
return result
elif isinstance(json_obj, list):
for item in json_obj:
result = get_data_from_json(item, key)
if result is not None:
return result
return None
ZT2['data']=ZT2['data'].apply(lambda x:json.dumps(x))
ZT3['data']=ZT3['data'].apply(lambda x:json.dumps(x))
ZT2['近12个月贷款金额在1w以上的笔数'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="B22170015") if isinstance(x, str) and x else None)
ZT2['消金贷款类机构最大授信额度'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="C22180009") if isinstance(x, str) and x else None)
ZT2['近1个月履约贷款总金额'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="B22170040") if isinstance(x, str) and x else None)
ZT2['申请准入分'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="A22160001") if isinstance(x, str) and x else None)
ZT2['近3个月履约贷款总金额'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="B22170041") if isinstance(x, str) and x else None)
ZT2['近1个月履约贷款次数'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="B22170045") if isinstance(x, str) and x else None)
ZT2['近3个月履约贷款次数'] = ZT2['data'].apply(lambda x: get_data_from_json(json.loads(x),key="B22170046") if isinstance(x, str) and x else None)
ZT3['履约笔数'] = ZT3['data'].apply(lambda x: get_data_from_json(json.loads(x),key="count_performance") if isinstance(x, str) and x else None)
ZT3['最大逾期金额'] = ZT3['data'].apply(lambda x: get_data_from_json(json.loads(x),key="max_overdue_amt") if isinstance(x, str) and x else None)
PF=ZT2.merge(ZT3,on='idcard',how="inner")
PF=PF[['idcard','履约笔数',
'最大逾期金额',
'近12个月贷款金额在1w以上的笔数',
'消金贷款类机构最大授信额度',
'近1个月履约贷款总金额',
'申请准入分',
'近3个月履约贷款总金额',
'近1个月履约贷款次数',
'近3个月履约贷款次数']]
PF['类型']="牛牛商城"
nn=PF.copy()
for i in [ '履约笔数',
'近12个月贷款金额在1w以上的笔数', '消金贷款类机构最大授信额度', '申请准入分',
'近1个月履约贷款次数', '近3个月履约贷款次数']:
nn[i]=nn[i].apply(lambda x:np.nan if x"" else np.nan if x"其他" else np.nan if x=="np.nan" else x)
nn[i]=nn[i].astype('float')
def qj(x):
values=[0,10,50,np.inf]
index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R']
for i in range(len(values)-1):
if values[i]<=x<values[i+1]:
return '{0}[{1},{2})'.format(index[i],values[i],values[i+1])
return '空值'
nn['近3个月履约贷款次数']=nn['近3个月履约贷款次数'].astype('float')
nn['近3个月履约贷款次数']=nn['近3个月履约贷款次数'].apply(qj)
def qj(x):
values=[0,1,5,17,np.inf]
index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
for i in range(len(values)-1):
if values[i]<=x<values[i+1]:
return '{0}
[{1},{2})'.format(index[i],values[i],values[i+1])
return '空值'
nn['近1个月履约贷款次数']=nn['近1个月履约贷款次数'].astype('float')
nn['近1个月履约贷款次数']=nn['近1个月履约贷款次数'].apply(qj)

def qj(x):
    values=[0,505,525,545,640,np.inf]
    index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
    for i in range(len(values)-1):
        if values[i]<=x<values[i+1]:
            return '{0}_[{1},{2})'.format(index[i],values[i],values[i+1])
    return '空值'
nn['申请准入分']=nn['申请准入分'].astype('float')
nn['申请准入分']=nn['申请准入分'].apply(qj)

def qj(x):
    values=[0,10000,20000,50000,np.inf]
    index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
    for i in range(len(values)-1):
        if values[i]<=x<values[i+1]:
            return '{0}_[{1},{2})'.format(index[i],values[i],values[i+1])
    return '空值'
nn['消金贷款类机构最大授信额度']=nn['消金贷款类机构最大授信额度'].astype('float')
nn['消金贷款类机构最大授信额度']=nn['消金贷款类机构最大授信额度'].apply(qj)

def qj(x):
    values=[0,1,2,8,np.inf]
    index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
    for i in range(len(values)-1):
        if values[i]<=x<values[i+1]:
            return '{0}_[{1},{2})'.format(index[i],values[i],values[i+1])
    return '空值'
nn['近12个月贷款金额在1w以上的笔数']=nn['近12个月贷款金额在1w以上的笔数'].astype('float')
nn['近12个月贷款金额在1w以上的笔数']=nn['近12个月贷款金额在1w以上的笔数'].apply(qj)
def qj(x):
    values=[0,5,15,30,140,np.inf]
    index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
    for i in range(len(values)-1):
        if values[i]<=x<values[i+1]:
            return '{0}_[{1},{2})'.format(index[i],values[i],values[i+1])
    return '空值'
nn['履约笔数']=nn['履约笔数'].astype('float')
nn['履约笔数']=nn['履约笔数'].apply(qj)

def qj4(x):
    if x=='0':
        return 'A_0'    
    if x=='1-1000':
        return 'B_1-1000'
    elif x=='1000-2000':
        return 'C_1000-2000'
    elif x=='[1000,2000)':
        return 'D_[1000,2000)'  
    elif x=='2000-3000':
        return 'E_2000-3000'
    elif x=='3000-4000':
        return 'F_3000-4000'
    elif x=='4000-6000':
        return 'G_4000-6000'
    elif x=='6000-8000':
        return 'H_6000-8000'
    elif x=='8000-10000':
        return 'I_8000-10000'
    elif x=='10000-20000':
        return 'J_10000-20000'
    elif x=='20000-40000':
        return 'K_20000-40000'
    else: return "空值"
nn['最大逾期金额']=nn['最大逾期金额'].apply(qj4)
def qj1(x):
    if x=='0':
        return 'A_0'    
    if x=='(0,500)':
        return 'B_(0,500)'
    elif x=='[500,1000)':
        return 'C_[500,1000)'
    elif x=='[1000,2000)':
        return 'D_[1000,2000)'  
    elif x=='[2000,3000)':
        return 'E_[2000,3000)'
    elif x=='[3000,5000)':
        return 'F_[3000,5000)'
    elif x=='[5000,10000)':
        return 'G_[5000,10000)'
    elif x=='[10000,20000)':
        return 'H_[10000,20000)'
    elif x=='[20000,30000)':
        return 'I_[20000,30000)'
    elif x=='[30000,50000)':
        return 'J_[30000,50000)'
    elif x=='[50000,+)':
        return 'K_[50000,+)'
    else: return "空值"
nn['近1个月履约贷款总金额']=nn['近1个月履约贷款总金额'].apply(qj1)
nn['近3个月履约贷款总金额']=nn['近3个月履约贷款总金额'].apply(qj1)
nn1=nn.copy()
pfk=pd.read_excel('/chenqianguang/pfk.xlsx',engine='openpyxl')
coll=['履约笔数',

'最大逾期金额',
'近12个月贷款金额在1w以上的笔数',
'消金贷款类机构最大授信额度',
'近1个月履约贷款总金额',
'申请准入分',
'近3个月履约贷款总金额',
'近1个月履约贷款次数',
'近3个月履约贷款次数']
ys=pfk
for i in coll:
dictys = dict(zip(ys[ys['变量']i]['区间'],ys[ys['变量']i]['得分']))
nn[i]=nn[i].map(dictys)
nn['fenshu'] = nn[coll].sum(axis=1)
nn['fenshu'] = 383+nn['fenshu']
nn.rename(columns={'fenshu':"TW_V100"},inplace=True)
nn.drop_duplicates(subset="idcard",inplace=True)
nn1.drop_duplicates(subset="idcard",inplace=True)
zt=nn1.merge(nn[['idcard','TW_V100']],on="idcard",how="left")
zt.drop_duplicates(subset='idcard',inplace=True)
def qj(x):
values=[0,262,316,352,374,390,405,416,428,445,np.inf]
index=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R']
for i in range(len(values)-1):
if values[i]<=x<values[i+1]:
return '{0}_[{1},{2})'.format(index[i],values[i],values[i+1])
return '空值'
zt['TW_V100']=zt['TW_V100'].astype('float')
zt['TW_V100_bin']=zt['TW_V100'].apply(qj)
import pymysql
from sqlalchemy import create_engine
conn=pymysql.connect(host="112.124.40.41",user="score",passwd="jxy7RwPaLBryzFF8",db='score',port=9806)
conn = create_engine('mysql+pymysql://score:[email protected]:9806/score')
zt.to_sql("score", conn, if_exists='append',index=False)
else :print("结束运行")

标签:三方,调用,数据,idcard,json,apply,import,data,ZT2
From: https://www.cnblogs.com/chenqianguan/p/18244404

相关文章

  • Netty数据传输载体ByteBuf
    原文链接:https://www.cnblogs.com/wuweishuo/p/10854421.htmlNetty中读写以ByteBuf为载体进行交互ByteBuf的结构ByteBuf以readerIndex和writerIndex划分为三块区域,废弃字节,可读字节,可写字节。每次从ByteBuf读取一个字节时readerIndex+1,写入一个字节时writerIndex+1。废弃......
  • 朴素贝叶斯分类器 #数据挖掘 #Python
    朴素贝叶斯分类器是一种基于概率统计的简单但强大的机器学习算法。它假设特征之间是相互独立的(“朴素”),尽管在现实世界中这通常不成立,但在许多情况下这种简化假设仍能提供良好的性能。基本原理:朴素贝叶斯分类器利用贝叶斯定理,计算给定输入特征条件下属于某个类别的概率,并选择......
  • 数据类型与深浅拷贝理解 vs 不同语言环境下深浅拷贝实例
    一、在探讨深浅拷贝的问题之前需要先理解两种数据类型值类型数据(基本数据类型):存储在栈内存,占据固定大小的空间,直接存储其数据(值的赋值是深拷贝);引用类型数据:这种数据类型的变量通常存储在栈区,存的是指向实际数据的指针,而实际的数据是存储在堆区,访问数据通过指针去访问(值的赋值......
  • 【专题】保险行业数字化洞察白皮书报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33203原文出处:拓端数据部落公众号近年来,"养老"、"三胎政策"、"医疗成本"等一系列备受关注的民生话题,使得保险服务备受瞩目,并逐渐渗透到每个人的生活中。自2020年以来,由于多种因素的影响,人们对健康的意识不断提高,这正在重新塑造中国消费者对保险的......
  • Python中用PyTorch机器学习神经网络分类预测银行客户流失模型|附代码数据
    阅读全文:http://tecdat.cn/?p=8522最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。分类问题属于机器学习问题的类别,其中给定一组特征,任务是预测离散值。分类问题的一些常见示例是,预测肿瘤是否为癌症,或者学生是否可能通过考试在本文中,鉴于银行客户的某些......
  • mysql数据库修改配置文件后无法启动服务问题排查
    windowsserver 报错现象:本地计算机上的MySQL8.0服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。 MySQL服务无法启动。服务没有报告任何错误。 故障原因:经多方排查最终确认是配置文件存储编码错误导致服务无法初始化。处理过程:1、   本地环境检......
  • 在Python中使用LSTM和PyTorch进行时间序列预测|附代码数据
    全文链接:http://tecdat.cn/?p=8145最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。顾名思义,时间序列数据是一种随时间变化的数据类型。例如,24小时内的温度,一个月内各种产品的价格,一年中特定公司的股票价格诸如长期短期记忆网络(LSTM)之类的高级深度学习模型能......
  • python-数据分析-Matplotlib-1-进阶图形(气泡图-面积图-雷达图-玫瑰图-3D图)
    气泡图#-*-coding:utf-8-*-#气泡图#气泡图可以用来了解三个变量之间的关系,通过比较气泡位置和大小来分析数据维度之间的相关性。#例如在我们之前绘制的月收入和网购支出的散点图中,我们已经发现了二者的正相关关系,如果我们引入第三个变量网购次数,那么我们就需要使用气泡图......
  • SSM-小区物业管理系统-48954(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    基于SSM小区物业管理系统摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。每个社区的物业管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......
  • 删除金蝶数据库后恢复的方法
    前有程序员删除数据库跑路,今有财务人员删除金蝶数据库离职!这两天呢,百度副总裁的言论啊一下子上了热搜,我这边呢也有一个差不多类似的一个情况,就是某公司财务人员,因为个人的一点小情绪提离职,没想到老板呢秒批了。一般像财务人员这种重要岗位,可能都会三思一下,结果这个老板就秒批了......