Commit 69aa7b29 authored by 高雅喆's avatar 高雅喆

get between date to stat back features

parent 93b9b034
# -*- coding: UTF-8 -*- # -*- coding: UTF-8 -*-
from utils import con_sql,get_yesterday_date from utils import con_sql,get_yesterday_date,get_between_day
import time import time
OUTPUT_PATH = "/data2/models/eda/gray_stat/" OUTPUT_PATH = "/data2/models/eda/gray_stat/"
...@@ -60,92 +60,96 @@ class GrayStat(object): ...@@ -60,92 +60,96 @@ class GrayStat(object):
if __name__ == '__main__': if __name__ == '__main__':
print("开始获取ffm中的灰度非灰度比例")
start = time.time()
#1.ffm中的灰度非灰度(ios和安卓一样): date_list = get_between_day('2018-08-20','2018-08-29')
# 灰度:_6 for i in date_list:
# 非灰度:_8 print("开始获取ffm中的灰度非灰度比例")
result1 = [] start = time.time()
#1.1获取ios和android平台的数据 #1.ffm中的灰度非灰度(ios和安卓一样):
platforms = ['ios','android'] # 灰度:_6
grays = ['6','8'] # 非灰度:_8
for platform in platforms: result1 = []
for gray in grays: #1.1获取ios和android平台的数据
g_class = GrayStat('diary',gray,platform) platforms = ['ios','android']
uid_count = g_class.get_uid_count() grays = ['6','8']
uid_clk_times = g_class.get_uid_clk_times() for platform in platforms:
uid_imp_times = g_class.get_uid_imp_times() for gray in grays:
uid_clk_rate = round(uid_clk_times/uid_imp_times,4) g_class = GrayStat('diary',gray,platform,i)
result1.append([g_class.ndays,g_class.cid_type,platform,gray,uid_count,\ uid_count = g_class.get_uid_count()
uid_clk_times,uid_imp_times,uid_clk_rate]) uid_clk_times = g_class.get_uid_clk_times()
result1.append([g_class.ndays,g_class.cid_type,platform,'all',\ uid_imp_times = g_class.get_uid_imp_times()
result1[-1][4]+result1[-2][4],\ uid_clk_rate = round(uid_clk_times/uid_imp_times,4)
result1[-1][5]+result1[-2][5],\ result1.append([g_class.ndays,g_class.cid_type,platform,gray,uid_count,\
result1[-1][6]+result1[-2][6],\ uid_clk_times,uid_imp_times,uid_clk_rate])
round((result1[-1][5]+result1[-2][5])/(result1[-1][6]+result1[-2][6]),4)]) result1.append([g_class.ndays,g_class.cid_type,platform,'all',\
#1.2获取所有平台的数据 result1[-1][4]+result1[-2][4],\
labels = ['6','8','all'] result1[-1][5]+result1[-2][5],\
for i in range(3): result1[-1][6]+result1[-2][6],\
result1.append([g_class.ndays,g_class.cid_type,'all',labels[i],\ round((result1[-1][5]+result1[-2][5])/(result1[-1][6]+result1[-2][6]),4)])
result1[i][4]+result1[i+3][4],\ #1.2获取所有平台的数据
result1[i][5]+result1[i+3][5],\ labels = ['6','8','all']
result1[i][6]+result1[i+3][6],\ for i in range(3):
round((result1[i][5]+result1[i+3][5])/(result1[i][6]+result1[i+3][6]),4)]) result1.append([g_class.ndays,g_class.cid_type,'all',labels[i],\
#1.3把一天所有的数据存入文件 result1[i][4]+result1[i+3][4],\
output1 = OUTPUT_PATH + "gray_ffm.csv" result1[i][5]+result1[i+3][5],\
with open(output1,'a+') as f: result1[i][6]+result1[i+3][6],\
for line in result1: round((result1[i][5]+result1[i+3][5])/(result1[i][6]+result1[i+3][6]),4)])
line = [str(i) for i in line] #1.3把一天所有的数据存入文件
str_line = ','.join(line) + '\n' output1 = OUTPUT_PATH + "gray_ffm.csv"
f.write(str_line) with open(output1,'a+') as f:
for line in result1:
#2.实际中的灰度非灰度: line = [str(i) for i in line]
# ios: str_line = ','.join(line) + '\n'
# 灰度:6|8 f.write(str_line)
#非灰度:^68
# android: #2.实际中的灰度非灰度:
# 灰度:0|1|2|6|8 # ios:
#非灰度:^01268 # 灰度:6|8
print("开始获取实际中的灰度非灰度比例") #非灰度:^68
result2 = [] # android:
#2.1获取ios和android平台的数据 # 灰度:0|1|2|6|8
platforms = ['ios','android'] #非灰度:^01268
for platform in platforms: print("开始获取实际中的灰度非灰度比例")
#TODO 对于(安卓灰度放到 0 1 2 6 8;iOS灰度保持 6 8)问题,做一个id判断即可 result2 = []
if platform == 'ios': #2.1获取ios和android平台的数据
grays = ['6|8','^68'] platforms = ['ios','android']
else: for platform in platforms:
grays = ['0|1|2|6|8','^01268'] #TODO 对于(安卓灰度放到 0 1 2 6 8;iOS灰度保持 6 8)问题,做一个id判断即可
for gray in grays: if platform == 'ios':
g_class = GrayStat('diary',gray,platform) grays = ['6|8','^68']
uid_count = g_class.get_uid_count() else:
uid_clk_times = g_class.get_uid_clk_times() grays = ['0|1|2|6|8','^01268']
uid_imp_times = g_class.get_uid_imp_times() for gray in grays:
uid_clk_rate = round(uid_clk_times/uid_imp_times,4) g_class = GrayStat('diary',gray,platform,i)
result2.append([g_class.ndays,g_class.cid_type,platform,gray,uid_count,\ uid_count = g_class.get_uid_count()
uid_clk_times,uid_imp_times,uid_clk_rate]) uid_clk_times = g_class.get_uid_clk_times()
result2.append([g_class.ndays,g_class.cid_type,platform,'all',\ uid_imp_times = g_class.get_uid_imp_times()
result2[-1][4]+result2[-2][4],\ uid_clk_rate = round(uid_clk_times/uid_imp_times,4)
result2[-1][5]+result2[-2][5],\ result2.append([g_class.ndays,g_class.cid_type,platform,gray,uid_count,\
result2[-1][6]+result2[-2][6],\ uid_clk_times,uid_imp_times,uid_clk_rate])
round((result2[-1][5]+result2[-2][5])/(result2[-1][6]+result2[-2][6]),4)]) result2.append([g_class.ndays,g_class.cid_type,platform,'all',\
#2.2获取所有平台的数据 result2[-1][4]+result2[-2][4],\
labels = ['gray','not gray','all'] result2[-1][5]+result2[-2][5],\
for i in range(3): result2[-1][6]+result2[-2][6],\
result2.append([g_class.ndays,g_class.cid_type,'all',labels[i],\ round((result2[-1][5]+result2[-2][5])/(result2[-1][6]+result2[-2][6]),4)])
result2[i][4]+result2[i+3][4],\ #2.2获取所有平台的数据
result2[i][5]+result2[i+3][5],\ labels = ['gray','not gray','all']
result2[i][6]+result2[i+3][6],\ for i in range(3):
round((result2[i][5]+result2[i+3][5])/(result2[i][6]+result2[i+3][6]),4)]) result2.append([g_class.ndays,g_class.cid_type,'all',labels[i],\
#2.3把一天所有的数据写入文件 result2[i][4]+result2[i+3][4],\
output2 = OUTPUT_PATH + "gray_all.csv" result2[i][5]+result2[i+3][5],\
with open(output2,'a+') as f: result2[i][6]+result2[i+3][6],\
for line in result2: round((result2[i][5]+result2[i+3][5])/(result2[i][6]+result2[i+3][6]),4)])
line = [str(i) for i in line] #2.3把一天所有的数据写入文件
str_line = ','.join(line) + '\n' output2 = OUTPUT_PATH + "gray_all.csv"
f.write(str_line) with open(output2,'a+') as f:
for line in result2:
end = time.time() line = [str(i) for i in line]
print("程序执行时间:{}s".format(end-start)) str_line = ','.join(line) + '\n'
f.write(str_line)
end = time.time()
print("程序执行时间:{}s".format(end-start))
...@@ -35,3 +35,19 @@ def get_yesterday_date(): ...@@ -35,3 +35,19 @@ def get_yesterday_date():
yesterday = today - datetime.timedelta(days=1) yesterday = today - datetime.timedelta(days=1)
yesterday = yesterday.strftime("%Y-%m-%d") yesterday = yesterday.strftime("%Y-%m-%d")
return yesterday return yesterday
def getBetweenDay(begin_date,end_date):
#获取指定时间范围内的date
"""
type begin_date : str eg:'2018-08-29'
type end_date : str eg:'2018-09-01'
rtype : list eg:['2018-08-29','2018-08-30','2018-08-31','2018-09-01']
"""
date_list = []
begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d")
end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d")
while begin_date <= end_date:
date_str = begin_date.strftime("%Y-%m-%d")
date_list.append(date_str)
begin_date += datetime.timedelta(days=1)
return date_list
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment