数据分析项目-合集-day04

第一部分:数据类型处理

- 数据加载
    - 字段含义
        - user_id:用户ID
        - order_dt:购买日期
        - order_product:购买产品的数量
        - order_amount:购买金额
- 观察数据
    - 查看数据的数据类型
    - 数据中是否存储在缺失值
    - 将order_dt转换成时间类型
    - 查看数据的统计描述
        - 计算所有用户购买商品的平均数量
        - 计算所有用户购买商品的平均花费
- 在源数据中添加一列表示月份:astype('datetime64[M]')
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
import matplotlib.pyplot as plt
#设置行不限制数量
pd.set_option('display.max_rows',100)
#最后的的参数可以限制输出行的数量
#设置列不限制数量
pd.set_option('display.max_columns',100)
#最后的的参数可以限制输出列的数量
#设置value的显示长度为80,默认为50
pd.set_option('max_colwidth',100)
#数据的加载,定义数据的列(以多个空格进行分割)
df=pd.read_csv("../data/CDNOW_master.txt",header=None,sep="\s+",names=["user_id","order_dt","order_product","order_amount"])
df
user_idorder_dtorder_productorder_amount
0119970101111.77
1219970112112.00
2219970112577.00
3319970102220.76
4319970330220.76
...............
696542356819970405483.74
696552356819970422114.99
696562356919970325225.74
696572357019970325351.12
696582357019970326242.96

69659 rows × 4 columns

#- 观察数据
#    - 查看数据的数据类型
#    - 数据中是否存储在缺失值
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 69659 entries, 0 to 69658
Data columns (total 4 columns):
 #   Column         Non-Null Count  Dtype  
---  ------         --------------  -----  
 0   user_id        69659 non-null  int64  
 1   order_dt       69659 non-null  int64  
 2   order_product  69659 non-null  int64  
 3   order_amount   69659 non-null  float64
dtypes: float64(1), int64(3)
memory usage: 2.1 MB
#- 将order_dt转换成时间类型
df["order_dt"]=pd.to_datetime(df["order_dt"],format="%Y%m%d")
df
user_idorder_dtorder_productorder_amount
011997-01-01111.77
121997-01-12112.00
221997-01-12577.00
331997-01-02220.76
431997-03-30220.76
...............
69654235681997-04-05483.74
69655235681997-04-22114.99
69656235691997-03-25225.74
69657235701997-03-25351.12
69658235701997-03-26242.96

69659 rows × 4 columns

#- 查看数据的统计描述
#        - 计算所有用户购买商品的平均数量
#        - 计算所有用户购买商品的平均花费
df.describe()
user_idorder_productorder_amount
count69659.00000069659.00000069659.000000
mean11470.8545922.41004035.893648
std6819.9048482.33392436.281942
min1.0000001.0000000.000000
25%5506.0000001.00000014.490000
50%11410.0000002.00000025.980000
75%17273.0000003.00000043.700000
max23570.00000099.0000001286.010000
#将源数据的时间转换为月份
df["order_dt"].astype("datetime64[M]")
0       1997-01-01
1       1997-01-01
2       1997-01-01
3       1997-01-01
4       1997-03-01
           ...    
69654   1997-04-01
69655   1997-04-01
69656   1997-03-01
69657   1997-03-01
69658   1997-03-01
Name: order_dt, Length: 69659, dtype: datetime64[ns]
#- 在源数据中添加一列表示月份:astype('datetime64[M]')
df["month"]=df["order_dt"].astype("datetime64[M]")
df.head(15)
user_idorder_dtorder_productorder_amountmonth
011997-01-01111.771997-01-01
121997-01-12112.001997-01-01
221997-01-12577.001997-01-01
331997-01-02220.761997-01-01
431997-03-30220.761997-03-01
531997-04-02219.541997-04-01
631997-11-15557.451997-11-01
731997-11-25420.961997-11-01
831998-05-28116.991998-05-01
941997-01-01229.331997-01-01
1041997-01-18229.731997-01-01
1141997-08-02114.961997-08-01
1241997-12-12226.481997-12-01
1351997-01-01229.331997-01-01
1451997-01-14113.971997-01-01

第二部分

- 用户每月花费的总金额
    - 绘制曲线图展示
- 所有用户每月的产品购买量
- 所有用户每月的消费总次数
- 统计每月的消费人数
# - 用户每月花费的总金额
df.groupby(by="month")["order_amount"].sum()
month
1997-01-01    299060.17
1997-02-01    379590.03
1997-03-01    393155.27
1997-04-01    142824.49
1997-05-01    107933.30
1997-06-01    108395.87
1997-07-01    122078.88
1997-08-01     88367.69
1997-09-01     81948.80
1997-10-01     89780.77
1997-11-01    115448.64
1997-12-01     95577.35
1998-01-01     76756.78
1998-02-01     77096.96
1998-03-01    108970.15
1998-04-01     66231.52
1998-05-01     70989.66
1998-06-01     76109.30
Name: order_amount, dtype: float64
#plt.plot(df.groupby(by="month")["order_amount"].sum())
df.groupby(by="month")["order_amount"].sum().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1b6842f8fc8>

在这里插入图片描述

#- 所有用户每月的产品购买量
df.groupby(by="month")["order_product"].sum()
month
1997-01-01    19416
1997-02-01    24921
1997-03-01    26159
1997-04-01     9729
1997-05-01     7275
1997-06-01     7301
1997-07-01     8131
1997-08-01     5851
1997-09-01     5729
1997-10-01     6203
1997-11-01     7812
1997-12-01     6418
1998-01-01     5278
1998-02-01     5340
1998-03-01     7431
1998-04-01     4697
1998-05-01     4903
1998-06-01     5287
Name: order_product, dtype: int64
df.groupby(by="month")["order_product"].sum().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1b683c1c748>

在这里插入图片描述

# - 所有用户每月的消费总次数(原始数据中的一行数据表示一次消费记录)
df.groupby(by="month")["user_id"].count()
month
1997-01-01     8928
1997-02-01    11272
1997-03-01    11598
1997-04-01     3781
1997-05-01     2895
1997-06-01     3054
1997-07-01     2942
1997-08-01     2320
1997-09-01     2296
1997-10-01     2562
1997-11-01     2750
1997-12-01     2504
1998-01-01     2032
1998-02-01     2026
1998-03-01     2793
1998-04-01     1878
1998-05-01     1985
1998-06-01     2043
Name: user_id, dtype: int64
#- 统计每月的消费人数(可能同一天一个用户会消费多次),nunique()表示去重之后的个数
df.groupby(by="month")["user_id"].nunique()
month
1997-01-01    7846
1997-02-01    9633
1997-03-01    9524
1997-04-01    2822
1997-05-01    2214
1997-06-01    2339
1997-07-01    2180
1997-08-01    1772
1997-09-01    1739
1997-10-01    1839
1997-11-01    2028
1997-12-01    1864
1998-01-01    1537
1998-02-01    1551
1998-03-01    2060
1998-04-01    1437
1998-05-01    1488
1998-06-01    1506
Name: user_id, dtype: int64

第三部分:用户个体消费数据分析

- 用户消费总金额和消费总次数的统计描述
- 用户消费金额和消费产品数量的散点图
- 各个用户消费总金额的直方分布图(消费金额在1000之内的分布)
- 各个用户消费的总数量的直方分布图(消费商品的数量在100次之内的分布)
#- 用户消费总金额和消费总次数的统计描述
#每个用户消费的总金额
df.groupby(by="user_id")["order_amount"].sum()
user_id
1         11.77
2         89.00
3        156.46
4        100.50
5        385.61
          ...  
23566     36.00
23567     20.97
23568    121.70
23569     25.74
23570     94.08
Name: order_amount, Length: 23570, dtype: float64
#每个用户消费的总次数
df.groupby(by="user_id").count()["order_dt"]
user_id
1         1
2         2
3         6
4         4
5        11
         ..
23566     1
23567     1
23568     3
23569     1
23570     2
Name: order_dt, Length: 23570, dtype: int64
#用户消费金额和消费产品数量的散点图
user_amount_sum=df.groupby(by="user_id")["order_amount"].sum()
user_product_sum=df.groupby(by="user_id")["order_product"].sum()
plt.scatter(user_product_sum,user_amount_sum)
<matplotlib.collections.PathCollection at 0x1b684ace5c8>

在这里插入图片描述

#- 各个用户消费总金额的直方分布图(消费金额在1000之内的分布)
df.groupby(by="user_id").sum().query("order_amount<=1000")["order_amount"]
df.groupby(by="user_id").sum().query("order_amount<=1000")["order_amount"].hist()
<matplotlib.axes._subplots.AxesSubplot at 0x1b6847803c8>

在这里插入图片描述

#- 各个用户消费的总数量的直方分布图(消费商品的数量在100次之内的分布)
df.groupby(by="user_id").sum().query("order_product<=100")["order_product"]
#df.groupby(by="user_id").sum().query("order_product<=100")["order_product"].hist()
user_id
1         1
2         6
3        16
4         7
5        29
         ..
23566     2
23567     1
23568     6
23569     2
23570     5
Name: order_product, Length: 23491, dtype: int64

第四部分:用户消费行为分析

- 用户第一次消费的月份分布,和人数统计
    - 绘制线形图
- 用户最后一次消费的时间分布,和人数统计
    -绘制线形图
- 新老客户的占比
    - 消费一次为新客户
    - 消费多次为老客户
        -分析出每一个用户的第一个消费和最后一次消费的时间
            - agg(["func1","func2"]):对分组后的结果进行指定聚会
        -分析出新老客户的消费比例
    - 用户分层
        - 分析得出每个用户的总购买量和总消费金额and最近一次消费的时间的表格rfm
        - RFM模型设计
            - R表示客户最近一次交易时间的间隔
                - /np.timedelta64(1,"D"):去除days
            - F表示客户购买商品的总数量,F值越大,表示客户交易越频繁,反之则表示客户交易不够活跃
            - M表示客户交易的金额,M值越大,表示客户价值越高,反之则表示客户价值越低
            - 将R,F,M作用到rfm表中
        - 根据价值分层,将用户分为:
            - 重要价值客户
            - 重要保持客户
            - 重要挽留客户
#- 用户第一次消费的月份分布,和人数统计
#    - 绘制线形图
#第一次消费的月份:每一个用户消费月份的最小值就是该用户第一次消费的月份
df.groupby(by="user_id")["month"].min()#第一次消费月份分布
user_id
1       1997-01-01
2       1997-01-01
3       1997-01-01
4       1997-01-01
5       1997-01-01
           ...    
23566   1997-03-01
23567   1997-03-01
23568   1997-03-01
23569   1997-03-01
23570   1997-03-01
Name: month, Length: 23570, dtype: datetime64[ns]
df.groupby(by="user_id")["month"].min().value_counts()#人数的统计
1997-02-01    8476
1997-01-01    7846
1997-03-01    7248
Name: month, dtype: int64
df.groupby(by="user_id")["month"].min().value_counts().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1b684c45308>

在这里插入图片描述

#- 用户最后一次消费的时间分布,和人数统计
# 用户消费月份的最大值就是用户最后一次消费
df.groupby(by="user_id")["month"].max().value_counts()
1997-02-01    4912
1997-03-01    4478
1997-01-01    4192
1998-06-01    1506
1998-05-01    1042
1998-03-01     993
1998-04-01     769
1997-04-01     677
1997-12-01     620
1997-11-01     609
1998-02-01     550
1998-01-01     514
1997-06-01     499
1997-07-01     493
1997-05-01     480
1997-10-01     455
1997-09-01     397
1997-08-01     384
Name: month, dtype: int64
#    -绘制线形图
df.groupby(by="user_id")["month"].max().value_counts().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1b684d15b48>

在这里插入图片描述

#- 新老客户的占比
#    - 消费一次为新客户
#    - 消费多次为老客户
#        -分析出每一个用户的第一个消费和最后一次消费的时间
#            - agg(["func1","func2"]):对分组后的结果进行指定聚会
#        -分析出新老客户的消费比例
#新用户消费月份最大值和最小值相同,而老用户不相同
new_old_user=df.groupby(by="user_id")["month"].agg(["min","max"])
(new_old_user["min"]==new_old_user["max"]).value_counts()
True     12755
False    10815
dtype: int64
#- 用户分层
#        - 分析得出每个用户的总购买量和总消费金额and最近一次消费的时间的表格rfm
#aggfunc实现对原始数据的哪些列做怎样形式的汇总
rfm=df.pivot_table(index="user_id",aggfunc={"order_product":"sum","order_amount":"sum","order_dt":"max"})
rfm
order_amountorder_dtorder_product
user_id
111.771997-01-011
289.001997-01-126
3156.461998-05-2816
4100.501997-12-127
5385.611998-01-0329
............
2356636.001997-03-252
2356720.971997-03-251
23568121.701997-04-226
2356925.741997-03-252
2357094.081997-03-265

23570 rows × 3 columns

#        - RFM模型设计
#            - R表示客户最近一次交易时间的间隔
#                - /np.timedelta64(1,"D"):去除days
#            - F表示客户购买商品的总数量,F值越大,表示客户交易越频繁,反之则表示客户交易不够活跃
#            - M表示客户交易的金额,M值越大,表示客户价值越高,反之则表示客户价值越低
#            - 将R,F,M作用到rfm表中
#            - R表示客户最近一次交易时间的间隔
max_dt=df["order_dt"].max()#今天的日期
#每个用户最后一次交易的时间
max_dt-df.groupby(by="user_id")["order_dt"].max()
rfm["R"]=(max_dt-df.groupby(by="user_id")["order_dt"].max())/np.timedelta64(1,"D")
rfm.drop(labels="order_dt",axis=1,inplace=True)
rfm.columns=["M","F","R"]
rfm
MFR
user_id
111.771545.0
289.006534.0
3156.461633.0
4100.507200.0
5385.6129178.0
............
2356636.002462.0
2356720.971462.0
23568121.706434.0
2356925.742462.0
2357094.085461.0

23570 rows × 3 columns

rfm.apply(lambda x: x-x.mean())
MFR
user_id
1-94.310426-6.122656177.778362
2-17.080426-1.122656166.778362
350.3795748.877344-334.221638
4-5.580426-0.122656-167.221638
5279.52957421.877344-189.221638
............
23566-70.080426-5.12265694.778362
23567-85.110426-6.12265694.778362
2356815.619574-1.12265666.778362
23569-80.340426-5.12265694.778362
23570-12.000426-2.12265693.778362

23570 rows × 3 columns

def rfm_func(x):
    #存储的是三个字符串形式的0或者1
    level=x.map(lambda x:"1" if x>0 else "0")
    label=level.R+level.F+level.M
    d={
        "111":"重要价值客户",
        "011":"重要保持客户",
        "101":"重要挽留客户",
        "001":"重要发展客户",
        "110":"一般价值客户",
        "010":"一般保持客户",
        "100":"一般挽留客户",
        "000":"一般发展客户",  
    }
    result=d[label]
    return result

#df.apply(func):可以对df中的行或者列进行某种(func%xdel形式的运算
rfm["label"]=rfm.apply(lambda x: x-x.mean()).apply(rfm_func,axis=1)
rfm.head(15)
MFRlabel
user_id
111.771545.0一般挽留客户
289.006534.0一般挽留客户
3156.461633.0重要保持客户
4100.507200.0一般发展客户
5385.6129178.0重要保持客户
620.991545.0一般挽留客户
7264.6718100.0重要保持客户
8197.661893.0重要保持客户
995.85622.0一般发展客户
1039.313525.0一般挽留客户
1158.554130.0一般发展客户
1257.064545.0一般挽留客户
1372.944545.0一般挽留客户
1429.922545.0一般挽留客户
1552.874545.0一般挽留客户

第五部分:用户的生命周期

- 将用户划分为活跃用户和其他用户
    - 统计每个用户每个月的消费次数
    - 统计每个用户每个月是否消费,消费记录为1否则为0
        - 知识点:DataFrame的apply和applymap的区别 
            - applymap:返回df
            - 将函数做用于DataFrame中的所有元素(elements)
            - apply:返回Series
            - apply()将一个函数作用于DataFrame中的每列或者列
    - 将用户按照每一个月份分成:
        - unreq:观望用户(前两月没买,第三个月才第一次买,则用户前两个月为观望用户)
        - unactive:首月购买后,后续月份没有购买则在购买的月份中该用户为非活跃用户
        - new:当前月就进行首次购买的用户在当前月为新用户
        - return:购买之后间隔n月再次购买的第一个月份为该月份的回头客
#- 统计每个用户每个月的消费次数
user_month_count_df=df.pivot_table(index="user_id",values="order_dt",aggfunc="count",columns="month").fillna(0)
user_month_count_df
month1997-01-011997-02-011997-03-011997-04-011997-05-011997-06-011997-07-011997-08-011997-09-011997-10-011997-11-011997-12-011998-01-011998-02-011998-03-011998-04-011998-05-011998-06-01
user_id
11.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
22.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
31.00.01.01.00.00.00.00.00.00.02.00.00.00.00.00.01.00.0
42.00.00.00.00.00.00.01.00.00.00.01.00.00.00.00.00.00.0
52.01.00.01.01.01.01.00.01.00.00.02.01.00.00.00.00.00.0
.........................................................
235660.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
235670.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
235680.00.01.02.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
235690.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
235700.00.02.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0

23570 rows × 18 columns

#- 统计每个用户每个月是否消费,消费记录为1否则为0
df_purchase=user_month_count_df.applymap(lambda x: 1 if x>=1 else 0)
df_purchase
month1997-01-011997-02-011997-03-011997-04-011997-05-011997-06-011997-07-011997-08-011997-09-011997-10-011997-11-011997-12-011998-01-011998-02-011998-03-011998-04-011998-05-011998-06-01
user_id
1100000000000000000
2100000000000000000
3101100000010000010
4100000010001000000
5110111101001100000
.........................................................
23566001000000000000000
23567001000000000000000
23568001100000000000000
23569001000000000000000
23570001000000000000000

23570 rows × 18 columns

#将df_purchase中的原始数据0和1修改为new,unactive...,返回新的df叫做df_purchase_new
#固定算法
def active_status(data):
    status=[]#某个用户每一个月的活跃度
    for i in range(18):
        #若本月没有消费
        if data[i]==0:
            if len(status)>0:
                if status[i-1]=="unreg":
                    status.append("unreg")
                else:
                    status.append("unactive")
            else:
                status.append("unreg")
        #若本月有消费
        else:
            if len(status)==0:
                status.append("new")
            else:
                if status[i-1]=="unactive":
                    status.append("return")
                elif status[i-1]=="unreg":
                    status.append("new")
                else:
                    status.append("active")
    return status
pivoted_status=df_purchase.apply(active_status,axis=1)
pivoted_status.head(10)
user_id
1     [new, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, ...
2     [new, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, ...
3     [new, unactive, return, active, unactive, unactive, unactive, unactive, unactive, unactive, retu...
4     [new, unactive, unactive, unactive, unactive, unactive, unactive, return, unactive, unactive, un...
5     [new, active, unactive, return, active, active, active, unactive, return, unactive, unactive, re...
6     [new, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, ...
7     [new, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, return, un...
8     [new, active, unactive, unactive, unactive, return, active, unactive, unactive, unactive, return...
9     [new, unactive, unactive, unactive, return, unactive, unactive, unactive, unactive, unactive, un...
10    [new, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, unactive, ...
dtype: object
pivoted_status.values.tolist()
df_purchase_new=DataFrame(data=pivoted_status.values.tolist(),index=df_purchase.index,columns=df_purchase.columns)
df_purchase_new
month1997-01-011997-02-011997-03-011997-04-011997-05-011997-06-011997-07-011997-08-011997-09-011997-10-011997-11-011997-12-011998-01-011998-02-011998-03-011998-04-011998-05-011998-06-01
user_id
1newunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive
2newunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive
3newunactivereturnactiveunactiveunactiveunactiveunactiveunactiveunactivereturnunactiveunactiveunactiveunactiveunactivereturnunactive
4newunactiveunactiveunactiveunactiveunactiveunactivereturnunactiveunactiveunactivereturnunactiveunactiveunactiveunactiveunactiveunactive
5newactiveunactivereturnactiveactiveactiveunactivereturnunactiveunactivereturnactiveunactiveunactiveunactiveunactiveunactive
.........................................................
23566unregunregnewunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive
23567unregunregnewunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive
23568unregunregnewactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive
23569unregunregnewunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive
23570unregunregnewunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactiveunactive

23570 rows × 18 columns

#- 每月【不同活跃】用户的计数
purchase_status_ct=df_purchase_new.apply(lambda x:pd.value_counts(x)).fillna(0)
purchase_status_ct
month1997-01-011997-02-011997-03-011997-04-011997-05-011997-06-011997-07-011997-08-011997-09-011997-10-011997-11-011997-12-011998-01-011998-02-011998-03-011998-04-011998-05-011998-06-01
active0.01157.01681.01773.0852.0747.0746.0604.0528.0532.0624.0632.0512.0472.0571.0518.0459.0446.0
new7846.08476.07248.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
return0.00.0595.01049.01362.01592.01434.01168.01211.01307.01404.01232.01025.01079.01489.0919.01029.01060.0
unactive0.06689.014046.020748.021356.021231.021390.021798.021831.021731.021542.021706.022033.022019.021510.022133.022082.022064.0
unreg15724.07248.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
purchase_status_ct.T
activenewreturnunactiveunreg
month
1997-01-010.07846.00.00.015724.0
1997-02-011157.08476.00.06689.07248.0
1997-03-011681.07248.0595.014046.00.0
1997-04-011773.00.01049.020748.00.0
1997-05-01852.00.01362.021356.00.0
1997-06-01747.00.01592.021231.00.0
1997-07-01746.00.01434.021390.00.0
1997-08-01604.00.01168.021798.00.0
1997-09-01528.00.01211.021831.00.0
1997-10-01532.00.01307.021731.00.0
1997-11-01624.00.01404.021542.00.0
1997-12-01632.00.01232.021706.00.0
1998-01-01512.00.01025.022033.00.0
1998-02-01472.00.01079.022019.00.0
1998-03-01571.00.01489.021510.00.0
1998-04-01518.00.0919.022133.00.0
1998-05-01459.00.01029.022082.00.0
1998-06-01446.00.01060.022064.00.0
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_47049321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值