本文實現的是一下鏈結的內容,鏈結如下:**使用者流失
生成模擬使用者活躍檔案資料
生成模擬使用者連續幾個月不活躍的檔案資料
實現使用者流失率
# -*- 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個候選,需要歸...