Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
ffm-baseline
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ML
ffm-baseline
Commits
69aa7b29
Commit
69aa7b29
authored
Sep 03, 2018
by
高雅喆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
get between date to stat back features
parent
93b9b034
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
109 additions
and
88 deletions
+109
-88
grayStat.py
eda/gray_stat/grayStat.py
+92
-88
utils.py
eda/gray_stat/utils.py
+17
-0
No files found.
eda/gray_stat/grayStat.py
View file @
69aa7b29
# -*- coding: UTF-8 -*-
from
utils
import
con_sql
,
get_yesterday_date
from
utils
import
con_sql
,
get_yesterday_date
,
get_between_day
import
time
OUTPUT_PATH
=
"/data2/models/eda/gray_stat/"
...
...
@@ -60,92 +60,96 @@ class GrayStat(object):
if
__name__
==
'__main__'
:
print
(
"开始获取ffm中的灰度非灰度比例"
)
start
=
time
.
time
()
#1.ffm中的灰度非灰度(ios和安卓一样):
# 灰度:_6
# 非灰度:_8
result1
=
[]
#1.1获取ios和android平台的数据
platforms
=
[
'ios'
,
'android'
]
grays
=
[
'6'
,
'8'
]
for
platform
in
platforms
:
for
gray
in
grays
:
g_class
=
GrayStat
(
'diary'
,
gray
,
platform
)
uid_count
=
g_class
.
get_uid_count
()
uid_clk_times
=
g_class
.
get_uid_clk_times
()
uid_imp_times
=
g_class
.
get_uid_imp_times
()
uid_clk_rate
=
round
(
uid_clk_times
/
uid_imp_times
,
4
)
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
gray
,
uid_count
,
\
uid_clk_times
,
uid_imp_times
,
uid_clk_rate
])
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
'all'
,
\
result1
[
-
1
][
4
]
+
result1
[
-
2
][
4
],
\
result1
[
-
1
][
5
]
+
result1
[
-
2
][
5
],
\
result1
[
-
1
][
6
]
+
result1
[
-
2
][
6
],
\
round
((
result1
[
-
1
][
5
]
+
result1
[
-
2
][
5
])
/
(
result1
[
-
1
][
6
]
+
result1
[
-
2
][
6
]),
4
)])
#1.2获取所有平台的数据
labels
=
[
'6'
,
'8'
,
'all'
]
for
i
in
range
(
3
):
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
'all'
,
labels
[
i
],
\
result1
[
i
][
4
]
+
result1
[
i
+
3
][
4
],
\
result1
[
i
][
5
]
+
result1
[
i
+
3
][
5
],
\
result1
[
i
][
6
]
+
result1
[
i
+
3
][
6
],
\
round
((
result1
[
i
][
5
]
+
result1
[
i
+
3
][
5
])
/
(
result1
[
i
][
6
]
+
result1
[
i
+
3
][
6
]),
4
)])
#1.3把一天所有的数据存入文件
output1
=
OUTPUT_PATH
+
"gray_ffm.csv"
with
open
(
output1
,
'a+'
)
as
f
:
for
line
in
result1
:
line
=
[
str
(
i
)
for
i
in
line
]
str_line
=
','
.
join
(
line
)
+
'
\n
'
f
.
write
(
str_line
)
#2.实际中的灰度非灰度:
# ios:
# 灰度:6|8
#非灰度:^68
# android:
# 灰度:0|1|2|6|8
#非灰度:^01268
print
(
"开始获取实际中的灰度非灰度比例"
)
result2
=
[]
#2.1获取ios和android平台的数据
platforms
=
[
'ios'
,
'android'
]
for
platform
in
platforms
:
#TODO 对于(安卓灰度放到 0 1 2 6 8;iOS灰度保持 6 8)问题,做一个id判断即可
if
platform
==
'ios'
:
grays
=
[
'6|8'
,
'^68'
]
else
:
grays
=
[
'0|1|2|6|8'
,
'^01268'
]
for
gray
in
grays
:
g_class
=
GrayStat
(
'diary'
,
gray
,
platform
)
uid_count
=
g_class
.
get_uid_count
()
uid_clk_times
=
g_class
.
get_uid_clk_times
()
uid_imp_times
=
g_class
.
get_uid_imp_times
()
uid_clk_rate
=
round
(
uid_clk_times
/
uid_imp_times
,
4
)
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
gray
,
uid_count
,
\
uid_clk_times
,
uid_imp_times
,
uid_clk_rate
])
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
'all'
,
\
result2
[
-
1
][
4
]
+
result2
[
-
2
][
4
],
\
result2
[
-
1
][
5
]
+
result2
[
-
2
][
5
],
\
result2
[
-
1
][
6
]
+
result2
[
-
2
][
6
],
\
round
((
result2
[
-
1
][
5
]
+
result2
[
-
2
][
5
])
/
(
result2
[
-
1
][
6
]
+
result2
[
-
2
][
6
]),
4
)])
#2.2获取所有平台的数据
labels
=
[
'gray'
,
'not gray'
,
'all'
]
for
i
in
range
(
3
):
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
'all'
,
labels
[
i
],
\
result2
[
i
][
4
]
+
result2
[
i
+
3
][
4
],
\
result2
[
i
][
5
]
+
result2
[
i
+
3
][
5
],
\
result2
[
i
][
6
]
+
result2
[
i
+
3
][
6
],
\
round
((
result2
[
i
][
5
]
+
result2
[
i
+
3
][
5
])
/
(
result2
[
i
][
6
]
+
result2
[
i
+
3
][
6
]),
4
)])
#2.3把一天所有的数据写入文件
output2
=
OUTPUT_PATH
+
"gray_all.csv"
with
open
(
output2
,
'a+'
)
as
f
:
for
line
in
result2
:
line
=
[
str
(
i
)
for
i
in
line
]
str_line
=
','
.
join
(
line
)
+
'
\n
'
f
.
write
(
str_line
)
end
=
time
.
time
()
print
(
"程序执行时间:{}s"
.
format
(
end
-
start
))
date_list
=
get_between_day
(
'2018-08-20'
,
'2018-08-29'
)
for
i
in
date_list
:
print
(
"开始获取ffm中的灰度非灰度比例"
)
start
=
time
.
time
()
#1.ffm中的灰度非灰度(ios和安卓一样):
# 灰度:_6
# 非灰度:_8
result1
=
[]
#1.1获取ios和android平台的数据
platforms
=
[
'ios'
,
'android'
]
grays
=
[
'6'
,
'8'
]
for
platform
in
platforms
:
for
gray
in
grays
:
g_class
=
GrayStat
(
'diary'
,
gray
,
platform
,
i
)
uid_count
=
g_class
.
get_uid_count
()
uid_clk_times
=
g_class
.
get_uid_clk_times
()
uid_imp_times
=
g_class
.
get_uid_imp_times
()
uid_clk_rate
=
round
(
uid_clk_times
/
uid_imp_times
,
4
)
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
gray
,
uid_count
,
\
uid_clk_times
,
uid_imp_times
,
uid_clk_rate
])
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
'all'
,
\
result1
[
-
1
][
4
]
+
result1
[
-
2
][
4
],
\
result1
[
-
1
][
5
]
+
result1
[
-
2
][
5
],
\
result1
[
-
1
][
6
]
+
result1
[
-
2
][
6
],
\
round
((
result1
[
-
1
][
5
]
+
result1
[
-
2
][
5
])
/
(
result1
[
-
1
][
6
]
+
result1
[
-
2
][
6
]),
4
)])
#1.2获取所有平台的数据
labels
=
[
'6'
,
'8'
,
'all'
]
for
i
in
range
(
3
):
result1
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
'all'
,
labels
[
i
],
\
result1
[
i
][
4
]
+
result1
[
i
+
3
][
4
],
\
result1
[
i
][
5
]
+
result1
[
i
+
3
][
5
],
\
result1
[
i
][
6
]
+
result1
[
i
+
3
][
6
],
\
round
((
result1
[
i
][
5
]
+
result1
[
i
+
3
][
5
])
/
(
result1
[
i
][
6
]
+
result1
[
i
+
3
][
6
]),
4
)])
#1.3把一天所有的数据存入文件
output1
=
OUTPUT_PATH
+
"gray_ffm.csv"
with
open
(
output1
,
'a+'
)
as
f
:
for
line
in
result1
:
line
=
[
str
(
i
)
for
i
in
line
]
str_line
=
','
.
join
(
line
)
+
'
\n
'
f
.
write
(
str_line
)
#2.实际中的灰度非灰度:
# ios:
# 灰度:6|8
#非灰度:^68
# android:
# 灰度:0|1|2|6|8
#非灰度:^01268
print
(
"开始获取实际中的灰度非灰度比例"
)
result2
=
[]
#2.1获取ios和android平台的数据
platforms
=
[
'ios'
,
'android'
]
for
platform
in
platforms
:
#TODO 对于(安卓灰度放到 0 1 2 6 8;iOS灰度保持 6 8)问题,做一个id判断即可
if
platform
==
'ios'
:
grays
=
[
'6|8'
,
'^68'
]
else
:
grays
=
[
'0|1|2|6|8'
,
'^01268'
]
for
gray
in
grays
:
g_class
=
GrayStat
(
'diary'
,
gray
,
platform
,
i
)
uid_count
=
g_class
.
get_uid_count
()
uid_clk_times
=
g_class
.
get_uid_clk_times
()
uid_imp_times
=
g_class
.
get_uid_imp_times
()
uid_clk_rate
=
round
(
uid_clk_times
/
uid_imp_times
,
4
)
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
gray
,
uid_count
,
\
uid_clk_times
,
uid_imp_times
,
uid_clk_rate
])
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
platform
,
'all'
,
\
result2
[
-
1
][
4
]
+
result2
[
-
2
][
4
],
\
result2
[
-
1
][
5
]
+
result2
[
-
2
][
5
],
\
result2
[
-
1
][
6
]
+
result2
[
-
2
][
6
],
\
round
((
result2
[
-
1
][
5
]
+
result2
[
-
2
][
5
])
/
(
result2
[
-
1
][
6
]
+
result2
[
-
2
][
6
]),
4
)])
#2.2获取所有平台的数据
labels
=
[
'gray'
,
'not gray'
,
'all'
]
for
i
in
range
(
3
):
result2
.
append
([
g_class
.
ndays
,
g_class
.
cid_type
,
'all'
,
labels
[
i
],
\
result2
[
i
][
4
]
+
result2
[
i
+
3
][
4
],
\
result2
[
i
][
5
]
+
result2
[
i
+
3
][
5
],
\
result2
[
i
][
6
]
+
result2
[
i
+
3
][
6
],
\
round
((
result2
[
i
][
5
]
+
result2
[
i
+
3
][
5
])
/
(
result2
[
i
][
6
]
+
result2
[
i
+
3
][
6
]),
4
)])
#2.3把一天所有的数据写入文件
output2
=
OUTPUT_PATH
+
"gray_all.csv"
with
open
(
output2
,
'a+'
)
as
f
:
for
line
in
result2
:
line
=
[
str
(
i
)
for
i
in
line
]
str_line
=
','
.
join
(
line
)
+
'
\n
'
f
.
write
(
str_line
)
end
=
time
.
time
()
print
(
"程序执行时间:{}s"
.
format
(
end
-
start
))
eda/gray_stat/utils.py
View file @
69aa7b29
...
...
@@ -35,3 +35,19 @@ def get_yesterday_date():
yesterday
=
today
-
datetime
.
timedelta
(
days
=
1
)
yesterday
=
yesterday
.
strftime
(
"
%
Y-
%
m-
%
d"
)
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment