RFM电商数据分析(1)

本文纯属复现和鲸社区大佬Phoenix的分析过程,及大部分代码,此处贴上地址:
原链接地址

RFM电商数据分析(2)
RFM电商数据分析(3)

RFM电商数据分析(4)
分析过程:

在这里插入图片描述

一 准备

分类导入必要包

数据来源公开社区,564169条/15行/94MB 某电子产品2020/01/05-2020/11/25销售数据 

二 数据处理

1. 导入数据,将字段名改为中文名称

2. 为了后期分析用户数据,创建新的字段:日期 / 月份 / 小时 / 周 / 

3. 字段解释 

4. 处理缺失数据 

5. 处理重复数据 

6. 处理异常值 

三 计算指标。(金额/销量/用户/地区/时间 等多个维度计算各项指标)

1.销售额 

    GMV 

    GMV环比增长/增长率

    销售额/订单增长曲线 (月) 

2.销量 

    每月销量 

    计算销售额前10商品  订单/销售额/占比 

    计算销售额前10类别  订单/销售额/占比 

    计算销售额前10品牌  订单/销售额/占比 

    计算销量第一的品牌人群特征 

3.用户 

    计算用户年龄分布  基数/占比 

    计算用户性别分布  基数/占比 

    计算用户地区分布  基数/占比 / 各省用户的占比 

    销售额贡献曲线(找出头部客户重点维护,二八定律-找出累计贡献销售额80%的那批用户) 

    客户消费金额的分位数 

    客户总消费金额的分布 

    单笔订单消费金额的分布 

    新客老客的销售额与销量对比             

4.用户行为 

    用户年龄分布中  销量/销售额/   

    用户性别分布中  销量/销售额/   

    用户地区分布中  销量/销售额/   

5. 时间 

    客户消费周期分布情况 

    按周销量/销售额分布 

    按小时分析 

    每月新客/老客人数分析 

    每月新用户/老用户 销售额环比 

四 RFM模型

五 用户画像

第一步,导入所有包

import numpy as np
import pandas as pd
from pyecharts.charts import Bar,Line,Pie,Funnel,Grid
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
from pyecharts import options as opts

from datetime import datetime

导入数据

df=pd.read_csv('./电子产品销售分析.csv', index_col=0)
df.head()

请添加图片描述
增加时间字段

df['date'] = df['event_time'].apply(lambda x: x.split(' ')[0])
# 转化日期格式
df['event_time'] = pd.to_datetime(df['event_time'])
df['event_time'] 
# 添加月/周/小时,便于后续分析
df['month']=df.event_time.dt.strftime('%m')
df['hour']=df.event_time.dt.strftime('%H')
df['week']=df.event_time.dt.strftime('%w')
df.head()

请添加图片描述
查看数据是否非空

np.sum(df.isnull())

请添加图片描述
只有两列有空值(brand和category_code) brand的空值填充为R,category_code空值填充为’无类别’

# 填充缺失值,
df['brand'] = df['brand'].fillna(value='R')
df['category_code'] = df['category_code'].fillna(value='无类别')
# 再次查看缺失值
np.sum(df.isnull())

请添加图片描述
计算每笔订单的购买数量,金额

有重复的订单id和重复的产品id,代表数量 根据订单id和产品id,count(user_id)计算一个订单中用户购买改产品的数量和总价值

data_1 = df.groupby(['order_id', 'product_id']).agg(buy_count=('user_id', 'count'))
df = pd.merge(df, data_1, how='inner', on=['order_id', 'product_id'])
# 新建字段buy_count和amount
df['amount'] = df['price'] * df['buy_count']
df = df.drop_duplicates().reset_index(drop=True)
df.info()

请添加图片描述
将id类型都转化为object类型

df['order_id'] = df['order_id'].astype('object')
df['product_id'] = df['product_id'].astype('object')
df['category_id'] = df['category_id'].astype('object')
df['user_id'] = df['user_id'].astype('object')

对几个基础字段做描述分析

df[['price', 'age', 'buy_count', 'amount']].describe().T

请添加图片描述
结论:产品平均价格为208元,最大值为18328.68元,最低价格为0 购物人群的最大年龄为50岁,最小年龄为16岁,中位数为33岁,平均为33岁

# 删除2000年之前的订单
df.event_time[df.event_time <= '2000-01-01 00:33:40+00:00']
df.drop(df[df.event_time <= '2000-01-01 00:33:40+00:00'].index, axis=0, inplace=True)
# 保存清洗完的数据,之后以此作为原数据
df.to_csv('ok_data.csv', index=False)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值