小红书消费数据分析

数据集介绍
数据来源:https://www.kesci.com/mw/dataset/5f1e3fde94d484002d2f6715
数据说明:这是一个关于用户在小红书购买金额的数据集, 共有29452条数据, 7个变量
Revenue:用户下单的购买金额
3rd_party_stores 用户过往在app中从第三方购买的数量,为0则代表只在自营商品中购买
Gender 性别 1:男 0:女 未知则空缺
Engaged_last_30 最近30天在app上有参与重点活动(讨论,卖家秀)
Lifecycle 生命周期分为A,B,C (分别对应注册6个月内,1年内,2年内)
days_since_last_order 最近一次下单距今的天数 (小于1则代表当天有下单)
数据分析步骤
明确目的
提出问题
数据整理
数据可视化分析
建立数据模型
分析目的: 假设用户购买金额(revenue)为因变量, 其它六个变量为自变量, 探寻不同特征的人群对总购买金额的贡献大小, 帮助企业定位消费人群并在营销推广等方面做出更好决策。 综合所有变量建立多线性数据模型并分析数据模型的准确性。 准确的数据模型能够帮助预测用户下单金额。previous_order_amount 以往累积的用户购买金额

小红书是当前著名的电商平台, 包含小红书社区与消费窗口。 小红书的独特性在于口碑营销与正品自营, 用社区交流和与许多海外品牌建立战略合作关系来吸引用户。 作为商家投放广告与销售商品的重要阵地, 小红书会吸引什么类型的人群?在这些用户中, 哪些消费群体更庞大, 哪些消费群体的平均购买力更高?

分析工具:python
提出问题:哪些消费群体更庞大,平均购买力更强?已知自变量能否准确预测用户购买金额?数据整理:

https://www.kesci.com/mw/dataset/5f1e3fde94d484002d2f6715

import pandas as pd
import numpy as np
import random
from matplotlib import pyplot as plt
from pyecharts.charts import Boxplot
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston

###数据导入
df=pd.read_csv("/Users/ruohezhou/Downloads/datamodelwhale/redbook.csv")
df.head(10)
小红书消费数据分析_第1张图片
###去除重复数值和缺失数值
df.drop_duplicates(inplace=True)
df.reset_index(drop=True,inplace=True)
df.replace(‘nan’,np.nan,inplace=True)
###把性别、年龄、用户过往中为nan的数值分别用随机dummy variable、平均值、随机dummy variable替代
df.fillna(value={“gender”:random.choice([1.0,0.0]),“age”:round(df[“age”].mean(),0),“engaged_last_30”:random.choice([1.0,0.0])},inplace=True)
df.head(10)
小红书消费数据分析_第2张图片
df.dtypes
小红书消费数据分析_第3张图片
###哪些消费群体更庞大, 平均购买力更强?
###1. 先分析单一变量与利润的关系
###用matrix plot大致看一下变量之间的线性关系
import plotly.express as px
fig = px.scatter_matrix(df)
fig.show()
#从第一排的图像可以看出各个变量与利润的关系, 更详细的图如下:
小红书消费数据分析_第4张图片
小红书消费数据分析_第5张图片
小红书消费数据分析_第6张图片
###2.categorical变量和quantitative变量的组合和利润的关系
#(1)年龄与性别
df[df[‘gender’] == 1.0].age.plot(kind=‘hist’, color=‘blue’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
df[df[‘gender’] == 0.0].age.plot(kind=‘hist’, color=‘magenta’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
plt.legend(labels=[‘Males’, ‘Females’])
plt.title(‘Distribution of age’, size=24)
plt.xlabel(‘age’, size=18)
plt.ylabel(‘revenue’, size=18)
###60岁年龄段的女性对利润的贡献远大于同年龄段的男性, 但其它年龄段中男性对利润的贡献均比女性大
小红书消费数据分析_第7张图片
#(2)是否参加活动与先前消费金额
df[df[‘lifecycle’] == ‘A’].accumulation.plot(kind=‘hist’, color=‘blue’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
df[df[‘lifecycle’] == ‘B’].accumulation.plot(kind=‘hist’, color=‘magenta’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
plt.legend(labels=[‘engage’, ‘not engage’])
plt.title(‘Distribution of previous order amount’, size=24)
plt.xlabel(‘previous order amount’, size=18)
plt.ylabel(‘revenue’, size=18)

acdiff=df.groupby(“engage”)[‘revenue’].mean().sort_values()
acdiff
###从图中看出未参与活动人群对利润的总体贡献更大, 但随着先前消费数额的增加, 差距逐渐减少。 参与活动的人群比未参与活动的人群平均购买力更强, 可见是因为参加活动的人群数量少才导致总体贡献不如未参加活动人群高
小红书消费数据分析_第8张图片
#(3)注册时间与距离上一次下单时间
df[df[‘lifecycle’] == ‘A’].last_order.plot(kind=‘hist’, color=‘red’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
df[df[‘lifecycle’] == ‘B’].last_order.plot(kind=‘hist’, color=‘blue’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
df[df[‘lifecycle’] == ‘C’].last_order.plot(kind=‘hist’, color=‘pink’, edgecolor=‘black’, alpha=0.5, figsize=(10, 7))
plt.legend(labels=[‘A’,‘B’,‘C’])
plt.title(‘Distribution of days since last order’, size=24)
plt.xlabel(‘last order’, size=18)
plt.ylabel(‘revenue’, size=18)
#A: 注册六个月内, B:注册一年内, C:注册两年内
cyclediff= df.groupby(“lifecycle”)[‘revenue’].mean().sort_values()
cyclediff
###越新注册的用户平均购买力更高且下单率更频繁; 注册两年的用户数量更庞大, 所以对利润总体贡献高
小红书消费数据分析_第9张图片
###3. 用多线性模型分析数据集

###与其它变量不同的是, lifecycle是object, 把它转变为dummy variable(0,1)能方便之后分析多线性关系和绘图
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
array_out = mlb.fit_transform(df[“lifecycle”])
#把原本的a,b,c转变成0,1, 将原本dataframe中的一个column变为a,b,c三个columns
df_out = pd.DataFrame(data=array_out, columns=mlb.classes_)
df_out
df = pd.concat([df_out, df], axis=1)#将两个dataframe合并
df1= df.drop(columns=[‘lifecycle’])#移除原先的lifecycle column
df1.head()
小红书消费数据分析_第10张图片
from sklearn import linear_model
X = df[[‘gender’,‘age’, ‘engage’, ‘accumulation’, ‘3rd’, ‘A’,‘B’,‘C’, ‘last_order’]]
Y = df[‘revenue’]
regr = linear_model.LinearRegression()
result = regr.fit(X, Y)
print(‘Intercept: \n’, regr.intercept_)
print(‘Coefficients: \n’, regr.coef_)
###模型:其中x1到x8 分别对应性别到第三方购买数量, lifecycle c。 只要已知性别, 年龄, 参与活动, 以往购买金额, 第三方购买数量, a,b,c这八个变量就能预测该用户的购买金额
小红书消费数据分析_第11张图片
from sklearn import datasets, linear_model
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
from scipy import stats

X2 = sm.add_constant(X)
est = sm.OLS(Y, X2)
est2 = est.fit()
print(“summary()\n”,est2.summary())
print(“pvalues\n”,est2.pvalues)
print(“tvalues\n”,est2.tvalues)
print(“rsquared\n”,est2.rsquared)
print(“rsquared_adj\n”,est2.rsquared_adj)
小红书消费数据分析_第12张图片
小红书消费数据分析_第13张图片
###adjusted r squared等于0.03, 表示只有百分之三的利润变化能用这些变量去解释, 所以这个模型对预测利润的作用很小
###从这张总结图中看出, 除了性别和第三方购买量的p-value值很大之外, 其它的变量的p-value都为0, 可见这个模型存在很大的multicolinearity问题

###结论及建议
#1. 小红书上的男性消费者相对女性消费者不光群体更庞大且平均购买力更高, 可以面向男性消费者推出更多产品或加大宣传力度
#2. 经常购买第三方产品和从不购买第三方产品的消费者群体不光更庞大且平均购买力更高
#3. 未参加活动的群体对消费金额的贡献更大, 但参加活动的消费者群体的平均购买力比为参加的群体高很多, 建议扩大活动影响范围, 增加参加活动的群体
#4. 年龄60左右的女性消费者群体对总体消费金额贡献相比同龄男性大很多, 需要更重视这个年龄段的群体对产品的喜好

你可能感兴趣的:(python,数据库)