【Python 数据分析 实战案例】通过用户和订单的数据分析,制定营销策略

【Python】消费者行为分析项目——精准营销 本项目采用模拟的客户交易数据sell.sql进行分析,此数据包含40000条交易流水数据,每条交易记录包含客户id、交易金额、交易附言和交易时间四个字段,如下表所示。字段名称中文名称备注user_id客户id客户唯一标识payment交易金额正为支出、负为收入postscript交易附言为此项交易的文字描述unix_time交易时间unix时间戳。 阅读详情

在互联网行业中,电子商务领域绝对是数据分析用途最多的地方,各大电商平台都依赖数据分析帮助其挖掘用户订单增长机会。比如某宝的随手买一件,核心思路也就是根据用户的日常浏览内容及停留时间,以及订单的关联度来进行推荐的。

本篇文章,我们来通过一个真实的电商数据集进行分析,在复习前面内容的基础上,也可以感受一下电商数据分析的分析流程。

1、需求说明

最近某个电商网站需要策划一场推广活动,通过发短信的方式,向客户发送广告和优惠信息,吸引他们来购物。但由于预算及短信限制,无法对全量客户发送,需要找出最有可能转化的人群,定向发送推广信息,同时,下单的行为往往也跟时间呈现一定的关联关系,推送时间也需要考虑。

基于以上的需求说明,作为数据分析师,我们就需要根据需求,制定自己的分析计划。那么我们的任务就是:

  • 通过数据分析,找到最有可能转化的人群特征(比如年龄、性别、地域等)。
  • 通过数据分析,给出最适合发送推广短信的时间。

任务明确之后,就需要考虑我们要完成以上任务,需要哪些数据支撑,开始找数据部门提供相应的数据支持。

通过一顿友(唇)好(枪)协(舌)商(战),最终从数据部门要到如下数据:

  • 用户行为表:最近6个月的用户行为数据。也就是下单数据
  • VIP数据:用户VIP会员开通数据。
  • 用户数据:用户个人信息相关数据。

拿到数据之后,我们就可以大展拳脚了。

2、数据集获取及分析

为了方便我们学习,需要自己模拟一些相关数据,不想模拟的话,可以在公众号联系获取。

拿到数据后,解压后可以看到如下几个文件:

  • user_behavior_time_resampled.csv (用户行为数据)
  • vip_users.csv (VIP用户数据)
  • user_info.csv(用户数据)

我们先来看一下各个表的字段说明:

user_behavior_time_resampled.csv vip_users.csv

user_info.csv

3、加载数据

从这里开始,我们就开始使用我们前面了解的一些包和库来读取数据了,这里首先是使用pandas来加载数据。

import pandas as pd
df_user_log = pd.read_csv("EComm/user_behavior_time_resampled.csv")

df_vip_user = pd.read_csv("EComm/vip_user.csv")

df_user_info = pd.read_csv("EComm/user_info.csv")

df_user_log

df_vip_user

df_user_info

加载完后,输出如下:

❝

这里,df_user_log表中有一个 time_stamp 和 timestamp 字段,我们需要了解一下这两个字段的意思。

先看一下这两个字段的边界值

time_stamp_max = str(df_user_log['time_stamp'].max())

time_stamp_min = str(df_user_log['time_stamp'].min())

print("time_stamp max: " + time_stamp_max, "time_stamp min: " + time_stamp_min)

timestamp_max = str(df_user_log['timestamp'].max())

timestamp_min = str(df_user_log['timestamp'].min())

print("timestamp max: " + timestamp_max, "timestamp min: " + timestamp_min)

输出如下:

time_stamp max: 1112, time_stamp min: 511

timestamp max: 86399.99327792758, timestamp min: 0.10787397733480476

可以看到,time_stamp 的最大值为 1112,最小值为 511,而 timestamp 的最大值为 86399.99 最小值为 0.1。

从数据集的描述中,用户行为表是用户 6 个月的行为,那 time_stamp 最大 1112,最小 511 看起来就特别像日期。代表最小日期是 5 月 11 日,最大日期是 11 月 12 日。

那既然 time_stamp 是日期,那 timestamp 会不会是具体的时间呢?timestamp 的最大值为 86399 ,而一天最大的秒数为 24*3600 = 86400。两个数字非常接近,那基本可以认定 timestamp 代表的是一天中的第几秒发生了这个行为。

破解了两个时间字段的问题,为了避免后面有歧义,我们将 time_stamp 列重命名为 date。

df_user_log.rename(columns={'time_stamp':'date'}, inplace = True)

df_user_log

完成数据读取,了解了各个字段的含义之后,我们就可以开始进行数据清洗了。

4、数据清洗

针对数据分析中使用的数据集,我们需要尽可能去了解数据的完整性,与我们数据分析无关的字段,不清洗也没关系。但是,重点的分析维度,如果出现缺失,我们就要考虑是否进行补全或者是直接去除。

我们先来看下缺失值情况:

(1)user_log表

df_user_log.isnull().sum()

输出如下:

user_id            0

item_id            0

cat_id             0

seller_id          0

brand_id       18132

date               0

action_type        0

timestamp          0

dtype: int64

从上面的结果来看,log表有18000多数据缺少品牌数据,缺失率比较低0.16%(1.8w/1098w),一般这个数量级不会影响到数据分析的整体严谨性,我们暂不做处理。

(2)user_info表

df_user_info.isnull().sum()

输出如下:

user_id         0

age_range    2217

gender       6436

dtype: int64

从结果中可以看出,info表中有2217条数据缺失年龄数据,6436条数据缺失性别字段。但是我们是有对用户的年龄和性别做分析的,而且补全的话也是完全没规律补全的,所以这里我们就直接删除。

df_user_info = df_user_info.dropna()

df_user_info

3、vip_user表

df_vip_user.isnull().sum()

输出:

user_id        0

merchant_id    0

label          0

dtype: int64

从结果来看,vip表无缺失,不需要处理。

5、数据分析

做完以上的准备工作,就要开始进入我们最核心的数据分析工作了。

还记得我们的分析任务吗? 第一是要定位需要推广的人群,第二是确定推广信息发送的时间。那么针对我们的两个任务,来进行接下来的工作。

(1)用户年龄分析

我们先通过DataFrame的value_counts函数来看一下年龄的分布情况:

df_user_info.age_range.value_counts()

输出:

3.0    110952

0.0     90638

4.0     79649

2.0     52420

5.0     40601

6.0     35257

7.0      6924

8.0      1243

1.0        24

Name: age_range, dtype: int64

除开未知的数据我们不看,可以发现,取值为3和4的是占比最大的。3和4又分别代表25-30岁和30-34岁。我们再用代码计算出25-34岁的用户比例。

user_ages = df_user_info.loc[df_user_info["age_range"] != 0, "age_range"]

user_ages.loc[(user_ages == 3) | (user_ages == 4) ].shape[0] / user_ages.shape[0]

输出:

0.5827529275078729

可以看出,25-34岁区间的用户比例在58%。

##(2)用户性别分析 接下来,我们再用value_counts函数来分析性别。

df_user_info.gender.value_counts()

输出:

0.0    285634

1.0    121655

2.0     10419

Name: gender, dtype: int64

从字段含义来看,0代表女性,1代表男性,2代表未知。由此可以得出,平台的核心用户群体是女性,数量是男性的2.35倍。

截止到这里,我们通过用户群体的分析,已经可以得出:平台的核心用户是25-34岁的女性,但这样情况是否符合实际呢?毕竟我们只是分析了注册用户信息,并没有与订单数据结合来分析。说不定只是女性注册的多,但下单的少。所以下一步,我们将用户信息和订单数据来结合起来验证一下猜想是否合理。

(3)将用户信息和订单信息结合

上面聊到了,我们需要将用户信息和订单信息结合起来分析是否是女性的购买力更强。但是用户数据和订单数据属于在不用的表中,那我们该怎么处理呢? 可以看一下数据情况,发现用户表和订单表都有一个叫user_id的字段,这样,我们就有办法把两张表关联起来了。

通过user_id将两个表关联起来:

df_user_log = df_user_log.join(df_user_info.set_index('user_id'), on = 'user_id')

df_user_log

输出:

由上面的输出可以看到,用户表的年龄和性别就被合并到订单表了。接下来我们就可以根据下单用户来分析用户的性别和年龄了。

(4)各年龄段的用户下单情况分析

df_user_log.loc[df_user_log["action_type"] == "order", ["age_range"]].age_range.value_counts()

输出:

3.0    172525

4.0    153795

0.0    114908

5.0     79298

6.0     61534

2.0     59072

7.0     10785

8.0      1924

1.0        21

Name: age_range, dtype: int64

通过上述结果,可以看出,下单的年龄段和用户信息的分析基本一致,25-34岁的人占比59.9%。

(5)各性别用户的下单情况分析

df_user_log.loc[df_user_log["action_type"] == "order", ["gender"]].gender.value_counts()

输出:

0.0    467381

1.0    161999

2.0     24482

Name: gender, dtype: int64

通过上述结果可以看出,依然是女性的下单量更大。到这里,我们基本可以下结论:我们发送推广短信的群体为25-34岁的女性用户。

到这里,我们的任务基本完成了一半了,已经确定好了发送短信的群体。但是另外一个任务是确定发送时间。我们接着往下分析。

(6)各日期的下单情况分析

这里我们通过对各个日期分组,查看哪个时间段下单的人群最多。因为数据是近6个月的数据,那我们就把数据分为6个组,来看一下:

df_user_log.loc[df_user_log["action_type"] == "order", ["date"]].date.value_counts(bins = 6)

输出:

(1011.0, 1111.0]    333721

(811.0, 911.0]       70699

(911.0, 1011.0]      69427

(510.399, 611.0]     68776

(611.0, 711.0]       62901

(711.0, 811.0]       54053

Name: date, dtype: int64

可以看出,在10月11日到11月11日下单的数量最多。分析完日期,我们再来看一下哪个时间段下单的比较多。

(7)各时间段下单情况分析

timestamp 字段存储了每条记录下单的时间,从当天零点开始累积的秒数。并不是很直观,我们更希望可以基于小时级的数据去分析。所以我们考虑基于 timestamp 这一列,新创建一列时间,来表示小时。

df_user_log.loc["time_hours_view"] = df_user_log["timestamp"]/3600

df_user_log

输出:

我们直接用 value_count 来统计新增的 time_hours_view 字段,就可以实现对一天中的小时级分布进行分布统计。我们以两个小时为尺度,来查看分布,所以分为 12 组。

df_user_log.loc[df_user_log["action_type"] == "order", ["time_hours_view"]].time_hours_view.value_counts(bins = 12)

输出:

(20.0, 22.0]     94209

(22.0, 24.0]     91529

(18.0, 20.0]     91330

(16.0, 18.0]     85681

(14.0, 16.0]     75372

(12.0, 14.0]     63580

(10.0, 12.0]     50909

(8.0, 10.0]      38938

(6.0, 8.0]       27962

(4.0, 6.0]       19428

(2.0, 4.0]       12639

(-0.025, 2.0]     8000

Name: time_hours_view, dtype: int64

从上述结果可以看出,晚上八点到十点是下单最多的。

到这里,我们根据需求进行数据分析的任务就已经全部完成了。已经基本确定,推广短信发送群体为:25-34岁的女性用户,发送短信的最佳时间周期是10月下旬到11月中旬的晚上八点到十点。

Python经验分享

学好 Python 不论是用于就业还是做副业赚钱都不错,而且学好Python还能契合未来发展趋势——人工智能、机器学习、深度学习等。
小编是一名Python开发工程师,自己整理了一套最新的Python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,这份【最新全套Python学习资料】 一定对你有用!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)

我已经上传至优快云官方,如果需要可以扫描下方官方二维码免费获取【保证100%免费】

*今天的分享就到这里,喜欢且对你有所帮助的话,记得点赞关注哦~下回见 !

淘宝APP用户行为数据分析案例(附python代码及注释) 淘宝APP用户行为数据分析案例 一.分析背景与目的 1.1背景与数据限制 电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务。得益于算法技术的发展,淘宝APP给买方提供了搜索、推荐及广告等系统和功能,使用户能高效地触达感兴趣或有购买意愿的商品。上述系统和功能来源于海量的用户行为数据,而此后的数据变化又反馈到系统中,不断提升系统和功能的能效。此外,对于其他的如优惠活动,购物节,APP... 阅读详情

相关推荐

Python 数据智能实战 (14):[综合实战] 智能用户分群与精准营销策略生成

— 终极演练!从数据到策略,融合 LLM 完成端到端电商用户运营项目各位数据智能探索者,欢迎来到我们专栏的终极实战关卡!经过前面一系列的学习和实践,我们已经不再仅仅是数据的处理者和分析者,更是具备了利用大语言模型 (LLM) 这一前沿 AI 技术,从数据中挖掘更深层价值、驱动更智能决策的潜力探索者。我们学会了如何让 Python 与 LLM 对话,如何利用 Embeddings 理解文本语义,如何将 LLM 特征融入传统模型,如何评估效果并坚守安全底线。

kakaZhui的博客 1126

来,看一个真实的用户分析案例!

大家好,我是小z,也可以叫我阿粥今天给大家分享一个网易大客户分析的案例,一些思路和技巧,值得借鉴。在直播行业,用户的付费活跃规模及支付习惯与传统行业有很大的不同。直播大R付费是低频高arppu,可能一笔消费就达10万元,可能5分钟刷出100万,但是一个月就刷那么一两次,很不规律。因此,传统的“二八定律”早已不再适用。事实上,在我们的日常流水中,往往是1%的人撬动了80%以...

SeizeeveryDay的博客 1515

利用Python和SQL进行数据分析:纯思路

本文将结合我的实际工作经验,为大家分享如何利用Python和SQL进行高效的数据分析和处理,并通过实战案例展示其强大功能,希望能为大家带来一些启发和帮助。随着数据量的不断增长和数据分析需求的日益复杂,Python和SQL在数据分析中的地位将越来越重要。在实际的数据分析项目中,数据清洗往往占据了大量的时间。通过绘制柱状图、折线图、散点图等,我们可以快速发现数据中的规律和趋势,为后续的建模和预测提供依据。相信通过本文的分享和实战案例的展示,大家已经对Python和SQL在数据分析中的应用有了更深入的了解。

weixin_44228413的博客 1583

Python+SQL万字案例:用户行为数据分析实战!

freedom_lime| 作者掘金|来源https://juejin.im/post/6844904202590748679#heading-01项目背景项目对京东电商运营数据集...

SeizeeveryDay的博客 2709

超市RFM用户分层实战案例源码和数据集分享

之前我就已经做过B站相关的推荐了这里我就不废话了直接上代码,RFM都不知道是啥东西的多去看看其他博主写的 本次数据集获取方式: 关注:YOLO的学习进阶日常 回复:RFM用户分层实战案例 import pandas as pd import numpy as np data=pd.read_csv("./supermarket_data.csv",encoding="gbk") data.head() 客户名称 付款日期 国家/

qq_42907061的博客 3084

探索电商运营中的智能营销策略

随着互联网技术的飞速发展,电商行业竞争日益激烈。传统的营销方式已经难以满足电商企业的发展需求,智能营销策略应运而生。本文的目的在于深入探索电商运营中的智能营销策略,涵盖从核心概念到实际应用的各个方面,包括智能营销的原理、算法、实际案例以及未来发展趋势等,旨在为电商从业者提供全面且实用的智能营销知识,帮助他们在电商运营中更好地运用智能营销手段,提高营销效果和竞争力。本文共分为十个部分。第一部分为背景介绍,阐述了文章的目的、预期读者和文档结构概述,并给出了相关术语的定义。

2501_92132293的博客 740

python预测模型案例_案例2:精准营销的两阶段预测模型1

案例2:精准营销的两阶段预测模型1案例2:精准营销的两阶段预测模型1数据集模型的select查询方法返回数据集对象 think\model\Collection,该对象继承自think\Collection,因此具有数据库的数据集类的所有方法,而且还提供了额外的模型操作方法。基本用法和数组一样,例如可以遍历和直接获取某个元素。//模型查询返回数据集对象$list=User::where('i...

weixin_39793553的博客 690

基于 Python 的电商用户画像构建与营销策略分析案例

在电商行业的激烈竞争中,精准把握用户需求、实施个性化营销策略成为企业脱颖而出的关键。构建详细准确的用户画像,能够深入了解用户特征、行为习惯和消费偏好,为企业决策提供有力支撑。在如此庞大的市场规模下,通过数据分析实现精准营销的需求愈发迫切。本案例运用 Python 技术,对某电商平台用户数据进行深度挖掘,构建用户画像,并基于此制定针对性营销策略。通过上述改进,能够显著提升数据收集的灵活性、数据清洗的精准度、用户画像构建的完整性以及营销策略制定的针对性,助力电商企业更精准地把握用户需求,提升市场竞争力。

daqsdfas的博客 1539

快乐学Python,通过用户和订单的数据分析,制定营销策略【实战】

在互联网行业中,电子商务领域绝对是数据分析用途最多的地方,各大电商平台都依赖数据分析帮助其挖掘用户订单增长机会。比如某宝的随手买一件,核心思路也就是根据用户的日常浏览内容及停留时间,以及订单的关联度来进行推荐的。

我爱娃哈哈的专栏 1147

电商运营中的数据分析与市场策略

随着互联网技术的飞速发展,电子商务已成为商业领域的重要组成部分。电商运营的成功与否直接关系到企业的生存和发展。在电商运营过程中,涉及到海量的数据,如用户行为数据、销售数据、市场竞争数据等。如何从这些数据中提取有价值的信息,制定有效的市场策略,是电商企业面临的重要挑战。本文的目的就是探讨如何运用数据分析的方法和技术,为电商运营制定科学合理的市场策略,提高电商企业的竞争力和盈利能力。

AI Agent Harness Engineering 1090

云卓遥控器+DIY高清摄像机的方案(完美接入原系统)

发云卓H16 1080P数图控三合一10公里 其中它月

fgh00000的博客 1万+

111个Python数据分析实战项目,代码已跑通,数据可下载

111个Python数据分析实战项目,代码已跑通,数据可下载

17万+

DC/DC恒压输出控制原理与应用

DC/DC恒压输出控制

propor的专栏 4280

python电商用户消费数据分析实战(一)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

qq_44715621的博客 3349

DAZ STUDIO 快速渲染技巧

DAZ STUDIO 快速渲染技巧: 本文将向您展示几个快速渲染技巧。您将学习如何使您的Daz Iray渲染和照明在Daz工作室内更快。 当你有一个大场景,这可能需要很多小时进行渲染。 但是如果你想大幅度降低渲染时间呢?这篇文章的提示应该能让你达到这个目标。 首先,我们需要弄清楚一件事——没有“完美的环境或设置”这样的东西。是因为渲染设置是高度个性化和主观性的东西,这主要取决于场景和硬件。如果你有一个功能强大的计算机,你可以允许更多的低渲染时间,反之亦然。因此,一切都取决于您尝试渲染的对象和机器。

DAZSTUDIO的博客 9646

SpringBoot 自定义注解来实现动态切换数据源

/ 初始化数据源@Override@Inherited@Pointcut(“@annotation(包名.aop.DataSource)”) public void@Pointcut 注解定义了一个切点,名称为 dynamicDataSource。@annotation(包名.aop.DataSource) 表示这个切点匹配所有带有 @DataSource 注解的方法。

晴天飛 雪的博客 1838

Python数据分析案例-电商用户留存同期群分析

利用Python实现电商订单的用户留存同期群分析

maiyida123的博客 1816

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 334

Python实现电商订单的数据分析

一、数据信息 数据来源:https://www.heywhale.com/mw/dataset/5f64a07b71c700003072df60/file 说明:本数据集共有104557条数据,共计11个字段 字段: id : 序号 orderID :订单id userID :用户id goodsID :商品id orderAmount :订单总额 payment :买家实际支付金额 chanelID :渠道id platfromType :购买渠道 orderTime :订单产.

potterwand的博客 1万+

基于CPCC_S_TASK_LIST_MAINTAIN的工艺路线组件批量分配实战与避坑指南

本文详细解析了SAP PP模块中基于CPCC_S_TASK_LIST_MAINTAIN函数实现工艺路线组件批量分配的实战技巧与避坑指南。针对批量分配的核心挑战,提供了参数配置、BAPI协同使用、Excel导入等解决方案,并分享了大容量数据处理优化经验,帮助用户高效完成工艺路线组件分配任务。

weixin_33563728的博客 306

Winform利用动画控制实现各种特效

动画绘制控制类代码 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Threading; using System.Windows.Forms; namespace Mengliao.CSharp.A14 { #region 动画类型枚举 // 本例为了简单起见没有使用见名知意的名称,如用于实际可将这些枚举成员更名

LilyCoder的博客 2501
上一篇: 怎么自学python,大概要多久?python多久上手?
下一篇: Python的数据分析与爬虫
大模型-小原
博客等级 码龄4年 2689粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值