Python計算商品復購率
1. Python計算產品復購率
需求:
給出資料商品購買資料,資料格式.csv,包含:購買月份、手機號,根據該資料計算產品的復購率。
復購率演算法:
- 演算法一:單位時間內(按每月):R = 復購人數/總購買人數
- 演算法二:單位時間內(按每月):R = 復購交易次數/總交易次數
部分資料樣式如下:
2.參考程式碼
# coding = utf-8
import pandas as pd
import time
class RepurchaseRate(object):
"""1.普通配置電腦百萬條資料執行時間在20min左右;
2.此版本版本包含 2 種計算方法;
"""
def cal_repurchase_rate(self, method):
"""復購率計算"""
if method == 1:
# 演算法一:單位時間內(按每月):R = 復購人數/總購買人數
total_transactions_dict, data_dict = self.data_processing(1)
elif method == 2:
# 演算法二:單位時間內:R = 復購交易次數/總交易次數
total_transactions_dict, data_dict = self.data_processing(2)
# 復購交易總數表:字典
repurchase_transactions_dict = {}
# 對應月份表
month_list = []
# 對每月總交易數進行遍歷並進行比較,得出每月復購交易數
for month1 in data_dict.keys():
repurchase_transactions_list = [] # 每月復購交易數列表
# 計算每個月在所有月份的復購交易數
for month2 in data_dict.keys():
month_list.append(month2)
# 判斷month2對month1是否為後一個月,如果是,則進入復購數計算
if month2 > month1:
i = 0
# 對month1來說,計算month2裡有多少交易復購的
for num in data_dict[month2]:
# 該交易資料(手機號)在month1中出現,則認為是復購的,計數器+1
if num in data_dict[month1]:
i += 1
# 將month2中復購資料新增到復購交易列表
repurchase_transactions_list.append(i)
# 如果month2對month1是前一個月,則復購數計為 0,並新增到復購交易列表進行佔位,方便後續計算
else:
repurchase_transactions_list.append(0)
# 將對應月份列表加入到復購交易資料中,方便後續計算或檢視
repurchase_transactions_dict['month'] = month_list
# 將每月復購交易數列表加入到復購交易數總表中
repurchase_transactions_dict[month1] = repurchase_transactions_list
# 計算復購率:R
repurchase_rate_dict = {} # 復購率總表
month_list = [] # 對應月份
# 對每月總交易數進行遍歷
for key1, value1 in total_transactions_dict.items():
month_list.append(key1)
repurchase_rate_list = [] # 每月復購率列表
# 對每月復購交易數進行遍歷
for key2, value2 in repurchase_transactions_dict.items():
if key1 == key2:
for num in value2:
# 計算每月復購率,格式化輸出,按百分比儲存,保留小數點後2位
repurchase_rate = format(num/value1, '.2%')
repurchase_rate_list.append(repurchase_rate)
# 加入相對應的月份列表,方便後續計算或檢視
repurchase_rate_dict['month'] = month_list
# 將每月復購率加入到復購率總表
repurchase_rate_dict[key1] = repurchase_rate_list
return repurchase_rate_dict
def data_processing(self, x):
"""資料處理:刪除缺失值、對資料進行去重、按月對資料進行分組等"""
# 讀取檔案
raw_data = pd.read_csv('./repurchase_data')
# 判斷缺失值是否存在,存在就刪除該條(行)資料
i = 0
while i < raw_data.shape[0]:
if pd.isnull(raw_data['收貨手機'][i]):
# 根據行索引來刪除該條資料,axis=0 代表行
raw_data = raw_data.drop(i, axis=0)
i += 1
# 通過對訂貨年月分組得出所有月份和每月總交易數、每月購買人數
# 每月總交易數:不去重資料
total_transactions = raw_data.groupby(['訂貨年月']).count()
# 將Dateframe資料轉化為字典
total_transactions_dict = total_transactions.to_dict()
total_transactions_dict = total_transactions_dict['收貨手機']
# 每月購買人數:去重資料
total_buyers = raw_data.groupby(['訂貨年月']).收貨手機.nunique()
# 將Dataframe資料轉化為字典
total_buyers_dict = total_buyers.to_dict()
# 按月對資料進行分組,交易次數為不去重資料,購買人數為去重資料
# 將raw_data轉化成字典
raw_data_dict = raw_data.to_dict()
# 這裡一個手機號即代表一個交易訂單,即按月篩選手機號,存入字典
data_dict = {} # 不去重資料:交易次數
uniq_data_dict = {} # 去重資料:購買人數
month_list = [x for x in total_transactions_dict.keys()]
# 按月遍歷新增交易資料
for month in month_list:
num_list = [] # 不去重列表
uniq_num_list = [] # 去重列表
for key,value in raw_data_dict['訂貨年月'].items():
# 如果是這個月的交易資料,則加入列表
if value == month:
num_list.append(raw_data_dict['收貨手機'][key]) # 不去重:交易數
if raw_data_dict['收貨手機'][key] not in uniq_num_list:
uniq_num_list.append(raw_data_dict['收貨手機'][key]) # 去重:購買人數
data_dict[month] = num_list
uniq_data_dict[month] = uniq_num_list
# 測試程式用
print('資料處理完成!')
if x == 1:
return total_buyers_dict, uniq_data_dict
elif x == 2:
return total_transactions_dict, data_dict
else:
print('請輸入數字1或者2')
def main():
# 開始計時
time_start = time.time()
print('開始計時。。。')
repurchase_rate = RepurchaseRate()
result = repurchase_rate.cal_repurchase_rate(1)
print('計時結束!!!')
time_end = time.time()
# 執行所花的時間
time_c = time_end - time_start
print(result)
print('本次計算耗時:%d 秒' % time_c)
if __name__ == "__main__":
main()
相關文章
- 購物車自動計算商品總價格
- 如何增加拼多多復購率?復購率達到多少算合格?
- python 計算txt文字詞頻率Python
- MySQL 留存率和復購率的場景分析MySql
- python計算貸款購房月供、利息Python
- 求購商品
- 愛採購官方指導:如何增加商品的曝光率!NRS
- 利用python找到購物商城裡面的降價商品Python
- 事件研究法——stata實現併購的超額回報率計算事件
- 計算CAN波特率
- 新股中籤率怎麼算?新股中籤率計算公式公式
- python——設計一個簡單的購房商貸月供計算器Python
- 淘寶買家授權API系列:新增購物車商品、刪除購物車商品、獲取購物車商品列表API
- 商品搶購倒數計時效果程式碼例項
- 笛卡爾積的應用——商品 SKU 計算
- SQL面試必考——計算留存率SQL面試
- python 計算 sin 值Python
- 【cbo計算公式】Join 選擇率(六)公式
- JaCoCo計算程式碼覆蓋率原理
- Redis 購物車 - 刪除商品與更新購買數量Redis
- JavaScript 購物車自動計算價格JavaScript
- python使用requests秒殺茅臺(適用某寶,也可搶購其他商品)Python
- 【cbo計算公式】單表選擇率(二)公式
- [20180625]簡單計算日誌生成率.txt
- 單元測試的覆蓋率計算
- python簡易計算器Python
- python雲端計算1Python
- python計算對數值Python
- python 計算list的方差Python
- 2006-2024年按收益計算的中國商品豬市場規模及增長率(附原資料表)
- Redis-PHP版購買商品小程式RedisPHP
- [python] Python平行計算庫Joblib使用指北Python
- 如何計算振盪電路的固有頻率
- [PROC FREQ] 單組率置信區間的計算
- python系列--計算異或和Python
- 用python和計算機對話(計算機的語句)Python計算機
- 商品sku設計
- 讓計算機讀懂商品,將產生哪些應用價值?計算機