最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何利用Python進(jìn)行客戶分群分析

 更新時間:2023年02月24日 09:13:16   作者:Python數(shù)據(jù)挖掘  
每個電子商務(wù)數(shù)據(jù)分析師必須掌握的一項數(shù)據(jù)聚類技能,如果你是一名在電子商務(wù)公司工作的數(shù)據(jù)分析師,從客戶數(shù)據(jù)中挖掘潛在價值,來提高客戶留存率很可能就是你的工作任務(wù)之一。這篇就來告訴你如何將客戶分成不同的群組,并在一段時間內(nèi)觀察每個群組的留存率

每個電子商務(wù)數(shù)據(jù)分析師必須掌握的一項數(shù)據(jù)聚類技能

如果你是一名在電子商務(wù)公司工作的數(shù)據(jù)分析師,從客戶數(shù)據(jù)中挖掘潛在價值,來提高客戶留存率很可能就是你的工作任務(wù)之一。

然而,客戶數(shù)據(jù)是巨大的,每個客戶的行為都不一樣。2020年3月收購的客戶A與2020年5月收購的客戶B表現(xiàn)出不同的行為。因此,有必要將客戶分為不同的群組,然后調(diào)查每個群組在一段時間內(nèi)的行為。這就是所謂的同期群分析。

同期群分析是了解一個特殊客戶群體在一段時間內(nèi)的行為的數(shù)據(jù)分析技術(shù)。

在這篇文章中,不會詳細(xì)介紹同期群分析的理論。這篇文章更多的是告訴你如何將客戶分成不同的群組,并在一段時間內(nèi)觀察每個群組的留存率。

導(dǎo)入數(shù)據(jù)和python庫

import pandas as pd  
import matplotlib.pyplot as plt  
import seaborn as sns  
df = pd.read_csv('sales_2018-01-01_2019-12-31.csv')  
df  

分離新老客戶

first_time = df.loc[df['customer_type'] == 'First-time',]  
final = df.loc[df['customer_id'].isin(first_time['customer_id'].values)]  

在這里,不能簡單地選擇df.loc[df['customer_type']],因為在這個數(shù)據(jù)中,在customer_type列下,F(xiàn)irst_time指的是新客戶,而Returning指的是老客戶。因此,如果我在2019年12月31日第一次購買,數(shù)據(jù)會顯示我在2019年12月31日是新客戶,但在我第二次、第三次…時是返回客戶。同期群分析著眼于新客戶和他們的后續(xù)購買行為。因此,如果我們簡單地使用df.loc[df['customer_type']=='First-time',],我們就會忽略新客戶的后續(xù)購買,這不是分析同期群行為的正確方法。

因此,這里所需要做的是,首先創(chuàng)建一個所有第一次的客戶列表,并將其存儲為first_time。然后從原始客戶數(shù)據(jù)框df中只選擇那些ID在first_time客戶組內(nèi)的客戶。通過這樣做,我們可以確保我們獲得的數(shù)據(jù)只有第一次的客戶和他們后來的購買行為。

現(xiàn)在,我們刪除customer_type列,因為它已經(jīng)沒有必要了。同時,將日期列轉(zhuǎn)換成正確的日期時間格式

final = final.drop(columns = ['customer_type'])  
final['day']= pd.to_datetime(final['day'], dayfirst=True)  

按客戶ID排序,然后是日期

final = final.drop(columns = ['customer_type'])  
final['day']= pd.to_datetime(final['day'], dayfirst=True)  

定義一些函數(shù)

def purchase_rate(customer_id):  
    purchase_rate = [1]  
    counter = 1  
    for i in range(1,len(customer_id)):  
          if customer_id[i] != customer_id[i-1]:  
                 purchase_rate.append(1)  
                 counter = 1  
          else:  
                 counter += 1  
                 purchase_rate.append(counter)  
    return purchase_rate  
def join_date(date, purchase_rate):  
    join_date = list(range(len(date)))  
    for i in range(len(purchase_rate)):   
          if purchase_rate[i] == 1:  
                 join_date[i] = date[i]  
          else:  
                 join_date[i] = join_date[i-1]  
    return join_date  
def age_by_month(purchase_rate, month, year, join_month, join_year):  
    age_by_month = list(range(len(year)))  
    for i in range(len(purchase_rate)):  
          if purchase_rate[i] == 1:  
              age_by_month[i] = 0  
          else:  
              if year[i] == join_year[i]:  
                 age_by_month[i] = month[i] - join_month[i]  
              else:  
                 age_by_month[i] = month[i] - join_month[i] + 12*(year[i]-join_year[i])  
     return age_by_month  
  • purchase_rate函數(shù)將決定這是否是每個客戶的第二次、第三次、第四次購買。
  • join_date函數(shù)允許確定客戶加入的日期。
  • age_by_month函數(shù)提供了從客戶當(dāng)前購買到第一次購買的多少個月。

現(xiàn)在輸入已經(jīng)準(zhǔn)備好了,接下來創(chuàng)建群組。

創(chuàng)建群組

final['month'] =pd.to_datetime(final['day']).dt.month  
final['Purchase Rate'] = purchase_rate(final['customer_id'])  
final['Join Date'] = join_date(final['day'], final['Purchase Rate'])  
final['Join Date'] = pd.to_datetime(final['Join Date'], dayfirst=True)  
final['cohort'] = pd.to_datetime(final['Join Date']).dt.strftime('%Y-%m')  
final['year'] = pd.to_datetime(final['day']).dt.year  
final['Join Date Month'] = pd.to_datetime(final['Join Date']).dt.month  
final['Join Date Year'] = pd.to_datetime(final['Join Date']).dt.year  

final['Age by month'] = age_by_month(final['Purchase Rate'],   
                                     final['month'],  
                                     final['year'],  
                                     final['Join Date Month'],  
                                     final['Join Date Year'])  

cohorts = final.groupby(['cohort','Age by month']).nunique()  
cohorts = cohorts.customer_id.to_frame().reset_index()   # convert series to frame  
cohorts = pd.pivot_table(cohorts, values = 'customer_id',index = 'cohort', columns= 'Age by month')  
cohorts.replace(np.nan, '',regex=True)  

**如何解釋這個表格:**以群組2018-01為例。在2018年1月,有462名新客戶。在這462人中,121名客戶在2018年2月回來購買,125名在2018年3月購買,以此類推。

轉(zhuǎn)換為群組百分比

for i in range(len(cohorts)-1):  
    cohorts[i+1] = cohorts[i+1]/cohorts[0]  
cohorts[0] = cohorts[0]/cohorts[0]  

可視化

cohorts_t = cohorts.transpose()  
cohorts_t[cohorts_t.columns].plot(figsize=(10,5))  
sns.set(style='whitegrid')  
plt.figure(figsize=(20, 15))  
plt.title('Cohorts: User Retention')  
sns.set(font_scale = 0.5) # font size  
sns.heatmap(cohorts, mask=cohorts.isnull(),  
cmap="Blues",  
annot=True, fmt='.01%')  
plt.show()  

到此這篇關(guān)于詳解如何利用Python進(jìn)行客戶分群分析的文章就介紹到這了,更多相關(guān)Python客戶分群分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中使用Counter進(jìn)行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法

    Python中使用Counter進(jìn)行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法

    今天小編就為大家分享一篇Python中使用Counter進(jìn)行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python實現(xiàn)購物車購物小程序

    Python實現(xiàn)購物車購物小程序

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)購物車購物小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Scrapy中如何向Spider傳入?yún)?shù)的方法實現(xiàn)

    Scrapy中如何向Spider傳入?yún)?shù)的方法實現(xiàn)

    這篇文章主要介紹了Scrapy中如何向Spider傳入?yún)?shù)的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用Pytorch+PyG實現(xiàn)MLP的詳細(xì)過程

    使用Pytorch+PyG實現(xiàn)MLP的詳細(xì)過程

    圖神經(jīng)網(wǎng)絡(luò)是最近 AI 領(lǐng)域最熱門的方向之一,下面這篇文章主要給大家介紹了關(guān)于使用Pytorch+PyG實現(xiàn)MLP的詳細(xì)過程,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Python實現(xiàn)計算機時長管理程序

    Python實現(xiàn)計算機時長管理程序

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個包含倒計時,密碼驗證,音頻控制,系統(tǒng)進(jìn)程監(jiān)控與終止等功能的程序,需要的可以了解下
    2025-02-02
  • 詳解Python函數(shù)式編程—高階函數(shù)

    詳解Python函數(shù)式編程—高階函數(shù)

    這篇文章主要介紹了Python函數(shù)式編程—高階函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python處理“&#”開頭加數(shù)字的html字符方法

    python處理“&#”開頭加數(shù)字的html字符方法

    在本篇文章里小編給大家整理了關(guān)于python如何處理“&#”開頭加數(shù)字的html字符的相關(guān)知識點總結(jié),有興趣的朋友們學(xué)習(xí)下。
    2019-06-06
  • Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題實例詳解

    Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題實例詳解

    這篇文章主要介紹了Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題,結(jié)合實例形式詳細(xì)分析了Python使用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題的相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • pytorch加載的cifar10數(shù)據(jù)集過程詳解

    pytorch加載的cifar10數(shù)據(jù)集過程詳解

    這篇文章主要介紹了pytorch加載的cifar10數(shù)據(jù)集,到底有沒有經(jīng)過歸一化,本文對這一問題給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • python中cryptography庫的實現(xiàn)

    python中cryptography庫的實現(xiàn)

    本文主要介紹了python中cryptography庫的實現(xiàn),包括Fernet、hash、AES、RSA等加密算法的使用,具有一定的參加價值,感興趣的可以了解一下
    2025-01-01

最新評論

柞水县| 诸暨市| 津南区| 老河口市| 如东县| 洛扎县| 乾安县| 延川县| 西平县| 克拉玛依市| 丰台区| 黔南| 宁都县| 利川市| 卓尼县| 巍山| 东辽县| 新巴尔虎左旗| 图木舒克市| 通化县| 梅河口市| 巴青县| 南和县| 波密县| 吉林省| 泾川县| 塘沽区| 于田县| 炉霍县| 化隆| 高陵县| 泉州市| 新干县| 社会| 南靖县| 六安市| 吴江市| 临夏市| 乐昌市| 军事| 永平县|