· 7 years ago · Apr 18, 2018, 09:42 PM
1df['клик на more'] = df['тег'].apply(statMore_list)
2df['клик на address'] = df['тег'].apply(statAddress_list)
3df['клик на map'] = df['тег'].apply(statMap_list)
4df['клик на name'] = df['тег'].apply(statByUrl)
5
6def statMore_list (i):
7
8 API_URL = 'https://api-metrika.yandex.ru/stat/v1/data'
9
10 params_func = {
11
12 'date1': start_date,
13
14 'date2': end_date,
15
16 'id': id_metrika,
17
18 'dimensions': 'ym:s:paramsLevel2',
19
20 'metrics': 'ym:s:visits',
21
22 'oauth_token': token,
23
24 'filters': "ym:s:paramsLevel1=='listitem' AND ym:s:startURL=@'{}'".format(i)
25 }
26
27 d = requests.get(API_URL, params = params_func)
28 d = d.json()
29
30 for i in d['data']:
31 if i['dimensions'][0]['name'] == 'more_list':
32 more_list = i['metrics'][0]
33 print(more_list)
34 return more_list
35
36def checkFunction (i):
37 if i['dimensions'][0]['name'] == 'name_list':
38 name_list = i['metrics'][0]
39 #print(name_list)
40 return name_list
41
42 if i['dimensions'][0]['name'] == 'more_list':
43 more_list = i['metrics'][0]
44 #print(more_list)
45 return more_list
46
47 if i['dimensions'][0]['name'] == 'address_list':
48 address_list = i['metrics'][0]
49 #print(address_list)
50 return address_list
51
52 if i['dimensions'][0]['name'] == 'map_list':
53 map_list = i['metrics'][0]
54 #print(map_list)
55 return map_list
56
57def statByUrl (i):
58
59 API_URL = 'https://api-metrika.yandex.ru/stat/v1/data'
60
61 params_func = {
62
63 'date1': start_date,
64
65 'date2': end_date,
66
67 'id': id_metrika,
68
69 'dimensions': 'ym:s:paramsLevel2',
70
71 'metrics': 'ym:s:visits',
72
73 'oauth_token': token,
74
75 'filters': "ym:s:paramsLevel1=='listitem' AND ym:s:startURL=@'{}'".format(i)
76 }
77
78 d = requests.get(API_URL, params = params_func)
79 d = d.json()
80 pprint(d)
81
82 for k in d['data']:
83 checkFunction(k)
84
85{'data': [{'dimensions': [{'name': 'position'}], 'metrics': [15741.0]},
86 {'dimensions': [{'name': 'referer'}], 'metrics': [15741.0]},
87 {'dimensions': [{'name': 'name_list'}], 'metrics': [7322.0]},
88 {'dimensions': [{'name': 'more_list'}], 'metrics': [5374.0]},
89 {'dimensions': [{'name': 'address_list'}], 'metrics': [4050.0]},
90 {'dimensions': [{'name': 'map_list'}], 'metrics': [3361.0]},
91 {'dimensions': [{'name': 'icon_price'}], 'metrics': [119.0]},
92 {'dimensions': [{'name': 'icon_photo'}], 'metrics': [49.0]},
93 {'dimensions': [{'name': 'icon_feedback'}], 'metrics': [30.0]},
94 {'dimensions': [{'name': 'icon_comments'}], 'metrics': [23.0]},
95 {'dimensions': [{'name': 'icon_videos'}], 'metrics': [1.0]}],
96 'data_lag': 86,
97 'max': [15741.0],
98 'min': [1.0],
99 'query': {'attribution': 'Last',
100 'auto_group_size': '1',
101 'currency': 'RUB',
102 'date1': '2018-02-01',
103 'date2': '2018-04-16',
104 'dimensions': ['ym:s:paramsLevel2'],
105 'filters': "ym:s:paramsLevel1=='listitem' AND "
106 "ym:s:startURL=@'/***********/'",
107 'group': 'Week',
108 'ids': [***********],
109 'limit': 100,
110 'metrics': ['ym:s:visits'],
111 'offline_window': '21',
112 'offset': 1,
113 'quantile': '50',
114 'sort': ['-ym:s:visits']},
115 'sample_share': 1.0,
116 'sample_size': 767118,
117 'sample_space': 767118,
118 'sampled': False,
119 'total_rows': 11,
120 'total_rows_rounded': False,
121 'totals': [15741.0]}
122
123In [108]: data = {x['dimensions'][0]['name']:x['metrics'] for x in d['data']}
124
125In [109]: data
126Out[109]:
127{'position': [15741.0],
128 'referer': [15741.0],
129 'name_list': [7322.0],
130 'more_list': [5374.0],
131 'address_list': [4050.0],
132 'map_list': [3361.0],
133 'icon_price': [119.0],
134 'icon_photo': [49.0],
135 'icon_feedback': [30.0],
136 'icon_comments': [23.0],
137 'icon_videos': [1.0]}
138
139In [110]: df = pd.DataFrame(data)
140
141In [111]: df
142Out[111]:
143 address_list icon_comments icon_feedback icon_photo icon_price icon_videos map_list more_list name_list position referer
1440 4050.0 23.0 30.0 49.0 119.0 1.0 3361.0 5374.0 7322.0 15741.0 15741.0