日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? 新興大數(shù)據(jù)分析榆中百合

大數(shù)據(jù)流程

從流程角度上看,整個(gè)大數(shù)據(jù)處理可分成4個(gè)主要步驟。

處理流程圖

分為三層(數(shù)據(jù)采集層,數(shù)據(jù)存儲(chǔ)與計(jì)算處理層,數(shù)據(jù)可視化):

表2-1 系統(tǒng)環(huán)境

系統(tǒng)

版本

Windows 10

專業(yè)版(建議)

Linux

CentOS 6.8 or ?CentOS 7.2(1611內(nèi)核)

表2-2 開發(fā)工具

工具

版本

idea

Maven

Jdk

2017.2.5 旗艦版

3.3.9

1.8+

表2-3 集群環(huán)境(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(學(xué)習(xí)使用版本 1.7.0)

Kafka

Kafka_2.10-0.8.2.1(學(xué)習(xí)使用版本 2.11-0.11.0.2)

表2-4 硬件環(huán)境

硬件

Hadoop 102

Hadoop 103

Hadoop104

內(nèi)存

4G

2G

2G

CPU

2核

1核

1核

硬盤

50G

50G

50G

數(shù)據(jù)生產(chǎn)

對于該模塊的業(yè)務(wù),即數(shù)據(jù)生產(chǎn)過程,一般并不會(huì)讓你來進(jìn)行操作,數(shù)據(jù)生產(chǎn)是一套完整且嚴(yán)密的體系,這樣可以保證數(shù)據(jù)的魯棒性。但是如果涉及到項(xiàng)目的一體化方案的設(shè)計(jì)(數(shù)據(jù)的產(chǎn)生、存儲(chǔ)、分析、展示),則必須清楚每一個(gè)環(huán)節(jié)是如何處理的,包括其中每個(gè)環(huán)境可能隱藏的問題;數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)內(nèi)容可能出現(xiàn)的問題。

本系統(tǒng)使用有一個(gè)基于數(shù)據(jù)分析消費(fèi)者的可視化系統(tǒng),該系統(tǒng)需要通過大量數(shù)據(jù)分析出榆中百合的銷售渠道以及消費(fèi)量,可以詳細(xì)的掌握到榆中百合的銷售情況,以便于后期將他們作為主要的消費(fèi)群體來推廣。數(shù)據(jù)包括用戶ID,購買日期,購買數(shù)量,購買金額四個(gè)字段。

用到的工具:pycharm,python3.7

1、項(xiàng)目的總體內(nèi)容包以下幾個(gè)部分

(1)數(shù)據(jù)清洗:處理缺失值,數(shù)據(jù)類型轉(zhuǎn)化,按照需要將數(shù)據(jù)整理好

(2)按月對數(shù)據(jù)進(jìn)行分析:每月用戶消費(fèi)次數(shù),每月用戶的購買量,每月用戶的購買總金額以及每月用戶數(shù)量對比這些圖標(biāo)分析數(shù)據(jù)是否存在誤差

(3)用戶個(gè)體消費(fèi)數(shù)據(jù)分析:用戶個(gè)體消費(fèi)金額與消費(fèi)次數(shù)的統(tǒng)計(jì)描述,用戶消費(fèi)金額和消費(fèi)次數(shù)的散點(diǎn)圖,用戶消費(fèi)金額的分布圖(符合二八法則),用戶消費(fèi)次數(shù)的分布圖,用戶累計(jì)消費(fèi)金額的占比。

(4)用戶消費(fèi)行為分析:用戶第一次消費(fèi)時(shí)間,用戶最后一次消費(fèi)時(shí)間,用戶分層,新老客消費(fèi)比,用戶購買周期,用戶生命周期。

a.數(shù)據(jù)清洗

拿到數(shù)據(jù)使用pandas的read_table讀出txt文件,列名為'user_id','order_dt','order_products','order_amount',由于這里的txt文件不是逗號(hào)分割的,所以sep = ‘\s+’。

數(shù)據(jù)讀出無誤時(shí)要檢查數(shù)據(jù)中是否存在空值,并檢查數(shù)據(jù)的數(shù)據(jù)類型。發(fā)現(xiàn)數(shù)據(jù)中并不存在空值,很干凈的數(shù)據(jù)。那接下來既然我們需要每月這個(gè)數(shù)據(jù),就要給order_dt這一列的數(shù)據(jù)進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換一下,轉(zhuǎn)化成通常的時(shí)間格式,Y(年)m(月)D(日)。下面那句代碼的意思是:在df里新增加一列列名是mounth,取出這一列的日期order_dt然后調(diào)取這一列的值把值轉(zhuǎn)換成以月為單位的,例如6月1號(hào)到30號(hào)統(tǒng)統(tǒng)屬于6月1號(hào)即是六月。

這時(shí)候可以對數(shù)據(jù)進(jìn)行簡單初步分析,用df.describe()。產(chǎn)品購買數(shù)量均值在2.4,中位數(shù)是2,其分位數(shù)是3,說明用戶購買量大部分都不多,少部分購買量大的,最高購買量是99,其中存在一定的極致干擾。用戶的訂單金額比較穩(wěn)定,人均購買CD金額在35,中位數(shù)在25元,存在極致干擾,很多銷售行業(yè)都是類似這種分布,小額比較多,大額的較少,收入來源很大一部分是來自大額。

到這里數(shù)據(jù)都準(zhǔn)備好了進(jìn)行下一步分析。

b.按月分析數(shù)據(jù)趨勢

在這里用到了一個(gè)groupby,一個(gè)在數(shù)據(jù)分析中非常好用的函數(shù),這一節(jié)是要按月分析用戶行為,用groupby對用戶按照月分分組。

?分組完成之后得到一個(gè)新的dataframe叫g(shù)roup_month,然后直接取出組里的order_amount并求和可得到每個(gè)月份的銷售總額,并且畫出折線圖。

c.用戶個(gè)體消費(fèi)數(shù)據(jù)分析:

之前的都是看趨勢,現(xiàn)在看個(gè)體的消費(fèi)水平如何

主要分析的對象是:

用戶消費(fèi)金額和消費(fèi)次數(shù)的統(tǒng)計(jì)以及散點(diǎn)圖來觀察用戶的平均消費(fèi)水平

用戶消費(fèi)金額的分布圖(二八原則)

用戶消費(fèi)次數(shù)的分布圖

用戶累計(jì)消費(fèi)金額的占比(百分之多的用戶占了百分之多少的消費(fèi)額)

?以user_id為索引進(jìn)行分組但是分組之后可能會(huì)發(fā)現(xiàn)打印出來的是對象,因?yàn)樾枰獙Ψ纸M完的數(shù)據(jù)進(jìn)行進(jìn)一步操作,例如求和求均值等等。然后再這里用到的是對數(shù)據(jù)進(jìn)行求和,然后調(diào)用quary方法規(guī)定x軸坐標(biāo)order_amunt的值小于3000,調(diào)用plot里的scatter散點(diǎn)圖,畫出散點(diǎn)圖。

求出用戶的累計(jì)消費(fèi)金額占比,cumsum方法是滾動(dòng)求和,對求完占比之后的dataframe進(jìn)行重置 索引,重置索引之后的索引是按照升序排列好的,所以畫出的圖橫坐標(biāo)就是索引,縱坐標(biāo)就是消費(fèi)額所占比例,可以反映出百分之多少的用戶占了消費(fèi)額的百分之多少。?

圖3-1 用戶消費(fèi)額占比

?從消費(fèi)額占比中看得出百分之五十的用戶才占了百分之二十不到的消費(fèi)額,排名前五百的用戶占有了快百分之五十的消費(fèi)額,消費(fèi)還是主要集中在一些大客戶上。

d.用戶消費(fèi)行為分析:

用戶第一次消費(fèi)&用戶最后一次消費(fèi)

新老客消費(fèi)比(多少客戶僅消費(fèi)一次,每月新客占比)

用戶分層(RFM,新,老,活躍,流失)

用戶消費(fèi)周期

用戶生命周期

?首購都在一月到三月份,最后一次購買也基本集中在一月到三月份,長期活躍的客戶不是很多,大部分用戶是購買一次之后不在購買,隨著時(shí)間的增長,最后一次購買的用戶量也在不斷增加

第一次消費(fèi)時(shí)間等于最后一次消費(fèi)時(shí)間的數(shù)量占到了一半,說明很多顧客僅消費(fèi)一次不再消費(fèi)。

接下來對用戶進(jìn)行分層:

將用戶分成:

? ? ? ? 111':'重要價(jià)值客戶',

? ? ? ? '011':'重要保持客戶',

? ? ? ? '101':'重要挽留客戶',

? ? ? ? '001':'重要發(fā)展客戶',

? ? ? ? '110':'一般價(jià)值客戶',

? ? ? ? '010':'一般保持客戶',

? ? ? ? '100':'一般挽留客戶',

? ? ? ? '000':'一般發(fā)展客戶'

至于前面數(shù)字的意義等下會(huì)解釋。到這里就開始使用一個(gè)新的函數(shù),及python的透視函數(shù),point_table此函數(shù)功能跟excel的透視表一樣,但是比透視表更加靈活,pd.point_table(index = [],columns = [],values = [],aggfunc = [])這幾個(gè)參數(shù)等會(huì)要用到

RFM是人工使用象限法把數(shù)據(jù)劃分為幾個(gè)立方體,立方體對應(yīng)相應(yīng)的標(biāo)簽,我們可以把標(biāo)簽運(yùn)用到業(yè)務(wù)層面上。比如重要保持客戶貢獻(xiàn)金額最多159203.62,我們?nèi)绾闻c業(yè)務(wù)方配合把數(shù)據(jù)提高或者維護(hù);而重要發(fā)展客戶和重要挽留客戶他們有一段時(shí)間沒有消費(fèi)了,我們?nèi)绾伟阉麄兝貋?/p>

首先對于參數(shù)data,data是單獨(dú)的一行,也即是secris類型的數(shù)據(jù)apply方法默認(rèn)取出的數(shù)據(jù)是一列,但是在后面直接明確了取數(shù)據(jù)的方式axis=1,代表每次取一行,一行進(jìn)行函數(shù)中間的邏輯運(yùn)算。既然是一行數(shù)據(jù)了,一行里有十八種類型,則需要遍歷循環(huán)十八次,所以for i in range(18):默認(rèn)從0到十八,但是包括0不包括十八(python的半包)。先定義一個(gè)空數(shù)組status,然后開始討論本月是否有消費(fèi),假設(shè)本月沒有消費(fèi),那么data[i]==0,判斷status里是否有值即判斷data[i-1],如果status里有值,看他里邊的值是什么狀態(tài),如果說值等于unreg那本月依然是未注冊。就往status里加入“unreg”,如果上個(gè)月是不活躍或者回流,這個(gè)月不消費(fèi)依然是不活躍,status加入“unactive”。其他如果本身status里都沒有值,這個(gè)月又不消費(fèi)那么就是還沒開始注冊。假設(shè)本月已經(jīng)消費(fèi)那么data[i-1]==1,看一下status的狀態(tài),如果len(status)>0即是status里有值就要判斷一下這里邊值的狀態(tài)了,如果這里邊data[i-1]==‘unreg’就是說上個(gè)月就沒注冊,這個(gè)月突然消費(fèi)了,那他就是新客啦!如果上個(gè)月是不活躍那這個(gè)月就是回流用戶了,其他情況都是活躍用戶。這一塊代碼有點(diǎn)多,不過邏輯上還是很清晰的

????接下來就來看一下每個(gè)月的新用戶,未注冊用戶,活躍用戶回流用戶有多少,由于沒注冊的用戶在數(shù)據(jù)里是干擾項(xiàng),則直接讓沒注冊的用戶為NaN,這樣的話看起來應(yīng)該會(huì)好看一些。用replace函數(shù),用np.NaN進(jìn)行替代apply在這里默認(rèn)每次取出一列進(jìn)行邏輯運(yùn)算,用到lambda匿名函數(shù),以及panads的計(jì)數(shù)函數(shù)

每月用戶的消費(fèi)狀態(tài)變化。活躍用戶、持續(xù)消費(fèi)的用戶對應(yīng)的是消費(fèi)運(yùn)營質(zhì)量。回流用戶,之前不消費(fèi)本月才消費(fèi)對應(yīng)的是喚回運(yùn)營。不活躍的用戶對應(yīng)的是流失,這里可以針對業(yè)務(wù)模型下個(gè)定義:流失用戶增加,回流用戶正在減少

再來看一下用戶的生命周期:也就是用戶的最后一筆訂單時(shí)間減去第一筆訂單時(shí)間就是用戶的生命周期。

新建一個(gè)判斷函數(shù)。data是輸入數(shù)據(jù),既用戶在18個(gè)月內(nèi)是否消費(fèi)的記錄,status是空列表,后續(xù)用來保存用戶是否回購的字段。因?yàn)橛?8個(gè)月,所以每個(gè)月都要進(jìn)行一次判斷,需要用到循環(huán)。if的主要邏輯是,如果用戶本月進(jìn)行過消費(fèi),且下月消費(fèi)過,記為1,沒有消費(fèi)過是0.本月若沒有進(jìn)行過消費(fèi),為NAN,后續(xù)的統(tǒng)計(jì)中進(jìn)行排除。apply函數(shù)應(yīng)用在所有行上,獲得想要的結(jié)果。

最后計(jì)算和復(fù)購率大同小異,用count和sum求出,從圖中可以看出,用戶的回購率高于復(fù)購,約在30%左右,和老客戶差異不大。從回購率和復(fù)購率綜合分析可以得出,新客的整體質(zhì)量低于老客,老客的忠誠度(回購率)表現(xiàn)較好,消費(fèi)頻次稍次,這是CDNow網(wǎng)站的用戶消費(fèi)特征。

總結(jié)

以上是生活随笔為你收集整理的java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。