草庐IT

大数据精准营销应用(一)

PqqqqqqY 2023-04-05 原文

文章目录​​​​​​​

前言

一、精准营销简介

二、大数据精准营销过程

三、大数据精准营销方式

四、项目目标

五、项目流程

六、数据的处理​​​​​​​

数据的预览

数据的读取

数据的解析

数据预处理

异常值处理 

 缺失值处理

 时间格式和时区转换

 量纲转化

重复数据处理

总结

前言

随着大数据时代的不断发展,大数据在生活方面的应用这门技术也越来越重要,很多人都开启了学学习大数据及家属,本文就介绍了大数据在精准营销方面的应用。


一、精准营销简介

        精准营销是指企业通过定量和定性相结合的方法,对目标市场的不同消费者进行细致分析,并根据他们不同的消费心理和行为特征,采用有针对性的现代技术、方法和指向明确的策略,从而实现对目标市场不同消费者群体强有效性、高投资回报的营销沟通。

      精准营销最大的优点在于“精准”,即在市场细分的基础上,对不同消费者进行细致分析,确定目标对象。

      精准营销的主要特点有以下几点:

      1)精准的客户定位是营销策略的基础。

      2)精准营销能提供高效、投资高回报的个性化沟通。过去营销活动面对的是大众,目标不够明确,沟通效果不明显。精准营销是在确定目标对象后,划分客户生命周期的各个阶段,抓住消费者的心理,进行细致、有效的沟通。

      3)精准营销为客户提供增值服务,为客户细致分析,量身定做,避免了用户对商品的挑选,节约了客户的时间成本和精力,同时满足客户的个性化需求,增加了顾客让渡价值。

      4)发达的信息技术有益于企业实现精准化营销,“大数据”和“互联网+”时代的到来,意味着人们可以利用数字中的镜像世界映射出现实世界的个性特征。

二、大数据精准营销过程

        传统的营销理念是根据顾客的基本属性,如顾客的性别、年龄、职业和收入等来判断顾客的购买力和产品需求,从而进行市场细分,以及制定相应的产品营销策略,这是一种静态的营销方式。 大数据精准营销不仅记录了人们的行为轨迹,还记录了人们的情感与生活习惯,能够精准预测顾客的需求,从而实现以客户生命周期为基准的精准化营销,这是一个动态的营销过程。

      1)助力客户信息收集与处理

      2)客户细分与市场定位

      3)辅助营销决策与营销战略设计

      4)精准的营销服务

      5)营销方案设计

      6)营销结果反馈

三、大数据精准营销方式

      在大数据的背景下,百度等公司掌握了大量的调研对象的数据资源,这些用户的前后行为将能够被精准地关联起来。具体方式包括以下几点

      1)实时竞价(RTB)

      2)交叉销售

      3)点告

      4)窄告

      5)定向广告推送

四、项目目标

1.通过对海量交易流水数据的深度分析和挖掘,构建全方位的客户标签体系。

2.基于客户标签体系,从基本信息、消费能力、行为习惯等多个维度对客户进行精准画像。

3.计算客户商品兴趣度排行榜,支持精准目标客户筛选。

五、项目流程

      先找到符合要求的数据集,导入MySQL数据库,使用pymsql将数据源提取到python,再进行数据预处理,再进行客户交易行为的分析,客户标签体系的构建最后进行精准营销的应用。

六、数据的处理​​​​​​​

数据的预览

数据来源于sql文件数据。

其中包含本项目包含客户在某平台的367万脱敏交易流水数据,交易时间跨度为5年。每条交易记录包含客户ID、交易时间、交易金额和交易附言四个字段,如下表所示︰ 

数据的读取

主要包括以下三个步骤︰

数据描述︰字段中英文、取值范围和备注信息·

数据调用:MySQL数据库的连接和数据提取·

数据解析︰将数据格式转换为DataFrame

主要涉及PyMySQL、Pandas等模块的基本使用

首先创建数据库sell

再将sql文件导入到数据库中

创建表business

再使用source语句导入sql文件

查看导入的数据:

数据的解析

选择使用python来进行数据解析

Python对于数据预处理和数据再加工非常的友好,但是缺少了一些数据预处理和清洗部分。Pandas使得可以只使用Python完成完整的数据清洗流程,并且不用依靠其他的特定领域的语言·使用非常广泛,功能强大,得到很多公司和个人的认可

使用python中的pymysql库来连接MySQL数据库

从数据库中读入全部数据(select * from business),并将其命名为sql。但目前的数据是以嵌套的形式存储的,所以需要将其转化为Pandas内置的DataFrame对象,再进行后续操作。

db为数据库的database

查看导入的result,有40000行数据,说明导入成功!

再将列名进行处理修改成MySQL数据库中相对应的表名:


数据预处理

由于原始数据存在一些质量问题,为了便于后续的数据分析,我们需要进行数据预处理。利用Pandas提供的便利工具和函数,对交易数据进行预处理的流程如下图所示∶

数据预处理主要包括以下五个步骤:

1) 统计分析:对数据进行统计分析,初步了解数据特点。

2) 异常值处理:对交易时间等字段中出现的异常数据进行诊断,并确定异常值处理方法。

3) 缺失值处理∶对于存在缺失值的交易金额和交易附言字段,诊断缺失值产生的原因,确定缺失值处理方法。

4) 数据格式转换∶为了便于后续分析,对于金额字段的量纲、交易时间字段的时间格式进行转换。

5) 重复数据过滤︰检测交易数据中存在的重复交易记录,并删除重复的记录。

主要涉及NumPy、Pandas等模块的基本使用

查看导入的数据:

客户交易流水记录中正值为金额流出,负值为金额流入

交易附言信息为中文描述,该列数据之后可能要进行文本处理·

交易时间列为unix时间戳,转换为标准北京时间更易处理。

发现其中的一些多余的符号需要去除。

查看result数据的总列数和总行数,分别在变量rows和cols中

查看数据的前五行,将结果保存到变量head中。

查看数据的基本情况:

查看客户总数,将客户数保存在数值变量user_num中

计算交易次数,保存在变量user_counts中

异常值处理 

 Unix时间戳是指格林尼治时间1970年01月01日00时00分00秒起至现在的总秒数。我们已经知道交易时间(unix_time )字段无缺失值,还需要检测数据中是否有异常的情况。Unix时间戳为10位数字(如果精确到毫秒为13位),我们使用正则表达式对数据进行匹配,检测是否存在位数异常的值。

发现数据中没有空缺数值的异常值,通常时间戳为10位,数据中出现了9位和11位的时间戳视为异常值处理,处理方法是将这些九位的数据在第一位加1.11位的时间戳删除其最后一位。

处理完之后查看数据

再次使用正则表达式查找异常值发现无异常值,说明异常值处理成功

 缺失值处理

 

查看交易时间是否存在缺失值

结果为0不存在缺失值

查看交易附言是否存在缺失值

结果为0不存在缺失值

查看交易金额是否存在缺失值

可以看出payment这一列含有45个缺失值,应该将其删除,删除缺失值以后再次查询缺失值的数据为0条

 查看result数据

删除了45条缺失值以后还有39955条正常的数据

 时间格式和时区转换

将时间戳转换为“年-月-日 时:分:秒”

查看结果:

 时区转化:将林格威治时间转换为北京时间并查看最后五条数据

 量纲转化

在以上处理的过程中,我们会观察到 payment全部为整型数值。在这里,我们将其转换为更符合我们观察的形式,将其小数点向左平移两位,形式为'元.角分'。

重复数据处理

      接下来对数据进一步分析,检测是否存在重复交易记录,并进行处理。DataFrame的duplicated()函数可以判断数据中的行是否有重复,返回值为一个Series对象。其中无重复值的行标记为False ,有重复值的行标记为True 。

可以发现重复数据有0行

总结

至此,数据的处理已经完成,下一步将进行客户交易行为的分析。

 

有关大数据精准营销应用(一)的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  6. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  7. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  8. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  9. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  10. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

随机推荐