python實現概率版的使用者流失率

2021-08-31 03:39:07 字數 2209 閱讀 2674

本文實現的是一下鏈結的內容,鏈結如下:**使用者流失

生成模擬使用者活躍檔案資料

生成模擬使用者連續幾個月不活躍的檔案資料

實現使用者流失率

# -*- coding: utf-8 -*-

"""生成使用者活躍檔案,輸出csv

"""import pandas as pd

import random

user_num = 5 # 要生成的使用者數

df = pd.dataframe(columns=['1月', '2月', '3月', '4月', '5月', '6月',

'7月', '8月', '9月', '10月', '11月', '12月'])

for i in range(user_num):

lst =

for j in range(12):

df.loc[i, :] = lst

df.to_csv("c:\\users\\yang\\desktop\\data.csv",encoding='utf-8',index=false)

# -*- coding: utf-8 -*-

"""生成不活躍使用者檔案

數字表示連續幾個月不活躍,

如:0是活躍,1是連續乙個月不活躍,2是連續兩個月不活躍

"""import pandas as pd

file_path = "c:\\users\\yang\\desktop\\activity_data.csv"

file_data = pd.read_csv(file_path, encoding='utf-8')

for row in range(len(file_data)):

for col in range(1,12): # 2月到12月

if file_data.iloc[row, col] == 1:

file_data.iloc[row, col] = file_data.iloc[row, col-1] + 1

file_data.to_csv("c:\\users\\yang\\desktop\\inactivity_data.csv", encoding='utf-8',index=false)

# -*- coding: utf-8 -*-

import pandas as pd

from collections import counter

df = pd.read_csv("c:\\users\\yang\\desktop\\inactivity_data.csv")

continue_inactivity_df = pd.dataframe(index=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],

columns=['jan', 'feb', 'mar', 'apr', 'may', 'jun',

'jul', 'aug', 'sep', 'oct', 'nov', 'dec'])

for col in range(12):

for row in counter(df[str(col + 1) + '月']).keys():

continue_inactivity_df.iloc[row, col] = counter(df[str(col + 1) + '月']).get(row)

# print(continue_inactivity_df)

probability = # 2到12月的不連續活躍n月的使用者佔比,順序存放

for row in range(2, 13):

p = 0

for col in range(row - 1, 12):

p = p + continue_inactivity_df.iloc[row, col] / continue_inactivity_df.iloc[row - 1, col - 1]

# print(probability)

# 2月到11月的流失率計算

user_churn = # 流失率

for i in range(len(probability)-1):

churn = 1

for j in range(i+1,len(probability)-1):

churn = churn * probability[j]

print(user_churn)

例項 使用者登入(python 版)

建立使用者表userinfos 注意 需要對密碼進行加密 如果使用md5加密,則密碼包含32個字元 如果使用sha1加密,則密碼包含40個字元,推薦使用這種方式 create table userinfos id int primary key auto increment,uname varcha...

python 使用者登入(簡易版)

一 簡易版使用者登入,此程式直到使用者輸入正確的使用者名稱和密碼,不然不會退出 1 name liangchen 2 passwd abc123 3 while true 4 username input username 5 password input password 6if username...

python概率選取ndarray的TOP N

將preds的陣列中一維的部分去掉,也就是把無用的 都脫掉 將 p 從小到大排序,但返回的不是結果,而是下標 n 是從頭到第n個數的前乙個數 n 是從頭到倒數第n個數的前乙個數 所以這句的含義是將除了top n個 值的位置都置為0,也就保留了top n個數進入候選 因為篩選了top n個候選,需要歸...