一、研究背景

随着信息技术的飞速发展,电子商务已成为全球商业领域的重要驱动力。在互联网的浪潮下,消费者的购物习惯发生了巨大变化,越来越多的人倾向于通过网络平台进行购物。电子商务平台的兴起为企业提供了更广阔的市场空间和销售渠道,同时也带来了激烈的市场竞争。。。。

本研究旨在利用 Python 和相关数据分析工具,对电子商务交易数据进行深入分析,为企业提供决策支持。

二、研究意义

(一)理论意义

完善数据分析理论体系:通过对电子商务交易数据多维度、精细化的剖析,可进一步拓展数据分析方法在电子商务场景中的应用边界,为。。。。

深化消费者行为研究:借助交易数据中消费者购买的详细信息,深入探索消费者决策机制、偏好演变及行为模式的动态变化。。。。。

(二)实践意义

助力企业精准营销:精准剖析消费者购买行为与偏好特征,企业能够制定高度针对性的营销策略。。。。。。

优化企业运营管理:依交易数据深度洞察,企业可实现库存的动态优化配置,精准把控采购量与补货时机,。。。。。。(见完整论文)

三、实证分析

完整代码和数据

完整报告加代码加数据集

数据集特征具体如下:

User_ID:每个用户的唯一标识符(例如,UUID 的缩写版本)

Product_ID: 每件商品的唯一编码(例如,UUID 的缩写版本)

类别: 商品类别(例如,电子产品、服装、运动等)

价格: 应用任何折扣之前的产品原价

折扣 (%): 应用于产品的折扣百分比

Final_Price: 应用折扣后商品的最终价格

Payment_Method:用于付款的方式(例如,信用卡、UPI、网上银行)

Purchase_Date:交易发生的日期,格式为 MM-DD-YYYY

首先读该数据集,展示前五行:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号
import seaborn as sns

file_path = 'ecommerce_dataset_updated.csv'

df = pd.read_csv(file_path)

df.head()

该图展示了数据集的前五行数据,每一行代表一笔交易。数据集中包含 User_ID(用户 ID)、Product_ID(产品 ID)、Category(产品类别,包括 Sports、Clothing、Toys 和 Beauty 等)。从这些数据可以初步分析出不同类别产品的价格范围。。。

接下来进行数据特征查看:

数据缺失值情况

 

所有列的缺失值数量均为 0

描述性统计分析:

df.describe()

该图展示了 Price (Rs.)、Discount (%) 和 Final_Price (Rs.) 三列数据的基本统计信息:count 均为 3660,表示没有缺失值。mean(平均值)分别为 254.800675、18.825137 和 206.906579,显示。。。

接下来进行可视化类别分布:

plt.figure(figsize=(10, 6),dpi=200)
sns.countplot(data=df, x='Category', palette='viridis', order=df['Category'].value_counts().index)
plt.title('产品类别分布')
plt.xlabel('类别')
plt.ylabel('数量')
plt.xticks(rotation=45)
plt.show()

上图是产品类别分布的柱状图:Home & Kitchen(家居与厨房)、Books(书籍)、Clothing(服装)、Toys(玩具)、Sports(运动)和 Beauty(美妆)、Electronics(电子产品)七类产品的数量分布情况。。。。

接下来查看支付方式分布情况:

plt.figure(figsize=(8, 5),dpi=200)
sns.countplot(data=df, x='Payment_Method', palette='pastel', order=df['Payment_Method'].value_counts().index)
plt.title('支付方式分布')
plt.xlabel('支付方式')
plt.ylabel('数量')
plt.show()

各支付方式的使用数量较为接近,其中 Credit Card 和 UPI 的使用量稍高。这有助于商家了解消费者的支付偏好,优化支付流程和相关服务。。。

接下来查看折扣与最终价格的分布情况:

plt.figure(figsize=(10, 6),dpi=200)
sns.scatterplot(data=df, x='Discount (%)', y='Final_Price(Rs.)', hue='Category', palette='deep', alpha=0.7)
plt.title('不同类别商品折扣与最终价格的关系')
plt.xlabel('折扣(%)')
plt.ylabel('最终价格(卢比)')
plt.legend(title='类别', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.show()

该图展示了不同类别商品折扣与最终价格的关系:图中有 Sports、Clothing、Toys、Beauty、Books、Home & Kitchen、Electronics 七类商品,纵轴为最终价格,横轴为折扣。

接下来基于月度交易分析趋势:

plt.figure(figsize=(12, 6),dpi=200)
monthly_sales.plot(kind='bar', color='skyblue')
plt.title('月度交易趋势')
plt.xlabel('月份')
plt.ylabel('交易数量')
plt.xticks(rotation=45)
plt.show()

接下来进行相关性矩阵热力图查看:

plt.figure(figsize=(8, 6),dpi=200)
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f', linewidths=0.5)
plt.title('价格、折扣与最终价格的相关性矩阵')
plt.show()

上图是价格、折扣与最终价格的相关性矩阵:矩阵中展示了 Price (Rs.)、Discount (%) 和 Final_Price (Rs.) 两两之间的相关性。。。。

接下来按销售量排名前十的产品,如下:

plt.figure(figsize=(10, 6),dpi=200)
top_products.plot(kind='bar', color='salmon')
plt.title('按销售量排名前十的产品')
plt.xlabel('产品 ID')
plt.ylabel('销售数量')
plt.xticks(rotation=45)
plt.show()

该图是按销售量排名前十的产品的柱状图:图中展示了销售量排名前十的产品 ID 对应的销售数量。这些产品的销售数量大致相同,说明在销量最高的这些产品中没有出现某一产品特别突出的情况。

接下来查看支付方式分布情况:

plt.figure(figsize=(8, 8),dpi=200)
payment_method_dist.plot(kind='pie', autopct='%1.1f%%', colors=['#ff9999','#66b3ff','#99ff99','#ffcc99'], startangle=140)
plt.title('支付方式分布情况')
plt.ylabel('')

图中展示了 Cash on Delivery(货到付款)、Net Banking(网上银行)、Debit Card(借记卡)、UPI、Credit Card(信用卡)五种支付方式所占的比例。可以看到。。。

接下来进行模型建立,首先,对分类变量进行编码,准备特征(X)和目标(y),划分训练集和测试集:

# 首先,对分类变量进行编码
df_encoded = df.copy()

# 使用独热编码对 'Payment_Method' 进行编码
df_encoded = pd.get_dummies(df_encoded, columns=['Payment_Method'], drop_first=True)

# 准备特征(X)和目标(y)
X = df_encoded[['Price (Rs.)', 'Discount (%)'] + [col for col in df_encoded.columns if 'Payment_Method' in col]]
y = df_encoded['Final_Price(Rs.)']

# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练线性回归模型
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = lr_model.predict(X_test)

# 评估模型
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

 。。。。总体来看,这是在对比三种模型的预测效果,随机森林回归模型在均方误差和 R2 分数上表现较好。

接下来进行模型评价指标比较:

# 绘制均方误差直方图
plt.figure(figsize=(10, 6),dpi=200)
plt.bar(x - bar_width / 2, mse_scores, width=bar_width, label='均方误差', color='skyblue')
plt.title('模型性能评估 - 均方误差与 R2 分数')
plt.xlabel('模型')
plt.ylabel('指标值')
plt.xticks(x, models)
plt.legend()

# 生成 x 轴位置
x = np.arange(len(models))

# 绘制 R2 分数直方图
plt.figure(figsize=(10, 6),dpi=200)
plt.bar(x, r2_scores, width=bar_width, color='green')
plt.title('不同回归模型的 R2 分数对比直方图')
plt.xlabel('回归模型')
plt.ylabel('R2 分数')
plt.xticks(x, models)
plt.show()

图中展示了线性回归、随机森林回归和梯度提升回归三种模型的 R2 分数。可以看出这三种模型的 R2 分数都非常高且接近 1,其中随机森林回归和梯度提升回归的 R2 分数几乎相同且略高于线性回归,这表明这三种模型都能很好地拟合数据,但随机森林回归和梯度提升回归在拟合优度上稍胜一筹。

四、研究结论

(一)数据洞察

数据完整性与质量保障成效显著:数据集完整性高,无缺失值干扰,为精准分析筑牢根基。各变量数据类型明晰、分布特征显著,消费者、产品及交易信息完备,有力支撑深度数据挖掘,确保分析结果可靠、结论坚实。。。。。。

(二)模型评估

模型优劣对比鲜明精准:线性回归、随机森林与梯度提升回归模型对比清晰,随机森林与梯度提升回归在均方误差与 R² 分数表现卓越。。。。

变量关联诠释精准有力:价格与最终价格紧密正相关,为。。。。

(三)策略指引

企业决策智慧升华:定价策略应依产品类别、市场竞争与成本效益精准权衡,巧用折扣杠杆激发消费活力;库存管。。。。。。。

研究展望高瞻远瞩:后续研究将深挖消费者行为动机、融合前沿技术拓展分析视野、强化动态实时分析能力、跨领域协同创新,为电子商务企业在瞬息万变的市场中持续领航、开拓创新、稳健发展注入不竭动力与深邃智慧源泉。

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐