电商数据分析项目全流程实战:从数据建模到可视化洞察
创作时间:
作者:
@小白创作中心
电商数据分析项目全流程实战:从数据建模到可视化洞察
引用
CSDN
1.
https://blog.csdn.net/2201_75990437/article/details/145950359
电商数据分析是现代商业决策的重要工具。本文将带领读者从零开始构建一个完整的电商数据分析项目,涵盖数据建模、数据生成、数据导入、SQL高级查询、Excel分析以及Python可视化等多个环节。通过这个项目,读者可以掌握从数据准备到业务洞察的全流程方法,为实际工作中的数据分析提供参考。
项目背景
基于电商业务场景,通过构建用户、商品、订单及订单明细四张核心数据表,结合SQL高级查询、Excel Power Query和Python可视化技术,实现了多维度的业务分析,最终输出用户画像、销售趋势、品类偏好等关键指标,为运营决策提供数据支持。
项目结构
E-commerce-Analysis/
├── Excel_Analysis/ # Excel分析文件
│ ├── 不同省份用户的消费情况(数据透视表).xlsx
│ ├── 不同年龄段用户的订单数量与消费金额(数据透视表).xlsx
│ ├── RFM分析.xlsx
│ ├── 不同支付方式的订单数量占比.png
│ ├── 每月订单金额的趋势变化.png
│ └── 不同省份订单金额汇总.png
├── Python_Files/ # Python文件
│ ├── data_generator.ipynb
│ ├── data_import.ipynb
│ └── data_mapping.ipynb
├── SQL_Advanced_Query_Results/ # SQL高级查询分析结果
│ ├── 不同年龄段用户购买的热门商品品类.csv
│ ├── 不同省份用户的消费总额分布.csv
│ ├── 不同支付方式下的平均订单金额和订单数量.csv
│ ├── 每个品类商品的销售数量和销售金额.csv
│ ├── 每月订单数量和平均订单金额的变化趋势.csv
│ └── 月度销售趋势分析.csv
├── SQL_Scripts/ # SQL脚本文件
│ ├──查询分析/
│ │ ├── 不同年龄段用户购买的热门商品品类.sql
│ │ ├── 不同省份用户的消费总额分布.sql
│ │ ├── 不同支付方式下的平均订单金额和订单数量.sql
│ │ ├── 每个品类商品的销售数量和销售金额.sql
│ │ ├── 每月订单数量和平均订单金额的变化趋势.sql
│ │ └── 月度销售趋势分析.sql
│ ├──创建表/
│ │ ├── 建立用户表.sql
│ │ ├── 建立商品表.sql
│ │ ├── 建立订单表.sql
│ │ └── 建立订单详细表.sql
├── SQL_Data_Tables/ # SQL数据表
│ ├── users.dbf
│ ├── products.dbf
│ ├── orders.dbf
│ └── order_details.dbf
├── Original_Data/ # 原始数据-Python生成
│ ├── users.csv
│ ├── products.csv
│ ├── orders.csv
│ └── order_details.csv
└── E-R_Diagram.png # 数据表ER图
技术栈与工具
- 数据库建模:Navicat Premium 17
- 数据分析:SQL、Excel Power Query
- 可视化:Python (Matplotlib/Seaborn)、Excel 数据透视图
- 数据生成:Python Faker 库
核心维度分析
1.用户画像分析
- 不同年龄段用户购买的热门商品品类
- 各省份用户的消费总额分布
2.交易行为分析
- 支付方式对应的订单金额与数量
- 月度订单量及平均金额趋势
3.商品运营分析
- 各品类商品的销量与销售额排名
关键实现步骤
1.数据建模(ER图)
通过外键关联实现用户-订单-商品的多层级关系。
2.Python生成数据示例
生成用户数据
# 生成用户数据
generated_usernames = set() # 用于跟踪已生成的用户名的集合
users = []
for user_id in range(1, 1001): # 生成1000个用户
while True: # 循环直到生成一个不重复的用户名
username = fake.user_name().replace(' ', '_').lower() # 生成用户名,并处理为统一格式(例如,移除空格,转换为小写)
if username not in generated_usernames:
generated_usernames.add(username) # 将用户名添加到集合中
break # 跳出循环
user = {
"user_id": user_id,
"username": username,
"registration_date": fake.date_between('-2y').strftime('%Y-%m-%d'), # 日期位于当前日期之前两年(-2y)到当前日期之间的某个节点
"province": fake.province(),
"age": random.randint(18, 62), # 年龄为18到62岁
"gender": random.choice(['M', 'F', 'Unknown'])
}
users.append(user)
3.Python连接SQL导入数据示例
# 创建数据库连接
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/ecommerce_analysis')
# 读取 CSV 文件
users = pd.read_csv(r'D:\Money\自研项目\Ecommerce-Analysis\原始数据\users.csv')
products = pd.read_csv(r'D:\Money\自研项目\Ecommerce-Analysis\原始数据\products.csv')
# 定义数据类型映射,确保与数据库表结构匹配
user_types = {
'user_id': Integer(),
'username': String(50),
'registration_date': Date(),
'province': String(20),
'age': Integer(),
'gender': Enum('M', 'F', 'Unknown')
}
product_types = {
'product_id': Integer(),
'product_name': String(100),
'category': String(30),
'price': DECIMAL(10, 2),
'stock': Integer()
}
# 将数据插入到 SQL 表中,同时指定数据类型
users.to_sql('users', con=engine, if_exists='append', index=False, dtype=user_types)
products.to_sql('products', con=engine, if_exists='append', index=False, dtype=product_types)
4.SQL高级查询示例
不同年龄段热门品类分析
-- 不同年龄段用户购买的热门商品品类
SELECT
CASE
WHEN u.age BETWEEN 18 AND 25 THEN '18 - 25'
WHEN u.age BETWEEN 26 AND 35 THEN '26 - 35'
WHEN u.age BETWEEN 36 AND 45 THEN '36 - 45'
WHEN u.age BETWEEN 46 AND 55 THEN '46 - 55'
ELSE '56+'
END AS 年龄分组,
p.category 商品品类,
COUNT(*) AS 购买数量
FROM
users u
JOIN
orders o ON u.user_id = o.user_id
JOIN
order_details od ON o.order_id = od.order_id
JOIN
products p ON od.product_id = p.product_id
GROUP BY
年龄分组, 商品品类
ORDER BY
年龄分组, 购买数量 DESC;
5. Excel Power Query 分析
RFM模型构建
R(最近购买时间)、F(购买频率)、M(消费金额) 通过数据透视表动态计算,划分用户价值等级。
部分示例
6. Python可视化
产品类别与销售数量的散点图矩阵(示例代码)
# 合并 order_details 和 products 表
merged_df = pd.merge(order_details, products, left_on='product_id', right_on='product_id')
# 选择需要的列
scatter_data = merged_df[['category', 'quantity']]
# 绘制散点图矩阵
g = sns.pairplot(scatter_data, hue='category')
plt.title('产品类别与销售数量的散点图矩阵')
plt.show()
散点图矩阵
项目亮点
- 全流程覆盖:从数据生成、ETL、分析到可视化,完整闭环。
- 高效查询优化:通过索引和子查询提升SQL性能(如订单表按月份分区)。
- Excel 透视分析:Excel多维度数据透视表。
资源下载
- 项目完整代码与数据:Kevin-source-art/Ecommerce-Analysis
https://github.com/Kevin-source-art/Ecommerce-Analysis - 百度网盘附件:百度网盘链接
https://pan.baidu.com/s/1BJkNrADeNd4cdj3KINASxw?pwd=2xzv
包含SQL脚本、Python文件、原始数据、分析结果及可视化文件。
总结
本项目通过整合SQL、Excel和Python技术,构建了一套标准化的电商数据分析流程,涵盖从数据建模到业务洞察的全链路方法。未来可扩展实时数据接入,进一步提升分析深度。
版权声明:原创内容,转载请注明出处。数据集为Python模拟器生成,仅用于技术学习。
热门推荐
褪黑素使用指南:安全性、副作用及注意事项
iOS个人自动化教程:开启特定App后自动执行指定动作
宝宝辅食添加的禁忌,父母必须知道
居高声自远,非是藉秋风——论个人品格的力量与自我提升的价值
央视热播剧:什么样的家庭,塑造什么样的人格、性格、品格
如何给老年人进行床上照护?附全图详解,建议收藏
成都东部新区:携手成体,智慧医疗赋能,打造健康新高地
锂离子电池预充电:提升性能与延长寿命的关键步骤
我国科学家成功研制世界首款仿生三维架构电子皮肤
在白云机场转机不用重新值机,东航开通"五一"转机服务
国中水务收购汇源之路:拟购股权被冻结,波折频起未来几何?
100cc、125cc摩托车胎压打多少才正确?一眼就懂摩托车胎压对照表
《第五人格》玩具商实战攻略:掌握技巧与策略,轻松制胜
德国牧羊犬:聪明忠诚的多功能犬种
适合表达爱意的20首歌曲推荐(歌单合集)
小米(Mi) MIX 手机Fastboot线刷详细教程,通过线刷的升级方法
跟着这组明信片,漫“邮”韶关!
水晶科学根据及原理
中世纪黑死病席卷欧洲,欧洲人口损失惨重,历史进程为此改变!
夫西地酸软膏的七种临床应用
自驾游新疆 美景在路上
深度剖析吸塑工艺:从原理到应用的全面解读
通过设定愿景克服数字化转型的挑战
探索易经智慧,寻找宝宝名字中的吉祥之意
电化学高级氧化技术处理难降解有机废水
“爱新觉罗”这个姓氏源自哪里,它是个古老的姓氏吗?
治疗肌无力的特效药
《天官赐福》中宣姬的悲剧结局
从“铁娘子”到“董阿姨”:董明珠与格力的三十年
8岁男孩被失眠折磨8年:“妈妈,我睡不着好难受啊”......