管理学大师德鲁克曾说过:“如果你不能衡量它,那么你就不能有效增长它。”所以为了推进业务的发展,我们必须对我们的用户有清晰的认识。本文通过Python分析拍拍贷互联网金融数据训练营中提供的数据集,构建用户画像。
一.提出问题
根据给定的数据构建包含性别,学历,是否首标,年龄分布的用户画像。
二.数据处理
将数据导入后,依次进行重复值,缺失值以及异常值的检查。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
#为了解决中文标签无法显示的问题
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['SimHei']#指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
#导入数据
os.chdir('C:\\Users\\adm\\Desktop\\')
data_LC=pd.read_csv('LC.csv')
data_LC.info()
data_LC.describe()
data_LC = LC.dropna(how='any')
可以发现数据很干净
!
三.数据分析
#分析用户画像(男女,年龄,学历,是否首标)
male=data_LC[data_LC['性别']=='男']
female = data_LC[data_LC['性别']=='女']
sex_data_LC=(male['借款金额'].sum(),female['借款金额'].sum())
sex_id=('男','女')
plt.figure(figsize=(18,6))
plt.subplot(1,3,1)
plt.pie(sex_data_LC, labels=sex_id, autopct='%.1f%%')
#为了解决中文标签无法显示的问题
#新老客户分析
new= data_LC[data_LC['是否首标']=='是']
old=data_LC[data_LC['是否首标']=='否']
newold_data_LC=(new['借款金额'].sum(),old['借款金额'].sum())
newold_id=('新客户','老客户')
plt.subplot(1,3,2)
plt.pie(newold_data_LC,labels=newold_id,autopct='%.1f%%')
#学历分析
ungraduate=data_LC[data_LC['学历认证']=='未成功认证']
graduate=data_LC[data_LC['学历认证']=='成功认证']
education_data_LC=(ungraduate['借款金额'].sum(),graduate['借款金额'].sum())
education_id=('大专以下学历','大专及以上学历')
#因为LC的数据字典中提到有学历认证的意味着学历是大专及以上学历
plt.subplot(1,3,3)
plt.pie(education_data_LC,labels=education_id,autopct='%.1f%%')
#年龄分析
#因为已经知道借款人最小年龄为17岁,最大年龄为56岁.
ageA = data_LC[(data_LC['年龄'] >= 15) & (data_LC['年龄'] < 20)]
ageB = data_LC[(data_LC['年龄'] >= 20) & (data_LC['年龄'] < 25)]
ageC = data_LC[(data_LC['年龄'] >= 25) & (data_LC['年龄'] < 30)]
ageD = data_LC[(data_LC['年龄'] >= 30) & (data_LC['年龄'] < 35)]
ageE = data_LC[(data_LC['年龄'] >= 35) & (data_LC['年龄'] < 40)]
ageF = data_LC[data_LC['年龄'] >= 40]
age = (ageA, ageB, ageC, ageD, ageE, ageF)
age_total =data_LC[data_LC['年龄']>=15]['借款金额'].sum()
age_percent =[]
for i in age:
tmp = i['借款金额'].sum()/age_total
age_percent.append(tmp)
age_percent= [0.0050415618524005884, 0.1776309517499778, 0.3469907065432484, 0.2387279106530634, 0.12128374034498282, 0.11032512885632696]
age_idx = ['15-20', '20-25', '25-30', '30-35', '35-40', '40+']
plt.figure(figsize=(15, 8))
plt.bar(age_idx, age_percent)
for (a, b) in zip(range(0,6), age_percent):
plt.text(a, b+0.001, '%.2f%%' % (b * 100), ha='center', va='bottom', fontsize=10)
plt.title('借款金额随年龄分布情况')
plt.show()
由此得出:
1.男性客户的贡献的贷款金额占到了69%,可能的原因是男性更倾向于提前消费且贷款金额较大。
2.非首标的金额占比达到66%,说明用户倾向于多次使用,产品粘性较高。
3.大专以下学历的贷款金额更多,但是由于可能有很多用户并未认证学历,所以数据存在出入。
4.年龄段在25-30岁之间的借款金额最多,而20-35岁的人群占比超过75%,是该产品的主力消费人群。