java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合

9d73146db577a22f6d83e3dd9b25c21f.png

            新兴大数据分析榆中百合

a3193c6c09965cf4ece80cbfa3b3586a.png

大数据流程

从流程角度上看,整个大数据处理可分成4个主要步骤。

d0bc44ffef7dcb2e3672940e7a87cdda.png

d9b570520cfa575d7c4b2e234ee290db.png

de14fb38b4211e7b3fa61249e9ae6a4d.png

处理流程图

分为三层(数据采集层,数据存储与计算处理层,数据可视化):

a23007e7c639565f0e7dbbefd570304a.png

表2-1 系统环境

系统

版本

Windows 10

专业版(建议)

Linux

CentOS 6.8 or  CentOS 7.2(1611内核)

表2-2 开发工具

工具

版本

idea

Maven

Jdk

2017.2.5 旗舰版

3.3.9

1.8+

表2-3 集群环境(CDH版)

框架

版本

Hadoop

Cdh5.3.6-2.5.0

Zookeeper

Cdh5.3.6-3.4.5

Hbase

Cdh5.3.6-0.98

Hive

Cdh5.3.6-0.13.1

Flume

Cdh5.3.6-1.5.0(学习使用版本 1.7.0)

Kafka

Kafka_2.10-0.8.2.1(学习使用版本 2.11-0.11.0.2)

表2-4 硬件环境

硬件

Hadoop 102

Hadoop 103

Hadoop104

内存

4G

2G

2G

CPU

2核

1核

1核

硬盘

50G

50G

50G

数据生产

对于该模块的业务,即数据生产过程,一般并不会让你来进行操作,数据生产是一套完整且严密的体系,这样可以保证数据的鲁棒性。但是如果涉及到项目的一体化方案的设计(数据的产生、存储、分析、展示),则必须清楚每一个环节是如何处理的,包括其中每个环境可能隐藏的问题;数据结构,数据内容可能出现的问题。

d2c0995b6bd88d4cafb4dbf250bed05f.png

本系统使用有一个基于数据分析消费者的可视化系统,该系统需要通过大量数据分析出榆中百合的销售渠道以及消费量,可以详细的掌握到榆中百合的销售情况,以便于后期将他们作为主要的消费群体来推广。数据包括用户ID,购买日期,购买数量,购买金额四个字段。

用到的工具:pycharm,python3.7

1、项目的总体内容包以下几个部分

(1)数据清洗:处理缺失值,数据类型转化,按照需要将数据整理好

(2)按月对数据进行分析:每月用户消费次数,每月用户的购买量,每月用户的购买总金额以及每月用户数量对比这些图标分析数据是否存在误差

(3)用户个体消费数据分析:用户个体消费金额与消费次数的统计描述,用户消费金额和消费次数的散点图,用户消费金额的分布图(符合二八法则),用户消费次数的分布图,用户累计消费金额的占比。

(4)用户消费行为分析:用户第一次消费时间,用户最后一次消费时间,用户分层,新老客消费比,用户购买周期,用户生命周期。

a.数据清洗

拿到数据使用pandas的read_table读出txt文件,列名为'user_id','order_dt','order_products','order_amount',由于这里的txt文件不是逗号分割的,所以sep = ‘\s+’。

数据读出无误时要检查数据中是否存在空值,并检查数据的数据类型。发现数据中并不存在空值,很干净的数据。那接下来既然我们需要每月这个数据,就要给order_dt这一列的数据进行适当的转换一下,转化成通常的时间格式,Y(年)m(月)D(日)。下面那句代码的意思是:在df里新增加一列列名是mounth,取出这一列的日期order_dt然后调取这一列的值把值转换成以月为单位的,例如6月1号到30号统统属于6月1号即是六月。

这时候可以对数据进行简单初步分析,用df.describe()。产品购买数量均值在2.4,中位数是2,其分位数是3,说明用户购买量大部分都不多,少部分购买量大的,最高购买量是99,其中存在一定的极致干扰。用户的订单金额比较稳定,人均购买CD金额在35,中位数在25元,存在极致干扰,很多销售行业都是类似这种分布,小额比较多,大额的较少,收入来源很大一部分是来自大额。

到这里数据都准备好了进行下一步分析。

b.按月分析数据趋势

在这里用到了一个groupby,一个在数据分析中非常好用的函数,这一节是要按月分析用户行为,用groupby对用户按照月分分组。

 分组完成之后得到一个新的dataframe叫group_month,然后直接取出组里的order_amount并求和可得到每个月份的销售总额,并且画出折线图。

c.用户个体消费数据分析:

之前的都是看趋势,现在看个体的消费水平如何

主要分析的对象是:

用户消费金额和消费次数的统计以及散点图来观察用户的平均消费水平

用户消费金额的分布图(二八原则)

用户消费次数的分布图

用户累计消费金额的占比(百分之多的用户占了百分之多少的消费额)

 以user_id为索引进行分组但是分组之后可能会发现打印出来的是对象,因为需要对分组完的数据进行进一步操作,例如求和求均值等等。然后再这里用到的是对数据进行求和,然后调用quary方法规定x轴坐标order_amunt的值小于3000,调用plot里的scatter散点图,画出散点图。

求出用户的累计消费金额占比,cumsum方法是滚动求和,对求完占比之后的dataframe进行重置 索引,重置索引之后的索引是按照升序排列好的,所以画出的图横坐标就是索引,纵坐标就是消费额所占比例,可以反映出百分之多少的用户占了消费额的百分之多少。 

图3-1 用户消费额占比

 从消费额占比中看得出百分之五十的用户才占了百分之二十不到的消费额,排名前五百的用户占有了快百分之五十的消费额,消费还是主要集中在一些大客户上。

d.用户消费行为分析:

用户第一次消费&用户最后一次消费

新老客消费比(多少客户仅消费一次,每月新客占比)

用户分层(RFM,新,老,活跃,流失)

用户消费周期

用户生命周期

 首购都在一月到三月份,最后一次购买也基本集中在一月到三月份,长期活跃的客户不是很多,大部分用户是购买一次之后不在购买,随着时间的增长,最后一次购买的用户量也在不断增加

第一次消费时间等于最后一次消费时间的数量占到了一半,说明很多顾客仅消费一次不再消费。

接下来对用户进行分层:

将用户分成:

        111':'重要价值客户',

        '011':'重要保持客户',

        '101':'重要挽留客户',

        '001':'重要发展客户',

        '110':'一般价值客户',

        '010':'一般保持客户',

        '100':'一般挽留客户',

        '000':'一般发展客户'

至于前面数字的意义等下会解释。到这里就开始使用一个新的函数,及python的透视函数,point_table此函数功能跟excel的透视表一样,但是比透视表更加灵活,pd.point_table(index = [],columns = [],values = [],aggfunc = [])这几个参数等会要用到

RFM是人工使用象限法把数据划分为几个立方体,立方体对应相应的标签,我们可以把标签运用到业务层面上。比如重要保持客户贡献金额最多159203.62,我们如何与业务方配合把数据提高或者维护;而重要发展客户和重要挽留客户他们有一段时间没有消费了,我们如何把他们拉回来

首先对于参数data,data是单独的一行,也即是secris类型的数据apply方法默认取出的数据是一列,但是在后面直接明确了取数据的方式axis=1,代表每次取一行,一行进行函数中间的逻辑运算。既然是一行数据了,一行里有十八种类型,则需要遍历循环十八次,所以for i in range(18):默认从0到十八,但是包括0不包括十八(python的半包)。先定义一个空数组status,然后开始讨论本月是否有消费,假设本月没有消费,那么data[i]==0,判断status里是否有值即判断data[i-1],如果status里有值,看他里边的值是什么状态,如果说值等于unreg那本月依然是未注册。就往status里加入“unreg”,如果上个月是不活跃或者回流,这个月不消费依然是不活跃,status加入“unactive”。其他如果本身status里都没有值,这个月又不消费那么就是还没开始注册。假设本月已经消费那么data[i-1]==1,看一下status的状态,如果len(status)>0即是status里有值就要判断一下这里边值的状态了,如果这里边data[i-1]==‘unreg’就是说上个月就没注册,这个月突然消费了,那他就是新客啦!如果上个月是不活跃那这个月就是回流用户了,其他情况都是活跃用户。这一块代码有点多,不过逻辑上还是很清晰的

    接下来就来看一下每个月的新用户,未注册用户,活跃用户回流用户有多少,由于没注册的用户在数据里是干扰项,则直接让没注册的用户为NaN,这样的话看起来应该会好看一些。用replace函数,用np.NaN进行替代apply在这里默认每次取出一列进行逻辑运算,用到lambda匿名函数,以及panads的计数函数

每月用户的消费状态变化。活跃用户、持续消费的用户对应的是消费运营质量。回流用户,之前不消费本月才消费对应的是唤回运营。不活跃的用户对应的是流失,这里可以针对业务模型下个定义:流失用户增加,回流用户正在减少

再来看一下用户的生命周期:也就是用户的最后一笔订单时间减去第一笔订单时间就是用户的生命周期。

新建一个判断函数。data是输入数据,既用户在18个月内是否消费的记录,status是空列表,后续用来保存用户是否回购的字段。因为有18个月,所以每个月都要进行一次判断,需要用到循环。if的主要逻辑是,如果用户本月进行过消费,且下月消费过,记为1,没有消费过是0.本月若没有进行过消费,为NAN,后续的统计中进行排除。apply函数应用在所有行上,获得想要的结果。

最后计算和复购率大同小异,用count和sum求出,从图中可以看出,用户的回购率高于复购,约在30%左右,和老客户差异不大。从回购率和复购率综合分析可以得出,新客的整体质量低于老客,老客的忠诚度(回购率)表现较好,消费频次稍次,这是CDNow网站的用户消费特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++冒泡排序代码_【开源推荐】数据结构和算法必知必会的50个代码实现

最近GitHub上发现了个非常不错的项目,目前star 4000,项目主要讲数据结构和算法,有多种语言 50个代码实现。实现语言有c,c#,go,java,javascript,object-c,python&#xff…

android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具

记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇Google主推-Android开发利器——Android Studio,这可能是最全的AS教程!Android Studio,自Google2013年发布以来,就…

karaf osgi_在OSGi中为Karaf构建Camel-CXF REST服务–组播和聚合

karaf osgi请查看我在Karaf的OSGi中构建普通CXF服务(无Camel)的其他文章 。 这是有关如何 创建一个CXF REST服务 使用骆驼多播(并并行化)传入的请求 来自两个不同服务的源数据 汇总响应并 最后将合并结果作为JSON返回给最终…

酒店wifi代理服务器没有响应,wn10连接酒店wifi的登录界面无法弹出如何处理

通常情况下,我们在连接酒店wifi后都会出现登录验证界面。不过,最近一位windows10系统用户在连接wifi后打开网页却遇到无法显示登陆界面情况,该怎么办呢?接下来,就随小编一起看看wn10连接酒店wifi的登录界面无法弹出问题…

python词云安装什么库_python词云安装什么库

python词云需要安装wordcloud库。 安装方法: 在cmd使用pip install wordcloud命令即可安装。 wordcloud库把词云当作一个WordCloud对象:wordcloud.WordCloud()代表一个文本对应的词云。 可以根据文本中词语出现的频率等参数绘制词云。 示例:f…

怎么wps解除合并单元格_wps表格怎么锁定单元格

wps表格怎么锁定单元格呢?很多用户对此还不是很清楚,小编这里就给大家带来有关wps表格怎么锁定单元格的回答,希望能够对大家有所帮助。一、整个表格进行锁定1、同时按住CtrlA,选中整个单元格,如图2、选中以后&#xff…

挡土墙计算软件_广联达软件如何计算钢板止水带?

原创作者:张向荣1、什么是钢板止水带?混凝土结构中,地下室墙体施工中,如果底板和墙体分开浇筑,就需要留置施工缝。施工缝:施工缝并不是一种真实存在的“缝”,它只是因先浇筑混凝土超过初凝时间&…

网站图片多服务器选多大,网站上的图片一般多大合适

网站上的图片一般多大合适 内容精选换一换安装了SSL证书后,访问网站时,HTTPS比HTTP要多几次握手的时间,HTTPS协议握手阶段比较费时,同时还要进行RSA校验,因此使用了SSL证书后,相较于HTTP访问,访…

怎么在自己的网站上显示其它网站_自己做网站要怎么选域名?

域名是一种无形的资产注册一个好的域名能让你的网站更加容易取得成功,那么什么样的域名才是好域名呢?自己做网站域名要怎么选呢?1.好记的域名如果一个喜欢你网站的网友,电脑硬盘坏了丢失了收藏夹里所有的网址,或者在他人机器上上网&#xf…

微信朋友圈删除后服务器还有吗,删了的朋友圈还可以找回来吗

演示工具:手机型号:iphone12系统版本:ios14软件版本:微信7.0.20删除的朋友圈动态不能找回来。删除是从网络服务器上面把此信息删除了,是无法找回的,而已删除掉以后,好友那边此条动态也是同步删除…

mysql drop_mysql恢复drop掉的表

手贱drop了几个表,以为能从昨天的备份中恢复,结果发现最近两个月的备份都是空文件,因为备份脚本在两个月前改错了!难道就这样丢失两个月的数据?镇定镇定——先看看mysql的配置文件cat /etc/my.cnf发现如下字样说明有救…

修改网站首页批处理_几个神奇的批处理,万事不求人!

文字 | 配图 | 排版 |©老Y网站:www.youquhome.cn小白可能会问啥事批处理?批处理(Batch),也称为批处理脚本。是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的…

全境封锁服务器维护 2018,全境封锁全域事件2018年8月活动什么时候开始_全域事件怎么玩...

本文给大家带来全境封锁全域事件2018年8月活动时间介绍,全境封锁全域事件三进击即将到来,想要刷面具的不要错过哦。全域事件三:进击重新回归了!开始时间:8 月 27 日周一结束时间:9 月 2 日周日参加这一次的全域事件将会…

linux下部署mysql数据库连接_Linux远程部署MySQL数据库详细步骤

Linux远程部署MySQL数据库,供大家参考,具体内容如下1.0 安装 yum install lrzsz -y 命令(导入外界压缩包插件(已下载无视即可))1.1 将mysql压缩包拷贝到 /usr/local 文件目录下进行解压:1.2 将导入的Mysql压缩包进行解压,输入:tar…

nginx 电子书_Nginx最详细的反向代理配置步骤,拿去不谢

点击“蓝字”关注我们#今日份技术干货#使用Nginx实现Web反向代理功能,实现如下功能:◆后端Web服务器两台,可以使用httpd实现◆Nginx采用轮询的方式调用后端Web服务器◆两台Web服务器的权重要求设置为不同的值◆最大失败次数为1,失…

c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

前接上一篇内容。如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼《C# 基础知识系列- 14 IO篇 文件的操作(1)》。本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类。下一篇介绍如何通过流来操作文件。1.2 Directory和Directo…

怎么配置在谷歌和ie内核时使用不同的_重磅!微软竟然研发了谷歌内核的edge

走过路过不要错过点击蓝字关注我们很I高I兴I你I能I来小水GOOD NIGHT 希I望I你I别I离I开软件目录第三十九期▼物致于此小得盈满序言上周小编们期末考试已经结束了,从这周开始,推文将会开始有所更新,希望喜爱我们公众号的你们都还在。但由于小编…

Java 8过滤器,地图,收集和流示例

大家好,许多读者给我发了电子邮件,写了一篇有关Java 8的地图和过滤器功能的文章,因为他们发现它们难以理解和使用。 即使我以前同时写过有关map()和filter()的博客,我仍在写这篇文章…

使用mysql命令行的工具_[MySQL]命令行工具和基本操作

一 MySQL命令行工具 (查看帮助 ---help,或 -?)1)MySQLMySQL是一个简单的SQL外壳(有GNUreadline功能)。它支持交互式和非交互式使用。当交互使用时,查询结果采用ASCII表格式。当采用非交互式(例如,用作过滤器)模式时,结…

matlab simulink_MATLAB之Simulink(二)利用switch模块将正弦信号变为方波信号

##MATLAB之Simulink(二)##利用switch模块将正弦信号变为方波信号今天给大家展示一个simulink电路仿真,将正弦信号转化为方波信号。下面开始教程:1.首先直接在MATLAB命令行中输入simulink或者直接点击图标运行。2.新建一个空白编辑界面。3.打开模型库&…