【无标题】

产品表

#!/usr/bin/env python
# coding: utf-8

# In[75]:


import pandas as pd
import numpy as np

import warnings
warnings.filterwarnings('ignore')

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('max_colwidth', 100)


# ### A产品表1

# In[76]:


g_data = pd.read_csv('g.csv')
g_data.head()


# In[77]:


g_columns = ['prod_code', '计价类型', '周期类型', '模式', '风险等级', '是否滚存', '是否允许变更分红方式', '产品品种', '持有天数', '数据日期']


# In[78]:


g_data.columns = g_columns


# In[79]:


g_data.head()


# In[80]:


g_data.info()


# In[81]:


g_data['prod_code'].apply(lambda x:x[:5]).nunique()


# ### A产品表2

# In[82]:


k_data = pd.read_csv('k.csv')
k_data.head()


# In[83]:


k_columns = ['prod_code', '募集方式', '管理方式', '业务模式', '收益特点', '期限', '投资模式', '预期收益率', '最高收益率', '最低收益率', '展示等级', '数据日期']


# In[84]:


k_data.columns = k_columns


# In[85]:


k_data.head()


# In[86]:


k_data.info()


# In[87]:


k_data['prod_code'].apply(lambda x: x[:5]).nunique()


# In[88]:


a_prod = pd.merge(g_data, k_data, on=['prod_code', '数据日期'], how='outer')


# In[89]:


a_prod.head()


# In[90]:


a_prod['prod_class'] = 'A'


# In[91]:


a_prod.info()


# ### B产品表1

# In[92]:


h_data = pd.read_csv('h.csv')
h_data.head()


# In[93]:


h_columns = ['prod_code', '计价类型', '周期类型', '模式', '风险等级', '是否允许变更分红方式', '产品品种', '模式2', '数据日期']


# In[94]:


h_data.columns = h_columns


# In[95]:


h_data.head()


# In[96]:


h_data.info()


# In[97]:


h_data['prod_code'].apply(lambda x:x[:3]).unique()


# ### B产品表2

# In[98]:


l_data = pd.read_csv('l.csv')
l_data.head()


# In[99]:


l_columns = ['prod_code', '募集方式', '管理方式', '业务模式', '收益特点', '期限', '投资模式', '数据日期']


# In[100]:


l_data.columns = l_columns


# In[101]:


l_data.head()


# In[102]:


l_data.info()


# In[103]:


l_data['prod_code'].apply(lambda x:x[:3]).unique()


# In[104]:


b_prod = pd.merge(h_data, l_data, on=['prod_code', '数据日期'], how='outer')


# In[105]:


b_prod['prod_class'] = 'B'


# In[106]:


b_prod.info()


# In[107]:


b_prod.nunique()


# ### C产品表1

# In[108]:


i_data = pd.read_csv('i.csv')
i_data.head()


# In[109]:


i_columns = ['prod_code', '计价类型', '周期类型', '模式', '风险等级', '是否允许变更分红方式', '份额冻结比率', '产品品种', '持有天数', '数据日期']


# In[110]:


i_data.columns = i_columns


# In[111]:


i_data.head()


# In[112]:


i_data.info()


# In[113]:


i_data['prod_code'].apply(lambda x:x[:4]).unique()


# ### C产品表2

# In[114]:


m_data = pd.read_csv('m.csv')
m_data.head()


# In[115]:


m_columns = ['prod_code', '募集方式', '管理方式', '业务模式', '收益特点', '期限', '投资模式', '预期收益率', '展示等级', '数据日期']


# In[116]:


m_data.columns = m_columns


# In[117]:


m_data.head()


# In[118]:


m_data.info()


# In[119]:


m_data['prod_code'].apply(lambda x:x[:4]).unique()


# ### C 产品总表

# In[120]:


c_prod = pd.merge(i_data, m_data, on=['prod_code', '数据日期'], how='outer')


# In[121]:


c_prod['prod_class'] = 'C'


# In[122]:


c_prod.head()


# In[123]:


c_prod.info()


# ### D产品表

# In[124]:


j_data = pd.read_csv('j.csv')
j_data.head()


# In[125]:


j_columns = ['prod_code', '计价类型', '周期类型', '模式', '风险等级', '是否允许变更分红方式', '收益计息基数', '最低收益率', '最高收益率', 
             '产品面值', '发行价格', '预期收益率', '持有天数', '数据日期']


# In[126]:


j_data.columns = j_columns


# In[127]:


j_data.head()


# In[128]:


d_prod = j_data.copy()


# In[129]:


d_prod['prod_class'] = 'D'


# In[130]:


d_prod.info()


# In[131]:


d_prod.nunique()


# In[132]:


a_prod.columns


# In[133]:


b_prod.columns


# In[134]:


c_prod.columns


# In[135]:


d_prod.columns


# ### A产品流水表

# In[144]:


n_data = pd.read_csv('n.csv')
n_data.head()


# In[145]:


n_columns = ['流水号', '业务代码', '渠道标识', 'core_cust_id', 'prod_code', '净值', '申请金额', '资金状态', '交易状态', '总金额', '交易日期']


# In[146]:


n_data.columns = n_columns


# In[147]:


n_data.head()


# In[148]:


n_data['prod_class'] = 'A'


# In[224]:


n_data.info()


# In[225]:


n_data['交易日期'].min(), n_data['交易日期'].max()


# In[226]:


n_data.describe()


# ### B产品流水表

# In[149]:


o_data = pd.read_csv('o.csv')
o_data.head()


# In[150]:


o_columns = ['流水号', '业务代码', '渠道标识', 'core_cust_id', 'prod_code', '净值', '申请金额', '交易状态', '资金状态', '总金额', '超额管理费', '交易日期']


# In[151]:


o_data.columns = o_columns


# In[152]:


o_data['prod_class'] = 'B'


# In[153]:


o_data.head()


# In[221]:


o_data.info()


# In[227]:


o_data.nunique()


# In[222]:


o_data['交易日期'].min(), o_data['交易日期'].max()


# In[223]:


#净值里面有异常值
o_data.describe()


# ### C产品流水表

# In[154]:


q_data = pd.read_csv('q.csv')
q_data.head()


# In[155]:


q_columns = ['流水号', '业务代码', '渠道标识', 'core_cust_id', 'prod_code', '净值', '申请金额', '资金状态', '交易状态', '交易日期']


# In[156]:


q_data.columns = q_columns


# In[157]:


q_data['prod_class'] = 'C'


# In[158]:


q_data.head()


# In[219]:


q_data.info()


# In[220]:


q_data['交易日期'].min(), q_data['交易日期'].max()


# In[ ]:





# In[ ]:





# ### D产品流水表

# In[159]:


p_data = pd.read_csv('p.csv')
p_data.head()


# In[160]:


p_columns = ['流水号', '业务代码', '渠道标识', 'core_cust_id', 'prod_code', '净值', '申请金额', '折扣率', '交易状态', '资金状态', '费率', '交易日期']


# In[161]:


p_data.columns = p_columns


# In[162]:


p_data['prod_class'] = 'D'


# In[163]:


p_data.head()


# In[216]:


p_data.info()


# In[218]:


p_data['交易日期'].min(), p_data['交易日期'].max()


# In[ ]:





# In[ ]:





# ### A产品基本信息+流水表

# In[180]:


A_df = pd.merge(a_prod, n_data, on=['prod_code', 'prod_class'], how='outer')


# In[181]:


A_df.head()


# In[182]:


A_df.info()


# In[183]:


A_df.nunique()


# ### B产品基本信息+流水表

# In[184]:


B_df = pd.merge(b_prod, o_data, on=['prod_code', 'prod_class'], how='outer')


# In[185]:


B_df.head()


# In[186]:


B_df.info()


# In[187]:


B_df.nunique()


# In[ ]:





# In[ ]:





# ### C产品基本信息+流水表

# In[188]:


C_df = pd.merge(c_prod, q_data, on=['prod_code', 'prod_class'], how='outer')


# In[189]:


C_df.head()


# In[190]:


C_df.info()


# In[191]:


C_df.nunique()


# In[ ]:





# ### D产品基本信息+流水表

# In[192]:


D_df = pd.merge(d_prod, p_data, on=['prod_code', 'prod_class'], how='outer')


# In[193]:


D_df.head()


# In[194]:


D_df.info()


# In[195]:


D_df.nunique()


# In[198]:


prod_df = pd.concat([A_df, B_df, C_df, D_df], ignore_index=True)


# In[204]:


prod_df.head(20)


# In[200]:


prod_df.info()


# In[201]:


prod_df.nunique()


# In[ ]:


#产品品种、份额冻结比率,只有一个值,可以删除

#A/B/C/D客户的重合度
a_num = A_df['core_cust_id'].value_counts().index.tolist()


# In[232]:


b_num = B_df['core_cust_id'].value_counts().index.tolist()
c_num = C_df['core_cust_id'].value_counts().index.tolist()
d_num = D_df['core_cust_id'].value_counts().index.tolist()


# In[235]:


len(set(a_num) & set(b_num)), len(set(a_num) & set(c_num)), len(set(a_num) & set(d_num)), len(set(b_num) & set(c_num)), len(set(d_num) & set(b_num)), len(set(c_num) & set(d_num))


# In[237]:


len(set(a_num) & set(b_num) & set(c_num) & set(d_num)) 


# In[238]:


len(set(a_num) | set(b_num) | set(c_num) | set(d_num)) 


# ### 客户信息表

# In[241]:


d_data = pd.read_csv('d.csv')
d_data.head()


# In[242]:


d_columns = ['core_cust_id', '性别', '客户等级', '年龄']


# In[243]:


d_data.columns = d_columns


# In[244]:


d_data.head()


# In[245]:


d_data.info()


# In[246]:


d_data.nunique()


# ### 客户风险表

# In[247]:


e_data = pd.read_csv('e.csv')
e_data.head()


# In[248]:


e_columns = ['core_cust_id', '客户风险等级', '评估日期']


# In[249]:


e_data.columns = e_columns


# In[250]:


e_data.head()


# In[251]:


e_data.info()


# In[281]:


e_data.nunique()


# In[253]:


e_data['客户风险等级'].value_counts()


# ### F资产信息表

# In[267]:


#去除千分位的逗号:df = df.applymap(lambda x: x.replace(',', ''));或者用下面方法
f_data = pd.read_csv('f.csv', thousands=',')
f_data.head()


# In[268]:


f_columns = ['core_cust_id', '客户编号创建日期', '定期季日均', '大额存单季日均', 'A理财产品季日均', '代销资管季日均', '代销基金季日均', '定期时点余额',
             '大额存单时点余额', 'A理财产品时点余额', '代销资管时点余额', '代销基金时点余额', '定期月日均', '大额存单月日均', 'A理财产品月日均', '代销资管月日均', 
             '代销基金月日均', '定期年日均', '大额存单年日均', 'A理财产品年日均', '代销资管年日均', '代销基金年日均', '数据日期']


# In[269]:


f_data.columns = f_columns


# In[270]:


f_data.head()


# In[271]:


f_data.info()


# In[272]:


f_data.nunique()


# In[279]:


#A产品的core_cust_id有多少
len(set(a_num))


# In[280]:


f_data[~f_data['A理财产品年日均'].isnull()].nunique()


# In[282]:


#corr_f = f_data.corr().abs()
#high_f = np.where(corr_f > 0.999)
#high_f;


# In[284]:


#f_data.corr();


# In[286]:


r_data = pd.read_csv('r.csv')
r_data.head()


# In[287]:


r_columns = ['id编码', 'core_cust_id', '点击事件类型', 'prod_code', '点击时间']


# In[288]:


r_data.columns = r_columns


# In[289]:


r_data.head()


# In[290]:


r_data.info()


# In[291]:


r_data.nunique()


# In[293]:


len(a_num), len(b_num), len(c_num), len(d_num)











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值