电商用户画像分析

1 项目背景

1.1 用户画像概念

用户画像是什么?

用户画像是真实用户的虚拟代表,是建立在一系列真实数据之上的目标用户模型,它的本质是用户特征的“可视化”,抽象出相应的标签,拟合而成的虚拟的形象,主要包含自然属性、社会属性、行为属性及心理属性。需要注意的是,用户画像是将一类有共同特征的用户聚类分析后得出的,因而并非针对某个具像的特定个人。

用户画像有什么用?

  • 帮助我们更加立体认识用户,培养用户思维、洞察用户的需求,进而优化完善产品,提升用户体验;
  • 帮助我们更加精准进行决策,通过市场数据推论到产品的定位人群,对市场细分和用户分群,做到精细化运营。

1.2 项目说明

本文利用京东平台真实案例,进行实操分析。类似京东这个量级的平台,无论从产品类目和受众用户都是比较庞大,促使现今电商平台主推千人千面,我们这里针对京东电商平台小家电数据进行用户画像。

1.3 提出问题

这里我们模拟一个业务场景,如下:

最近平台小家电类目的产品浏览量、订单数量、搜索数量等都有所下降,运营部门计划对小家电类目进行一次季末促销活动,希望你能针对小家电消费用户特征给出建议?

1.4 数据理解

1)数据来源京东平台用户信息和订单信息(2020年8月13日-8月19日)
2) 数据字段说明
①用户信息表共有39个字段,共计325,816条记录。

  • 其字段名称对照关系如下:

②用户订单表共有24个字段,共计9,640,118条记录。

  • 其字段名称对照关系如下:
    在这里插入图片描述

2 数据处理

2.1 数据导入

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns 
# sns.set_style('whitegrid')
from scipy import stats
# 解决matplotlib中文乱码
from matplotlib.ticker import FuncFormatter
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

import warnings
warnings.filterwarnings('ignore')

user_df  = pd.read_csv('data/xjd_user_info.csv', sep='\t', encoding="utf-8", dtype=str)
user_cart_df  = pd.read_csv('data/xjd_user_cart.csv', sep='\t', encoding="utf-8", dtype=str)
order_df  = pd.read_csv('data/xjd_order_d.csv', sep='\t', encoding="utf-8", dtype=str)

2.2 转换特征属性

order_df['sale_qtty'] = order_df['sale_qtty'].astype('int')
order_df['sale_ord_valid_flag'] = order_df['sale_ord_valid_flag'].astype('int')
order_df['cancel_flag'] = order_df['cancel_flag'].astype('int')
order_df['self_ord_flag'] = order_df['self_ord_flag'].astype('int')

order_df['before_prefr_unit_price'] = order_df['before_prefr_unit_price'].astype('float')
order_df['after_prefr_unit_price'] = order_df['after_prefr_unit_price'].astype('float')
order_df['user_actual_pay_amount'] = order_df['user_actual_pay_amount'].astype('float')
order_df['total_offer_amount'] = order_df['total_offer_amount'].astype('float')

order_df.loc[:,'check_account_tm '] = pd.to_datetime(order_df.loc[:,'check_account_tm'])
order_df.loc[:,'sale_ord_tm'] = pd.to_datetime(order_df.loc[:,'sale_ord_tm'])
order_df.loc[:,'sale_ord_dt'] = pd.to_datetime(order_df.loc[:,'sale_ord_dt'])

2.3 重复值处理

#查看是否有重复值,方便后续连接两表
user_df['user_log_acct'].nunique()

2.4 数据一致化

# 将订单表和用户信息表合并
order_user_df = pd.merge(order_df, user_df, on='user_log_acct')
# 发现有重复值,在做用户属性的时候不需要有重复值,所以去除重复用户ID。

# 去除重复值,保留重复数据的第一个
user_info_df = order_user_df.drop_duplicates(subset=['user_log_acct'], keep='first') 

3 问题分析

这是一个非常典型的对用户画像进行构建和分析的需求,需求要求我们能够对促销活动进行一些建议,
一场促销活动必然包含以下几个部分:
● 促销活动的受众 -> 用户的基本属性
● 促销活动的时间 -> 用户的购物行为属性
● 促销活动的产品 -> 用户的偏好属性

我们可以从这些角度去勾勒出小家电消费群体的用户画像,从而可以进一步从用户特征本身来为促销活动提供建议和指导

因此根据业务问题,将其拆解为以下三个具体维度来分析:

  • 用户基本属性
  • 用户购买行为属性
  • 用户商品偏好

3.1 用户基本属性

基本属性包括自然属性和社会属性。

  • 自然属性:性别、年龄、地域等;
  • 社会属性:婚育状况、学历、职业等。

3.1.1 用户性别分布

数据表中不存在完全重复的数据,在性别字段上,共有三个值,分别是1,0,和-1,其中1代表男性,0代表女性,而-1则代表未识别。

user_sex_df = user_info_df.groupby('ulp_base_sex', as_index=False)['user_log_acct'].\
							agg({'ulp_base_sex_count':'count'})
# 女性用户
female_user = user_sex_df['ulp_base_sex_count'][1] 
# 男性用户
male_user = user_sex_df['ulp_base_sex_count'][2] 

labels = ['男','女']
Y = [male_user, female_user]
fig = plt.figure(figsize=(7,7))
pathches,l_text,p_text = plt.pie(Y, labels=labels, 
                                 autopct='%1.0f%%', 
                                 startangle=90,
                                 colors=['#6699cc','#cc6699'])
                                 
plt.title("平台用户的性别分布",size=24)

for i in p_text:      # 设置饼图内部的文字
    i.set_size(16)
    i.set_color('w')
    
for i in l_text:      #  # 设置饼图外部的文字
    i.set_size(16)
    i.set_color('r')
    
plt.show() 

在这里插入图片描述
分析:
从数据来看,小家电消费用户男性居多,占比约55%,但与女性用户数量差别不是特别大(10%)

3.1.2 用户年龄分布

表中用户年龄用数字指代,其中[1,2,3,4,5,6]分别代表[‘18岁以下’, ‘18~25岁’, ‘25~35岁’, ‘35~45岁’, ‘45~55岁’, ‘55岁以上’],而-1则代表未识别。

user_age_df = user_info_df.groupby('ulp_base_age', as_index=False)['user_log_acct']\
                .agg({'user_age_count':'count'})

# 类型转换&异常值处理
user_age_df['ulp_base_age'] = user_age_df['ulp_base_age'].astype('int')
user_age_df = user_age_df[user_age_df['ulp_base_age'] > 0]

x = ['18岁以下', '18~25岁',  '25~35岁', '35~45岁', '45~55岁', '55岁以上']
y = user_age_df['user_age_count']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')

plt.title("小家电消费用户的年龄分布", size=24) # 图标题

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

plt.bar(x, y, width=0.3, color='#6699CC')
# sns.barplot(x, y, palette="Greens_r")
for i in range(len(x)):
	plt.text(i,x[i]+3000,'%d'%x[i],ha='center',va='center')
plt.show()

ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhdTE0Mw==,size_16,color_FFFFFF,t_70)
分析:
用户多集中在25-35岁的年龄区间 ,25岁以下的年轻用户和45岁以上的中老年用户比较少。

3.1.3 用户地域分布

# 用户省份分布
user_region_df = user_info_df.groupby('ulp_addr_province', as_index=False)['user_log_acct'].\
                    agg({'region_count':'count'})

user_region_df.columns = ['province_name','region_count']
user_region_df = user_region_df.sort_values(by='region_count', ascending=False)
# 去除异常值
user_region_df = user_region_df[user_region_df['province_name'] != '-1']

x = user_region_df['province_name'][::-1] 
y = user_region_df['region_count'][::-1] 

plt.figure(figsize=(20,13), dpi=80)

plt.title("小家电消费用户的地域分布", size=24) # 图标题

plt.xlabel('region_count',size=16)
plt.ylabel('province_name',size=16)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

plt.barh(x, y, height=0.8, color='#6699CC')
plt.xlim(xmax=60000)
for i in range(len(x)):
	plt.text(x[i]+2000,i,'%d' %x[i],ha='center',va='center',size=12)
plt.show()

# 所在城市分布
user_city_df = user_info_df.groupby('ulp_addr_city', as_index=False)['user_log_acct']\
                .agg({'city_count':'count'})\
                .sort_values(by='city_count', ascending=False)

# 取前十个城市
user_city_df = user_city_df[:10]
x = user_city_df['ulp_addr_city'][::-1]
y = user_city_df['city_count'][::-1]

plt.figure(figsize=(20,8),dpi=80)

plt.title("小家电消费用户的城市分布", size=24) # 图标题

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整
 # height是水平条形图宽度
plt.barh(x, y, align='center', height=0.6, color='#6699CC')
plt.show()

在这里插入图片描述

分析:
小家电类目的消费者来自广东的最多,其次是江苏和北京。排名前五的地区均为东部沿海地区。在城市分布方面,北上广深 四个超一线城市占据消费用户数量的前四名。

3.1.4 用户受教育水平

用户受教育水平[1,2,3,4]代表的是[‘初中及以下’, ‘高中(中专)’, ‘大学(专科及本科)’, ‘研究生(硕士及以上’],-1代表用户教育水平未被识别

user_edu_df = user_info_df.groupby('ulp_base_education', as_index=False)['user_log_acct']\
                .agg({'edu':'count'})\
                .sort_values(by='ulp_base_education', ascending=True)
user_edu_df = user_edu_df[user_edu_df['ulp_base_education'] != '-1']
x = ['初中及以下', '高中(中专)', '大学(专科及本科)', '研究生(硕士及以上']
y = user_edu_df['edu']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')
plt.title("用户的学历分布", size=24)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

plt.bar(x, y, width=0.3, color='#6699CC')
# sns.barplot(x, y, palette="Oranges_r")
plt.show() 

uZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhdTE0Mw==,size_16,color_FFFFFF,t_70)
分析:
绝大多数小家电消费用户拥有大学及以上学历,说明该类目的消费者学历水平比较高

3.1.5 用户职业分布

用户职业[a,b,c,d,e,f,g,h]代表的是[‘金融从业者’, ‘医务人员’, ‘公务员/事业单位’, ‘白领/一般职员’, ‘工人/服务业人员’, ‘教师’, ‘互联网从业人员’, ‘学生’],-1代表用户职业未被识别。

user_profession_df = user_info_df.groupby('ulp_base_profession', as_index=False)['user_log_acct']\
                    .agg({'profession':'count'})\
                    .sort_values(by='ulp_base_profession', ascending=True)
user_profession_df = user_profession_df[user_profession_df['ulp_base_profession'] != '-1']

x = ['金融从业者', '医务人员', '公务员/事业单位', '白领/一般职员', '工人/服务业人员', '教师', '互联网从业人员', '学生']
y = user_profession_df['count']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')
plt.ylim(ymax=50000) # y轴坐标最大值设为50000
plt.title("用户的职业分布", size=24)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

# plt.bar(x, y, width=0.5, color='#6699CC')
sns.barplot(x, y)
plt.show() 

在这里插入图片描述分析:
职业一般以互联网行业或者其他行业的白领职业为主。

3.1.6 用户婚育情况

用户婚育状况中[0,1]代表的是[‘未婚’, ‘已婚’],-1代表用户婚育状况未被识别。

user_marriage_df = user_info_df.groupby('ulp_base_marriage', as_index=False)['user_log_acct']\
                    .agg({'marriage':'count'})\
                    .sort_values(by='marriage', ascending=False)
married_user = user_marriage_df['marriage'].iloc[0] # 取第0行
unmarried_user = user_marriage_df['marriage'].iloc[1] # 取第1行

labels = ['已婚', '未婚']
Y = [married_user, unmarried_user]
fig = plt.figure(figsize=(7,7))
pathches,l_text,p_text = plt.pie(Y, labels=labels, 
                                 autopct='%1.1f%%', 
                                 startangle=90,
                                colors=['#6699cc','#cc6699']) # startangle是图旋转角度
plt.title("用户的婚姻情况")

for i in p_text:      # 设置饼图内部的文字
    i.set_size(16)
    i.set_color('w')
    
for i in l_text:      #  # 设置饼图外部的文字
    i.set_size(16)
    i.set_color('r')
    
plt.show() 

在这里插入图片描述
分析:
已婚的用户占59.51%,未婚的用户占40.49%,已婚用户高于未婚用户的数量,但未婚人群也需要重视。

3.1.7 用户有孩可能性

user_child_df = user_info_df.groupby('ulp_base_child', as_index=False)['user_log_acct']\
                .agg({'child':'count'})\
                .sort_values(by='child', ascending=False)
                
 # 剔除未能识别的数据               
user_child_df = user_child_df[user_child_df['ulp_base_child'] != '-1']
very_high = user_child_df['child'].iloc[1] # 高,取第1行
high = user_child_df['child'].iloc[0] # 较高,取第0行
low = user_child_df['child'].iloc[2] # 较低,取第2行
very_low = user_child_df['child'].iloc[3] # 低,取第3行

labels = ['高', '较高', '较低', '低']
Y = [very_high, high, low, very_low]
fig = plt.figure(figsize=(7,7))
colors = ['tomato','lightskyblue','goldenrod','green']
explode = [0.1,0,0,0]
pathches,l_text,p_text = plt.pie(Y, labels=labels, 
                                 autopct='%1.1f%%', 
                                 startangle=90.
                                 colors=colors,
                                 explode=explode)
                                # startangle是图旋转角度

plt.title("用户的有孩可能性分布")

plt.legend(loc='best',fontsize=12)

for i in p_text:      # 设置饼图内部的文字
    i.set_size(16)
    i.set_color('w')
    
for i in l_text:      #  # 设置饼图外部的文字
    i.set_size(16)
    i.set_color('r')
    
plt.show() 

在这里插入图片描述

分析:
用户有孩的概率处于“较高”或“高”层级的人数约占56%,而处于“较低”和“低”层级上的人数约占44%,相比较来看,用户中有孩的可能性稍高一些。

总结: 从用户基本属性看出,小家电消费用户多为来自一线城市的男性,年龄在30岁左右,已婚已育,高学历,大部分从事互联网或其他白领行业。

3.2 用户购买行为属性

在订单数据中,每一条记录代表着一个订单下单个商品的购买情况,也就是说,同一个订单中购买的多个商品是按照商品种类分割成多条记录的,在观察用户购买商品的品类分布时,应该以订单为一个观察单位。

3.2.1 用户购买商品类目分布

选取有效订单(订单有效条件为:订单有效标志=1,订单取消标志=0,支付时间!=空值,优惠后单价>0)

# 订单维度的分析, 使用的是有效订单

vaild_order_user_df = order_user_df[(order_user_df['sale_ord_valid_flag'] == 1)
                          &(order_user_df['cancel_flag'] == 0)
                          &(order_user_df['check_account_tm'] != 0)
                          &(order_user_df['before_prefr_unit_price'] != 0)
                          &(order_user_df['user_actual_pay_amount'] != 0)] # 筛选有效订单
                          
user_order_cate_df = vaild_order_user_df.groupby('item_third_cate_name', as_index=False)['sale_ord_id']\
                    .agg({'cate_count':'count'})\
                    .sort_values(by='cate_count', ascending=False)

x = user_order_cate_df['item_third_cate_name']
y = user_order_cate_df['cate_count']

plt.figure(figsize=(20,15),dpi=80)
plt.xlabel('订单数量', size=20)
#plt.barh(x, y, align='center', color='#6699CC')
plt.title("小家电消费用户的细分品类订单量", size=24)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整
sns.barplot(y, x)
plt.show()

在这里插入图片描述

分析:
从订单数据上来看,电风扇是最受欢迎的品类。但是这个订单数据是八月中旬的数据,那时正值天气炎热,所以电风扇需求量比较大,为季节性产品。
如果促销活动是在夏天快要结束或者夏天结束之后进行,那应该选择第二受欢迎的 净水器、饮水机和加湿器等类目。

3.2.2 用户订单数量的日期分布

# 要按星期统计,所以要把时间按照星期几分组
# 先把时间变星期,再按星期分组

vaild_order_user_df_2 = vaild_order_user_df.copy()

# 将订单日期转化为星期,数字0—6,依次代表周日、周一、周二、周三、周四、周五、周六
vaild_order_user_df_2['order_time_week'] = vaild_order_user_df_2['sale_ord_tm'].apply(lambda x: x.strftime('%w'))

user_order_week_df = vaild_order_user_df_2.groupby('order_time_week', as_index=False)['sale_ord_id'].\
                                agg({'week_count':'count'}).sort_values(by='order_time_week', ascending=True)

user_order_week_df[0:1] # 0是周日
user_order_week_df[1:] # 1-6是周一到周六
# 两个dataframe上下拼接,也就是把后面的dataframe,追加到前面dataframe的末尾
user_order_week_df_2 = user_order_week_df[1:].append(user_order_week_df[0:1])
user_order_week_df_2

x = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
y = user_order_week_df_2['week_count']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')

plt.ylim(ymin=0,ymax=80000) # y轴坐标,最小值0.最大值设为60000
plt.title("小家电消费用户订单数量的日期分布", size=24)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

plt.plot(x, y, linewidth=2.0, color='#6699CC', linestyle='-')
plt.show() 

在这里插入图片描述
分析:
从整周的数据上来看,绝大部分订单都是在周二和周六完成的,而周三的订单量最少

3.2.3 用户订单数量的时间分布

# 把订单时间只保留小时
vaild_order_user_df_2['order_time_hms'] = vaild_order_user_df_2['sale_ord_tm']\
                                            .apply(lambda x: x.strftime('%H:00:00'))

user_order_hms_df = vaild_order_user_df_2.groupby('order_time_hms', as_index=False)['sale_ord_id'].\
                                agg({'hms_count':'count'}).sort_values(by='order_time_hms', ascending=True)

# 生成时间标签
hour_list = [x for x in range(0, 24)]

x = hour_list
y = user_order_hms_df['hms_count']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')

plt.ylim(ymin=0,ymax=20000) # y轴坐标,最小值0.最大值设为20000
plt.title("小家电消费用户订单数量的时间分布", size=24)

plt.xticks(x, size=16) # x轴显示内容及字体大小调整
plt.yticks(size=16) # y轴字体大小调整

plt.plot(x, y, linewidth=2.0, color='#6699CC', linestyle='-', clip_on=False)
plt.show() 

在这里插入图片描述
分析:
从单日的每小时订单量来 看,早上10点-11点,晚上20点-22点是用户大量下单的时间。因此建议在周二和周六的早十点和晚八点各推送一 次促销的活动。

3.2.4 用户的促销敏感度

# 按用户维度统计的量, 取全部用户的数据

cfv_sens_prom_df = user_info_df.groupby('cfv_sens_promotion', as_index=False)['user_log_acct']\
                    .agg({'cfv_sens_promotion_count':'count'})\
                    .sort_values(by='cfv_sens_promotion_count', ascending=False)

user_info_df_2 = user_info_df.copy()
user_info_df_2 = user_info_df_2[user_info_df_2['cfv_sens_promotion'] != '-1']

cfv_sens_prom_df_2 = user_info_df_2.groupby('cfv_sens_promotion', as_index=False)['user_log_acct']\
                        .agg({'cfv_sens_promotion_count':'count'})\
                        .sort_values(by='cfv_sens_promotion_count', ascending=False)

user_info_df_2['sens_promotion'] = user_info_df_2['cfv_sens_promotion']\
                                    .apply(lambda x: x[-1]) # 只保留最后一位字符

user_order_sens_promotion_df = user_info_df_2.groupby('sens_promotion', as_index=False)['user_log_acct']\
                                .agg({'sens_promotion_count':'count'})\
                                .sort_values(by='sens_promotion', ascending=True)

x = ['不敏感', '轻度敏感', '中度敏感', '高度敏感', '极度敏感']
y = user_order_sens_promotion_df['sens_promotion_count']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')

plt.title("用户的促销敏感度分布", size=24)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

# plt.bar(x, y, width=0.5, color='#6699CC')
sns.barplot(x,y)

plt.show() 

在这里插入图片描述
分析:
根据历史数据,绝大部分的小家电消费用户对促销高度敏感,但是仅有一小部分对促销活动是极度敏感的。这说明针对小家电消费用户的促销活动应当确定合适的促销力度,并在促销活动的形式上多 功夫。

3.2.5 用户的评论敏感度

cfv_sens_comment_df = user_info_df.groupby('cfv_sens_comment', as_index=False)['user_log_acct']\
                    .agg({'cfv_sens_comment_count':'count'})\
                    .sort_values(by='cfv_sens_comment_count', ascending=False)

user_info_df_3 = user_info_df.copy()
user_info_df_3 = user_info_df[user_info_df['cfv_sens_comment'] != '-1']

cfv_sens_comment_df_2 = user_info_df_3.groupby('cfv_sens_comment', as_index=False)['user_log_acct']\
                    .agg({'cfv_sens_comment_count':'count'})\
                    .sort_values(by='cfv_sens_comment_count', ascending=False)

user_info_df_3['sens_comment'] = user_info_df_3['cfv_sens_comment']\
                                    .apply(lambda x: x[-1]) # 只保留最后一位字符

user_order_sens_comment_df = user_info_df_3.groupby('sens_comment', as_index=False)['user_log_acct']\
                                .agg({'sens_comment_count':'count'})\
                                .sort_values(by='sens_comment', ascending=True)
                                
x = ['不敏感', '轻度敏感', '中度敏感', '高度敏感', '极度敏感']
y = user_order_sens_comment_df['sens_comment_count']

plt.figure(figsize=(20,8),dpi=80)
plt.style.use('ggplot')

plt.title("小家电消费用户的评论敏感度分布", size=24)

plt.xticks(size=16) # x轴字体大小调整
plt.yticks(size=16) # y轴字体大小调整

# plt.bar(x, y, width=0.5, color='#6699CC')
sns.barplot(x,y)
plt.show() 

在这里插入图片描述

分析:
绝大部分的小家电消费用户对产品的评论极度敏感。 这说明小家电消费用户非常看重产品的口碑和使用反馈,在促销选品上可以选择评价高、评论数多的产品;在活动文案上可以多体现促销产品的口碑。

3.3 用户的整体性画像描述

- 消费用户的特征
多数为来自一线城市的男性,年龄在30左右,已婚,有孩,学历水平较高,从事互联网、教师等高收入行业。 他们喜欢在周二和周六的早上10点左右和晚上10点左右下单。他们关注产品的促销活动,喜欢追求有生活 品味,有良好的口碑的产品。他们关心家庭,但是因为生活节奏和工作压力却又没有时间在家庭生活上付出 很多时间和精力。前两周他们最常购买的小家电是电风扇。

4 总结及建议

我们通过多个维度对小家电用户特征进行分析,对此群体用户有了一个立体的认知,如下:

4.1 画像总结

在这里插入图片描述

4.2 促销活动建议:

现已知用户的基本特征,结合文章第一部分对业务需求的拆解和分析思路,我们对此次促销活动给出如下建议:
在这里插入图片描述
注:
因为此用户和订单数据集只有7天的数据(2020年8月13日-2020年8月19日),刻画的用户画像可能存在偏差。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值