【以下为本项目分析思维导图:】

Python系列教程,数据集免费获取,遇到bug及时反馈,讨论交流可加扣裙<60 61 15 02 7>

项目工具:Pycharm + Navicat 或 在线工具freego

Image Name

接下来进行代码演示

【项目 🔺 🔺(综合版):信用卡客户用户画像 及 贷款违约预测模型】

--【 数据理解 】--

(一) 导入数据 并进行初步的数据观察

1.改变工作目录到 数据集所在文件夹

In [ ]:

# -*- coding:utf-8 -*-import  pandas as pd    # 用于 数据清洗 和 数据整理
import os   # 工作路径 及 文件夹操作
import datetimepd.set_option('display.max_columns',None)# 分别设置好 数据集路径 和 之后保存生成的文件 的路径data_path = r'D:\Data_Sets_of_Analysis\Project_1_Analysis_of_Credit_Card_User_Portrait_and_Personal_Loan_Overdue\Data_Set_of_Credit_Card_User_Portrait_and_Personal_Loan_Overdue'
save_file_path = r'D:\Data_Sets_of_Analysis\Project_1_Analysis_of_Credit_Card_User_Portrait_and_Personal_Loan_Overdue'
os.chdir(data_path)
load_file = os.listdir()print('\n' + '-'*25 + '打印目录列表' + '-'*25)   # 提示性分割线,方便阅读
print(load_file)    # 打印目录列表
print('\n'*2 + '='*100)  # 打印模块分割线,方便阅读

2.利用pandas读取csv文件

In [2]:

'''
【 #%% 】 打开 View → Scientific Model 后点击其左边的绿色剪头 可分块执行
'''# # 因文件较多,故采用for循环结合locals函数动态生成多个变量table_name = []
columns_name_express = []
columns_name = []
sql_statement = []
dataframe_table_columns_name = pd.DataFrame(columns=['表名','列名'])    # 生成一个空的DataFrame,其列名为'表名'和'列名'for i in load_file:# 仅读取后缀为csv的表if i.split('.')[1] == 'csv':# locals()方法动态生成多个变量locals()[i.split('.')[0]] = pd.read_csv(i,encoding='gbk',error_bad_lines=False,low_memory=False)# 将 每一个表的名字 都添加到 table_name 列表中table_name.append(i.split('.')[0])# 将 每一个表的名字 连同 每一列的名字都添加到 columns_name_express 和 columns_name 列表中columns_name.append(list(locals()[i.split('.')[0]]))columns_name_express.append([i.split('.')[0] + '表的列名如下:' + str(list(locals()[i.split('.')[0]])) + '\n' + '-'*125])'''i.split('.')[0] → 每一个表的名字str(list(locals()[i.split('.')[0]])) → 1.locals[]中填入表示 表名 的i.split('.')[0],表示选中该locals中的该表2.list(DataFrame)表示DataFrame的列名,故list(locals()[i.split('.')[0]])表示的是 取 表名 为i.split('.')[0] 的 表 的 列名3.最后因为要连接字符串,所以用str()函数将以上进行转换'\n'  → 表示换行'-'*125 → 将字符串- 乘以125 表示打印 - 125次  作用为画一个分割线,方便观察,不易串行最后将以上字段转换为列表,用append添加到 columns_name 中'''# 为方便用在线工具画ER图,在此顺便生成sql语句tn_str =''for j in range(len(list(locals()[i.split('.')[0]]))):tn_str += '\n' + list(locals()[i.split('.')[0]])[j] + ' ' + 'TEXT' + ','sql_statement.append('CREATE TABLE' + ' ' + i.split('.')[0] + '\n' + '(' + tn_str.strip(',') + '\n' + ');')# 生成一个 表格、列名透视表 并输出excel文件 方便作 列名分析dataframe_table_columns_name = dataframe_table_columns_name.append(pd.DataFrame({'表名':i.split('.')[0],'列名':columns_name[-1]}))

3.生成sql语句

In [ ]:

# 生成sql语句,复制后进入freego通过导入MySQL DDL自动生成ER表格,再添加关系线即可生成ER图# # 注释:列属性在此统一设置为【 TEXT 】仅为方便观察使用print('在线MySQL语句绘制ER图链接:https://www.freedgo.com/erd-index.html,复制以下生成的sql语句')
for i in sql_statement:print(i)

Image Name

4.生成一个 表格、列名透视表 并输出excel文件 方便作 列名分析

In [ ]:

dataframe_table_columns_name['列名含义分析'] = 0  # 为作pivot图,增加全为0的数值列,之后再用replace(),将0全部替换为空
warning = '🔺 注意:.to_excel重复执行会覆盖原有表,故在正式编辑excel时应注意另存为新表,或创建一个副本'   # 增加一列提示,方便表格使用
pivot_table_column_name = pd.pivot_table(dataframe_table_columns_name,index=['表名','列名']).replace(0,'').append(pd.DataFrame(columns=[warning]))print('\n'*2 + '='*100)  # 打印模块分割线,方便阅读# 将以上得到的表格保存到路径为最开始已经设定好的【 save_file_path 】中,表格名称为【 列名含义分析表(请另存).xls 】
try:pivot_table_column_name.to_excel(save_file_path +r'\列名含义分析表(请另存).xls')print('表格已保存完毕')
except Exception:print('错误,‘列名含义分析表(请另存).xls’未能成功保存,请检查报错原因(如:重复执行时,原先文件打开未关闭,则后一次执行代码时,无法覆盖原文件报错)')

Image Name

5. 列出刚刚读取的所有表名

In [ ]:

print('\n'*2 + '='*100)  # 打印模块分割线,方便阅读
print('所有表格的名称如下:' + str(table_name))

6.将每个表的列名(column)分别打印出来

In [ ]:

print('\n'*2 + '='*100)  # 打印模块分割线,方便阅读
for i in range(len(columns_name_express)):print(columns_name_express[i][0])

7.将每个表格的前5行打印出来,初步观察数据

In [ ]:

print('\n'*2 + '='*100)  # 打印模块分割线,方便阅读
for tn in load_file:col_num = len(list(locals()[tn.split('.')[0]]))pd.set_option('display.max_columns', col_num)   # 设置显示最大列数为 表的列数print('\n' + '-'*25 + '以下为%s表'% tn.split('.')[0] + '-'*25)print(locals()[tn.split('.')[0]].head())    # 默认打印前五行print(locals()[tn.split('.')[0]].count())   # 打印各列数据数

8.创建一个函数用于 查询可选取值、空值

In [ ]:

# 创建一个函数用于 有选择性地 查询 某个表 中 某个列 的 可选取值(通过该函数还能查看是否有空值)
# # 1) 因def中无法直接引用local,故将所有的表格保存到一个字典中,键 为 表名,值 为 表dict_of_tables = dict()
for i in load_file:dict_of_tables[i.split('.')[0]] = locals()[i.split('.')[0]]     # 使用for循环将每一个表都增加到dict_of_tables中# # 2) 进行函数定义def check_distinct_column_value():while True:t_name = input('请输入 表名 :')c_name = input('请输入 列名 :')try:import sqlite3con = sqlite3.connect(':memory:')dict_of_tables[t_name].to_sql(t_name,con)c_value = pd.read_sql_query('select distinct %s from %s' % (c_name, t_name), con)print(c_value)breakexcept Exception:print('发生错误,请检查所输入的 表名 和 列名 及其对应关系 是否正确,并重新输入')# # 3) 选择是否调用该查询函数while True:answer = input('是否调用“列名取值查看”函数?回答 Y 或 N:')if answer == 'Y':check_distinct_column_value()   #函数调用elif answer == 'N':breakelse:print('输入有误,请重新输入回答,仅可回答Y 或 N')

-- 【 Part 1 信用卡用户画像 】 --

(二) 数据清洗及绘图 之 信用卡用户画像

1.将导入的文件注册到sql里

In [ ]:

'''
通过 信用卡客户画像 的 目标拆解 和 ER图,需要用到 card、clients、disp(连接关系用)、trans
根据之前的数据查看,这三个表中均无缺失的情况
'''import sqlite3
con = sqlite3.connect(':memory:')
locals()['card'].to_sql('card',con)
locals()['clients'].to_sql('clients',con)
locals()['disp'].to_sql('disp',con)
locals()['trans'].to_sql('trans',con)

2.写sql语句通过disp表,将card和client两个表连接起来

In [ ]:

sql_card_client = '''
SELECT cd.*,ctdp.birth_date,ctdp.district_id,ctdp.sex
FROM card AS cd JOIN (
SELECT ct.birth_date,ct.district_id,ct.sex,dp.disp_id FROM clients AS ct
JOIN disp AS dp ON ct.client_id = dp.client_id WHERE dp.type == "所有者")AS ctdp
ON cd.disp_id = ctdp.disp_id
'''card_client = pd.read_sql_query(sql_card_client,con)
print(card_client)

3.作图 → 信用卡业务总体描述

1) 发卡总量 随 时间 的变化趋势

In [ ]:

# # 因作图可能涉及到中文,在此先设置字体
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']   # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False      # 解决保存图像负号'-'显示为方块的问题# # # 探究信用卡总量 不同年份 的总量变化
import datetime
import matplotlib.pyplot as plt# # # 新增一列‘issue_year’,提取出年份
card_client['issue_year'] = pd.to_datetime(card_client['issued']).map(lambda x:x.year)# # # 创建一个交叉表,显示不同类别卡,不同年份的发行数量
cross_tab = pd.crosstab(card_client.issue_year,card_client.type)
print(cross_tab)# # # 画趋势面积图
labels = ['青年卡','普通卡','金卡']y1 = cross_tab.loc[:,'青年卡'].astype('int')  # 将'青年卡'这列的每行的字符都转换成int
y2 = cross_tab.loc[:,'普通卡'].astype('int')
y3 = cross_tab.loc[:,'金卡'].astype('int')
x = cross_tab.index  # 将index列,也就是issue_year转换成intplt.stackplot(x,y1,y2,y3,labels=labels,colors=['#f89588','#3b6291','#f8cb7f'])
plt.title('信用卡发卡量随年份的时间变化趋势图')
plt.legend(loc = 'upper left')  # 设置图例位置在左上角
plt.ylim(0,500)     # 设置y轴刻度最大值# # # 设置 数字标签,表明对应的发卡量
for a,b in zip(x,y1):plt.text(a,0.5*b-10,b,ha='center', va= 'bottom',fontsize=7)for a,b in zip(x,y2):plt.text(a,0.5*b+list(y1)[list(x).index(a)]-10,b,ha='center', va= 'bottom',fontsize=7)for a,b in zip(x,y3):plt.text(a,0.5*b+list(y1)[list(x).index(a)]+list(y2)[list(x).index(a)]-10,b,ha='center', va= 'bottom',fontsize=7)plt.show()
'''
设置 数字标签,格式示例:for a,b in zip(x,y):plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=7)a:数字标签的横轴坐标b+0.05:数字标签的纵轴坐标'%.0f' % b:格式化的数字标签(保留一位小数)ha='center':horizontalalignment(水平对齐)va= 'bottom':verticalalignment(垂直对齐)的方式fontsize:文字大小
本案例中的实例说明:因本例为堆叠图,故对数字标签的纵轴坐标相应做了值叠加y1对应的数字标签的纵坐标放中间,并下移10(下移10是为了看起来更美观)y2对应的数字标签的纵坐标,要使其同样放中间,则需用y2对应的b值乘以0.5再加上y1对应的b值,再下移10y3对应的数字标签的纵坐标,要使其同样放中间,则需用y3对应的b值乘以0.5再加上y1和y2对应的b值,再下移10'''

Image Name

2) 不同类型卡总发行量占比情况(饼图)

In [ ]:

cross_tab1 = cross_tab
cross_tab1.loc['Sum'] = 0
for i in list(cross_tab):cross_tab1.loc['Sum'][i] = sum(cross_tab1[i])
print(cross_tab1)
plt.pie(cross_tab1.loc['Sum'],labels=list(cross_tab1),autopct='%1.1f%%',startangle=100,colors=['#3b6291','#f8cb7f','#f89588'])
plt.title('不同种类卡的占比情况')
plt.show()

Image Name

补充stack2dim包的代码

  • 🔺 🔺 【 这里补充下接下来所引用的stack2dim包的代码:

In [ ]:

# 如遇中文显示问题可加入以下代码
from pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题def stack2dim(raw, i, j, rotation=0, location='upper right'):'''此函数是为了画两个维度标准化的堆积柱状图raw为pandas的DataFrame数据框i、j为两个分类变量的变量名称,要求带引号,比如"school"rotation:水平标签旋转角度,默认水平方向,如标签过长,可设置一定角度,比如设置rotation = 40location:分类标签的位置,如果被主体图形挡住,可更改为'upper left''''import matplotlib.pyplot as pltimport pandas as pdimport numpy as npimport mathdata_raw = pd.crosstab(raw[i], raw[j])data = data_raw.div(data_raw.sum(1), axis=0)  # 交叉表转换成比率,为得到标准化堆积柱状图# 计算x坐标,及bar宽度createVar = locals()x = [0]  # 每个bar的中心x轴坐标width = []  # bar的宽度k = 0for n in range(len(data)):# 根据频数计算每一列bar的宽度createVar['width' + str(n)] = list(data_raw.sum(axis=1))[n] / sum(data_raw.sum(axis=1))width.append(createVar['width' + str(n)])if n == 0:continueelse:k += createVar['width' + str(n - 1)] / 2 + createVar['width' + str(n)] / 2 + 0.05x.append(k)# 以下是通过频率交叉表矩阵生成一串对应堆积图每一块位置数据的数组,再把数组转化为矩阵y_mat = []n = 0y_level = len(data.columns)for p in range(data.shape[0]):for q in range(data.shape[1]):n += 1y_mat.append(data.iloc[p, q])if n == data.shape[0] * data.shape[1]:breakelif n % y_level != 0:y_mat.extend([0] * (len(data) - 1))elif n % y_level == 0:y_mat.extend([0] * len(data))y_mat = np.array(y_mat).reshape(-1, len(data))y_mat = pd.DataFrame(y_mat)  # bar图中的y变量矩阵,每一行是一个y变量# 通过x,y_mat中的每一行y,依次绘制每一块堆积图中的每一块图from matplotlib import cmcm_subsection = [level for level in range(y_level)]colors = [cm.Pastel1(color) for color in cm_subsection]bottom = [0] * y_mat.shape[1]createVar = locals()for row in range(len(y_mat)):createVar['a' + str(row)] = y_mat.iloc[row, :]color = colors[row % y_level]if row % y_level == 0:bottom = bottom = [0] * y_mat.shape[1]if math.floor(row / y_level) == 0:label = data.columns.name + ': ' + str(data.columns[row])plt.bar(x, createVar['a' + str(row)],width=width[math.floor(row / y_level)], label=label, color=color)else:plt.bar(x, createVar['a' + str(row)],width=width[math.floor(row / y_level)], color=color)else:if math.floor(row / y_level) == 0:label = data.columns.name + ': ' + str(data.columns[row])plt.bar(x, createVar['a' + str(row)], bottom=bottom,width=width[math.floor(row / y_level)], label=label, color=color)else:plt.bar(x, createVar['a' + str(row)], bottom=bottom,width=width[math.floor(row / y_level)], color=color)bottom += createVar['a' + str(row)]plt.title(j + ' vs ' + i)group_labels = [str(name) for name in data.index]plt.xticks(x, group_labels, rotation=rotation)plt.ylabel(j)plt.legend(shadow=True, loc=location)plt.show()
  • 补充结束 】 🔺 🔺
    ## 4.基本属性特征

1) 不同卡类型的性别比较堆积图

In [ ]:

from stack2dim import *
stack2dim(card_client,'type','sex')

Image Name

2) 不同卡类型的年龄比较

In [ ]:

import seaborn as sns
import time
card_client['age']=(pd.to_datetime(card_client['issued'])-pd.to_datetime(card_client['birth_date']))card_client['age1']=card_client['age'].map(lambda x:x.days/365)
ax_age = sns.boxplot(x = 'type', y = 'age1', data = card_client,palette=sns.xkcd_palette(['gold','windows blue','coral']))
ax_age.set_title('不同卡类型的 年龄 比较')
plt.show()

Image Name

3) 不同类型卡的持卡人在办卡前一年内的平均帐户余额对比

In [ ]:

sql_card_client_trans = '''
select a.card_id,a.issued,a.type,c.type as t_type,c.amount,c.balance,c.date as t_datefrom card as aleft join disp as b on a.disp_id=b.disp_idleft join trans as c on b.account_id=c.account_idwhere b.type="所有者"order by a.card_id,c.date
'''
card_client_trans = pd.read_sql_query(sql_card_client_trans,con)
# print(card_client_trans.head())# # 标准化日期
card_client_trans['issued']=pd.to_datetime(card_client_trans['issued'])
card_client_trans['t_date']=pd.to_datetime(card_client_trans['t_date'])
print(card_client_trans)# # 对帐户余额进行清洗:去掉金额单位和逗号分隔,便于计算
card_client_trans['balance_1'] = card_client_trans['balance'].map(lambda x:int(x.strip('$').replace(',','')))
print(card_client_trans)# # 筛选出开卡前一年的数据
card_client_trans_1 = card_client_trans[card_client_trans.issued > card_client_trans.t_date][card_client_trans.t_date >= card_client_trans.issued-datetime.timedelta(days=365)
]
print(card_client_trans_1)# #  分组计算余额均值
card_client_trans_1['avg_balance'] = card_client_trans_1.groupby('card_id')['balance_1'].mean()
card_client_trans_2 = card_client_trans_1.groupby(['type','card_id'])['balance_1'].agg([('avg_balance','mean')])
# print(card_client_trans_1)
# print(card_client_trans_2)
card_client_trans_2.to_sql('card_client_trans_2',con)
card_client_trans_3 = card_client_trans_2.reset_index()
card_client_trans_3 = pd.read_sql('select * from card_client_trans_2', con)colors = ['windows blue','gold','coral']
ax_balance = sns.boxplot(x='type',y='avg_balance',data=card_client_trans_3,palette=sns.xkcd_palette(colors))
ax_balance.set_title('不同类型卡的持卡人在办卡前一年内的 平均帐户余额 对比')
plt.show()

Image Name

4) 不同类型持卡人在办卡前一年内的平均收入和平均支出对比

In [ ]:

# # # # # 先将 借、贷 转换成 更易理解的 out、income
type_dict = {'借':'out','贷':'income'}
card_client_trans_1['type_1'] = card_client_trans_1.t_type.map(type_dict)# # # 将amount金额列的 金额单位 和 逗号分隔 去掉
card_client_trans_1['amount_1'] = card_client_trans_1['amount'].apply(lambda x:int(x.strip('$').replace(',','')))card_client_trans_4 = card_client_trans_1.groupby(['type','card_id','type_1'])[['amount_1']].sum()
card_client_trans_4.head()
card_client_trans_4.to_sql('card_client_trans_4',con)card_client_trans_5 = card_client_trans_4.reset_index()
card_client_trans_5.to_sql('card_client_trans_5',con)
card_client_trans_6 = pd.read_sql_query('select * from card_client_trans_5 where type_1 = "income"',con)ax_amount_income = sns.boxplot(x='type',y='amount_1',data=card_client_trans_6,palette=sns.xkcd_palette(['gold','windows blue','coral']))
ax_amount_income.set_title('不同类型持卡人在办卡前一年内的 平均收入 对比')
plt.show()card_client_trans_7 = pd.read_sql_query('select * from card_client_trans_5 where type_1 = "out"',con)
ax_amount_out = sns.boxplot(x='type',y='amount_1',data=card_client_trans_6,palette=sns.xkcd_palette(['gold','windows blue','coral']))
ax_amount_out.set_title('不同类型持卡人在办卡前一年内的 平均支出 对比')
plt.show()

Image Name

Image Name

In [ ]:

'''
【信用卡客户画像总结分析】:
(一)总体趋势(近六年):1.逐年发卡量:金卡、普通卡均呈逐年上升趋势,青年卡在1997年的发行量同比降低,但总体为上升趋势;逐年发行量占比排名为:普通卡 > 青年卡 > 金卡2.总发卡量:总体发卡量占比排名为:普通卡 > 青年卡 > 金卡,其中普通卡占比接近总发卡量的3/4
(二)基本属性特征1.不同卡类型的 性别 比较:普通卡和青年卡 男女性比例较为均衡,基本为1:1;金卡的男性持有者比例相较女性持有者明显更多2.不同卡类型的 年龄 比较:普通卡和金卡的持有者年龄主要集中在30~60岁之间;而青年卡则普遍集中在25岁以内,卡类型设计与目标对象相符3.不同类型卡的持卡人在办卡前一年内的 平均帐户余额 对比:金卡持有者的办卡前一年的 平均余额 是要显著高于 普通卡 和 青年卡 的,卡类型设计与目标对象相符4.不同类型持卡人在办卡前一年内的 平均收入和平均支出 对比:三种类型的 平均收入、平均支出 排序均符合:金卡 > 普通卡 > 青年卡,金卡的持有人群为收入较高的群体,同样其支出情况也相应高于普通持卡人群,而青年卡,由于其持卡人群多为年龄层较小的人群,收入支出均较低,卡类型设计与目标对象情况相符
'''

-- 【 Part 2 贷款违约预测模型 】 --

(三) 数据清洗 之 贷款违约预测模型

'''
1.时间点的选择:选取放款时间点之前的一年,观察用户是否有逾期行为
2.loans表中的贷款状态说明:A代表合同终止,没问题;B代表合同终止,贷款没有支付;
C代表合同处于执行期,至今正常;D代表合同处于执行期,欠债状态。
A贷款正常还款,B、D有问题,C待定
'''

1.用户信息 → 将 性别、年龄、信用卡信息 添加到loans表中

In [ ]:

# # 1)在loans表中增加一列,用数字来代替贷款状态,方便后续分析loan_status = {'B':1,'D':1,'A':0,'C':2}
locals()['loans']['loan_status'] = locals()['loans']['status'].map(loan_status)
print(locals()['loans'])# # 2) 进行列添加
'''
通过disp表连接loans表和clients表
'''
data_1 = pd.merge(locals()['loans'],locals()['disp'],on='account_id',how='left')
data_2 = pd.merge(data_1,locals()['clients'],on='client_id',how='left')
data_3 = data_2[data_2.type == '所有者']# # 增加年龄列
# # # 首先将字符串转换为datetime时间序列,再计算出年龄
data_3['age_temp'] = (pd.to_datetime(data_3['date'])-pd.to_datetime(data_3['birth_date']))
data_3['age'] = data_3['age_temp'].map(lambda x:round(x.days/365,0))# # 连接card表
data_4 = pd.merge(data_3,locals()['card'],on='disp_id',how='left')

2.状态信息 → 将 相关列添加

In [ ]:

# # 1)添加地区状态信息
data_5 = pd.merge(data_4,locals()['district'],left_on='district_id',right_on='A1',how='left')# # # 将需要的列筛选出来
trans_clients_district = data_5[['account_id','amount','duration','payments','loan_status','type_y','sex','age', 'district_id','GDP','A4','A10','A11','A12','A13','A14','A15','a16']]# # 2) 客户个人经济状况信息
trans_loans = pd.merge(locals()['trans'],locals()['loans'],on='account_id')
print(trans_loans.head())
print(list(trans_loans))
'''
合并后出现的列名后带_x和_y是因为合并的两张表中有有相同的列名,为示区分加上的后缀;
_x表示的是合并前'trans'表中的列,_y表示的是合并前'loans'表中的列
'''

3.筛选数据

In [ ]:

# # 筛选出贷款前一年的交易数据
trans_loans['date_x'] = pd.to_datetime(trans_loans['date_x'])
trans_loans['date_y'] = pd.to_datetime(trans_loans['date_y'])# # 将 amount_x 和 balance 由字符串类型,去掉$符号和逗号分隔,转化为数值类型
trans_loans['amount_x'] = trans_loans['amount_x'].apply(lambda x:int(x.strip('$').replace(',','')))
trans_loans['balance'] = trans_loans['balance'].apply(lambda x:int(x.strip('$').replace(',','')))# # 筛选出放款日期按1年内至前一天的交易记录
trans_loans = trans_loans[(trans_loans['date_x']<trans_loans['date_y'])&((trans_loans['date_x']+datetime.timedelta(days=365))>trans_loans['date_y'])]# # 筛选用户前一年内结息总额
trans_loans_1 = trans_loans[trans_loans['k_symbol']=='利息所得']
trans_loans_1 = pd.DataFrame(trans_loans_1.groupby('account_id')['amount_x'].sum())
trans_loans_1.columns = ['interest']# # 筛选在本行是否由养老金和房屋贷款
trans_loans_2 = trans_loans[(trans_loans['k_symbol']=='养老金')|(trans_loans['k_symbol']=='房屋贷款')]# # 标记是否在本行有房屋贷款
trans_loans_2 = pd.DataFrame(trans_loans_2.groupby('account_id')['k_symbol'].count())
trans_loans_2['house_loan'] = '1'
del trans_loans_2['k_symbol']# # 筛选客户一年内收入和支出(总和)
print(trans_loans_2.head())
trans_loans_3 = pd.DataFrame(trans_loans.pivot_table(values='amount_x',index='account_id',columns='type'))
trans_loans_3.columns = ['out','income']# # 筛选客户一年内余额的均值和标准差
trans_loans_4 = pd.DataFrame(trans_loans.groupby('account_id')['balance'].agg(['mean','std']))
trans_loans_4.columns = ['balance_mean','balance_std']# # 合并数据
data_temp = pd.merge(trans_loans_1,trans_loans_2,how='left',left_index=True,right_index=True)
data_temp = pd.merge(data_temp,trans_loans_3,left_index=True,right_index=True)
data_temp = pd.merge(data_temp,trans_loans_4,left_index=True,right_index=True)
print(len(data_temp)) # 查看数据条数是否与贷款表条数一致
data_model = pd.merge(trans_clients_district,data_temp,left_on='account_id',right_index=True)
print(data_model)

(四) 模型构建

1. 数据清洗 及 变量选择

1) 查看数据缺失情况

In [ ]:

print(data_model.isnull().sum()/len(data_model))
'''
分析缺失情况、原因及处理:总共有 列存在缺失信息type_y:缺失信息接近75%,信息缺失过多,删除列;A12 和 A15:A12 1995年失业率 和 A15 1995犯罪率(千人) 有极小部分数据缺失,因为是连续数据,使用中位数填充;house_loan:是否有房屋贷款,缺失值为没有房屋贷款,填充字符‘0’
'''

2) 数据处理

In [ ]:

del data_model['type_y']
data_model['A12'].fillna(data_model['A12'].median(),inplace=True)
data_model['A15'].fillna(data_model['A15'].median(),inplace=True)
data_model['house_loan'].fillna('0',inplace=True)

3) 对变量进行分类

In [ ]:

# # # <1> 因变量
y = 'loan_status'# # # <2> 连续变量
var_c =  ['amount', 'duration', 'payments', 'GDP','A4', 'A10', 'A11', 'A12', 'A13', 'A14', 'A15', 'a16', 'age','interest', 'out', 'income', 'balance_mean','balance_std']# # # <3> 分类变量
var_d = ['sex','house_loan']# # # # 对 sex 和 house_loan 两个分类变量二值化,方便分析
data_model['sex_kind'] = data_model['sex'].map({'男':1,'女':0})
data_model['house_loan_kind'] = data_model['house_loan'].map({'1':1,'0':0})

4) 使用 热力图 查看个变量间的关系

In [ ]:

import matplotlib.pyplot as plt
import seaborn as snscorr = data_model[var_c+var_d].corr()
plt.figure(figsize=(12,9))  # 指定宽和高(单位:英寸)
sns.heatmap(corr,vmax=1,annot=True) # vmax设置热力图颜色取值的最大值;annot设置是否显示格子数字
plt.show()

Image Name

5) 选择最终模型使用的变量

In [ ]:

'''
从热力图观察可知:贷款信息、居住地信息、经济状况信息内各变量具有高相关性,对变量进行筛选及转换1. 贷款信息中:保留amount2. 居住地信息:1) 采用人均GDP,即对变量进行转换;2) 采用失业增长率3. 经济状况信息:1) 客户放款前近一年总结息(反应实际存款数额)2) 收支比(反应客户消费水平)3) 可用余额变异系数(反应客户生活状态稳定系数)
'''data_model['GDP_per'] = data_model['GDP']/data_model['A4']  # 人均GDP人民生活水平的一个标准
data_model['unemployment'] = data_model['A13']/data_model['A12']    # 失业增长率一定程度上反应经济增长率
data_model['out/in'] =  data_model['out']/data_model['income']  # 消费占收入比重,一定程度反应客户消费水平
data_model['balance_a']  =  data_model['balance_std']/data_model['balance_mean']    # 可用余额变异系数
var = ['account_id','sex_kind','age','amount','GDP_per','unemployment','out/in','balance_a']
# print(data_model)
# print(list(data_model))

2. 逻辑回归构建

In [ ]:

data_model = data_model[var+[y]]
for_predict = data_model[data_model[y]==2]  # loan_status 为2表示状态C,即:待定
data_model = data_model[data_model[y]!=2]# # 定义自变量和因变量
import numpy as np
X = data_model[var]
Y = data_model[y]# # 将样本数据建立训练集和测试集,测试集取20%的数据
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, random_state = 1234)

3. 建模(使用逻辑回归L1正则化参数)

In [ ]:

from sklearn.linear_model import LogisticRegressionLR = LogisticRegression(penalty='l1',solver='liblinear')
var_temp = ['sex_kind','age','amount','GDP_per','unemployment','out/in','balance_a']
x_train_temp = x_train[var_temp]
clf = LR.fit(x_train_temp,y_train) # 拟合x_test_temp = x_test[var_temp]
y_pred = clf.predict(x_test_temp)   # 预测测试集数据
test_result = pd.DataFrame({'account_id':x_test['account_id'],'y_predict':clf.predict(x_test_temp)})
new_test_result = test_result.reset_index(drop=True)
print(test_result)  # 输出测试集中 account_id 对应的贷款状态预测
print(new_test_result)  # 输出测试集中 account_id 对应的贷款状态预测print(clf.coef_)    #查看各变量的回归系数

4. 建模结果评价

In [ ]:

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
'''
模型的精确率0.87,召回率0.84,f1_score为0.82
'''

5. 绘制ROC曲线

In [ ]:

from sklearn.metrics import roc_curve, auc
fpr, tpr, threshold = roc_curve(y_test, y_pred)
roc_auc = auc(fpr, tpr)
plt.plot(fpr, tpr, color='darkorange',label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy',  linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC_curve')
plt.legend(loc="lower right")
plt.show()

Image Name

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 解决vue中样式不起作用:样式穿透/深度选择器(/deep/)

    原因1:组件内部使用组件,添加了scoped属性原因2:动态引入html,也添加了scoped属性; 原因3:非以上两种; 一、添加了scoped属性: Vue中的scoped属性的效果主要是通过PostCss实现的。以下是转译前的代码: <style lang="less" scoped>.example{color:red;} …...

    2024/4/24 12:04:09
  2. 一场噩梦可能从SIM卡交换攻击开始

    SIM交换攻击是一种复杂的、多阶段的犯罪行为,具有很大的潜在的破坏性。今年一月普林斯顿大学昨日发表的一项学术研究指出,美国五家主要的预付费无线运营商,极易受到SIM卡劫持攻击。其特指攻击者致电移动服务提供商,诱使电信企业员工将电话号码更改为攻击者控制的SIM卡,使之…...

    2024/4/24 12:04:09
  3. 图的基本概念及图演算法

    文章目录一,图的定义的基本术语二,邻接(Adjacency)2.1 列表表示(Adjacency-List)2.2 矩阵表示(Adjacency-Matrix)三,图的遍历3.1 深度优先搜索(DFS)3.1.1 深度优先搜索遍历算法的实现3.1.2 DFS 算法效率分析3.1.3 非连通图的遍历3.2 广度优先搜索(BFS)3.2.1 实现和…...

    2024/4/24 12:04:14
  4. DNS的作用,防御

    简述dns作用1.DNS服务器是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址…...

    2024/4/24 12:04:07
  5. Qt之制作中国象棋

    准备工作熟悉中国象棋规则 找一组中国象棋棋盘以及棋子的图片(如果想自己写棋盘和棋子也可以) 了解绘图事件,定时器事件和鼠标事件等的一些基本用法功能实现 1、widget.h 在头文件里添加后面会用到的函数以及变量 #ifndef WIDGET_H #define WIDGET_H #include <QWidget&g…...

    2024/4/24 12:04:05
  6. SecureCRT设置颜色(背景、字体)

    终端有一个好的配色,不仅能保护自己的眼睛,也能给人一个好心情,本配色方案适合任意一种SSH客户端软件.设置背景颜色Options => Sessions options => Terminal => Emulation,在 Terminal下拉列表下选择Linux,勾选 ANSI Color。(Use color scheme不要勾选)默认的…...

    2024/4/27 3:19:19
  7. 大数据总结【第一章:大数据概述】

    简答题 什么是大数据 大数据是指无法在容许的时间内用常规软件工具对其内容进行抓取,管理和处理的 数据。 大数据特点4V 数据量大(Volume),数据类型繁多(Variety),处理速度快(Velocity).价值密度低(Value) 大数据对思维方式的重要影响 大数据时代对思维方式的重要影响是三种思…...

    2024/5/2 23:31:26
  8. 国内外CDN服务商CNAME特征串调研

    总结此篇博文给特定需求的人群使用,通过CNAME的某些特征串,确定其使用的是哪家CDN,大多是国外的CDN,国内的CDN厂商只有几个,格式为:【来源地址】+【截图】+【猜测的特征串】,整体博文较长,如果不是想寻根究底的可以直接参照总结的表格即可,不保证每个的正确性,表示并…...

    2024/4/16 0:26:15
  9. 基于深度学习的嗓音识别分类系统设计过程

    零基础实现歌唱嗓音识别分类系统) 第一章 绪论 本文描述的是一个深度学习的小白如何开发一个嗓音识别评判系统的过程、从零基础开始学习,相关学习资料我会把百度云链接放在上面,如果获取过期或者失败,评论区留言,我会补发。这是博主的第一篇文章,写的不好的地方请见谅! 明…...

    2024/4/19 16:04:53
  10. 用 python 绘制玫瑰花

    用 python 绘制玫瑰花 用 python 绘制玫瑰花。需求:用 Python 绘制一朵玫瑰花,献给你喜欢的人; 输入:你的想象力;输出:玫瑰花。 代码如下: # RoseDraw.py import turtle as t # 定义一个曲线绘制函数 def DegreeCurve(n, r, d=1):for i in range(n):t.left(d)t.circle(r…...

    2024/4/15 4:46:37
  11. 乐观锁和悲观锁的概念及适用场景

    一、基本概念 二、实现方式(含实例) 1、CAS(Compare And Swap) 2、版本号机制 三、优缺点和适用场景 1.基本概念: 乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。 乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是…...

    2024/4/15 4:46:37
  12. count 中使用if语句

    SELECT b.tax_pch,COUNT(IF(b.tax_status IN(0,1,2),TRUE ,NULL))AS 总人数,COUNT(IF(b.tax_status IN (0,1),TRUE ,NULL))AS 未报人数,COUNT(IF(b.tax_status = 2,TRUE ,NULL))AS 已报人数,b.tax_model,b.tax_company,SUM(IF(b.tax_status IN(0,1,2),tax_pay ,0) ) AS 应报税金…...

    2024/4/15 4:46:35
  13. Vue第一天-Vue常用指令

    1、v-if指令 根据条件的真假,确定是否在页面显示当前元素。<h1 v-if=true>8888888888888</h1>2、v-show指令 根据条件的真假,确定是否在页面显示当前元素。 和1的区别是 show已经渲染在页面 它改变的是display的值;而if则是没有在页面显示。如果某个标签反复出现…...

    2024/4/27 12:38:45
  14. springboot服务替换jar包中内容

    1、创建一个临时目录mkdir temp 2、将jar添加到目录cp ***.jar temp 3、解压jar -xvf ***.jar更新解压后的文件 4、删除临时目录中的jar包,重新压缩打包rm -rf ***.jarjar -cfM0 ***.jar ./-0 产生jar包时不对其中的内容进行压缩处理 -M 不产生所有文件的清单文件(Manifes…...

    2024/4/27 3:53:11
  15. (python version) 剑指offer 23. 链表中环的入口节点

    题目描述 给定一个链表,判断链表中是否有环。(Leetcode 141. 环形链表) 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。 来源:力扣(LeetCode)解题思路对应剑指offer 23。 确定一个链…...

    2024/4/24 12:04:06
  16. mysql学习笔记之联合查询(进阶九)

    USE myemployees #进阶九:联合查询 /* union 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句二 union …… 特点: 查询列数一致,类型相同,顺序一样 默认去重,(union all可不去重) */ #引入案例:查询部门编号>90 或邮箱包含a的员工信息 SELEC…...

    2024/4/24 12:04:02
  17. 开发模式之策略模式(使用场景:权限管理)

    之前公司技术分享会时,一位大神分享了一个公司app内,canvas图谱的功能。使用工厂模式将所有需要用到的方法、对象封装好,听着惊为天人。想想如果是自己去做这个功能,感觉做的没有人家好~~技术没有人家那么强,那我们私底下就赶紧来学习!!之前面试的时候,有一个面试官问我…...

    2024/4/24 12:04:07
  18. 视频超分——02 VESPCN

    Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation 参考资料:论文内容:https://blog.csdn.net/u014447845/article/details/89928794 Github/pytorch:https://github.com/JuheonYi/VESPCN-PyTorch主要创新点将亚像素卷积的效率优势与…...

    2024/4/24 12:04:00
  19. Socket.io部署遇到的坑

    问题: 服务端使用了namespace来隔离作用域,也没增加其它配置 一开始使用ip+端口的方式与服务端连接,一切正常,后来采用nginx部署的方式,就凉凉了。 错误信息 Socket.io connection error: Invalid namespace.排查过程 首先检查nginx的配置文件,确保支持socket连接详:http…...

    2024/4/24 12:03:59
  20. python面向对象之实验一布置新房

    2.2 步骤分析 需求涉及两个事物:房子 和 家具,故被案例涉及两个类:房子类 和 家具类。 2.2.1 定义类房子类实例属性房子地理位置 房子占地面积 房子剩余面积 房子内家具列表实例方法容纳家具显示房屋信息家具类家具名称 家具占地面积2.2.2 创建对象并调用相关方法 2.3 代码实…...

    2024/4/24 12:03:58

最新文章

  1. pmp培训机构哪个比较好,求推荐-

    寻找一个自己认为比较好的PMP培训机构千万不要盲目&#xff0c;先在网上看看大家都推荐什么&#xff0c;看一下各个机构的老学员反馈&#xff0c;这些对我们的选择有非常大的帮助&#xff0c;最起码有了一些风评上的参考&#xff0c;现状就是目前线上机构的竞争比较大&#xff…...

    2024/5/3 1:12:00
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 算法打卡day29

    今日任务&#xff1a; 1&#xff09;1005.K次取反后最大化的数组和 2&#xff09;134.加油站 3&#xff09;135.分发糖果 1005.K次取反后最大化的数组和 题目链接&#xff1a;1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 给定一个整数数组 A&…...

    2024/4/30 15:22:05
  4. Python语法总结:not(常出现错误)

    0、not是什么 在python中not是逻辑判断词&#xff0c;用于布尔型True和False之前 a not Ture # a False b not False # b True1、not的用法 &#xff08;1&#xff09;判断语句 if not a:# 如果a是False&#xff0c;执行的语句&#xff08;2&#xff09;判断元素是否在…...

    2024/5/2 5:16:56
  5. JVM总结

    类加载器与类的加载过程 ClassLoader只负责class文件的加载&#xff0c;至于它是否可以运行&#xff0c;则由Execution Engine决定。 加载阶段 通过一个类的全限定名获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成…...

    2024/5/2 2:32:37
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57