JimMorrison commited on
Commit
b78b1d3
·
1 Parent(s): c073ee2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +388 -94
app.py CHANGED
@@ -6,101 +6,395 @@ import matplotlib.pyplot as plt
6
 
7
 
8
  st.sidebar.title('Выберите анализируемый период')
9
- choice = st.sidebar.selectbox('Какой период вы хотите выбрать ? ', ("Февраль 2022","Февраль 2023"))
10
  st.sidebar.write('Вы выбрали: ', choice)
11
 
 
12
  if choice == 'Февраль 2022':
13
- dataset=pd.read_excel(r'Feb202222.xlsx')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  elif choice == 'Февраль 2023':
15
- dataset = pd.read_excel(r'Feb202322.xlsx')
16
- dataset = dataset.drop_duplicates()
17
- dataset['Разница'] = dataset['Запрашиваемая скидка, %'] - dataset['Согласованная скидка, %']
18
-
19
- st.header("Аналитика по КП")
20
-
21
- st.write(f'Общее количество КП за анализируемый период - {dataset.shape[0]}')
22
-
23
- men_array = dataset['Менеджер О.П.'].unique()
24
- men_requests = {}
25
- for i in men_array:
26
- men_requests.update({f"{i}":dataset.loc[dataset["Менеджер О.П."]==i].shape[0]})
27
- men_requests=dict(sorted(men_requests.items(), key=lambda item: item[1]))
28
- bar_list = list(men_requests.keys())
29
- bar_vals = list(men_requests.values())
30
- sns.set(rc={'figure.figsize':(19,10)},font_scale=0.65)
31
- y = sns.barplot(x=bar_list,y=bar_vals)
32
- y.bar_label(y.containers[0])
33
- fig = y.get_figure()
34
- fig.savefig(f'{choice}firstdraw.png')
35
- st.image(f'{choice}firstdraw.png',caption='Количество КП отправленных менеджером Отдела продаж за месяц')
36
-
37
- plt.clf()
38
- dataset.loc[dataset['Обратная связь от клиента']!="Клиент позицию взял"].shape[0]
39
- pie_data = [dataset.loc[dataset['Обратная связь от клиента']=="Клиент позицию взял"].shape[0],dataset.loc[dataset['Обратная связь от клиента']!="Клиент позицию взял"].shape[0]]
40
- pie_lables = ['Клиент взял позицию','Клиент не взял позицию']
41
- colors_pie= sns.color_palette('bright')[1:5]
42
- plt.rcParams.update({'font.size': 22})
43
- plt.pie(pie_data,labels=pie_lables,colors=colors_pie,autopct='%.0f%%',textprops={'fontsize': 22})
44
- plt.savefig(f'{choice}seconddraw.png')
45
- st.image(f'{choice}seconddraw.png',caption='Реакция клиентов на КП')
46
-
47
- plt.clf()
48
- data_discount = dataset.loc[(dataset['Обратная связь от клиента']=="Клиент позицию взял")&(dataset['Согласованная скидка, %']!=0)]
49
- data_discount = data_discount[['Менеджер О.П.','Согласованная скидка, %']].groupby(['Менеджер О.П.']).mean().dropna()
50
- data_discount = data_discount.sort_values(by='Согласованная скидка, %',ascending=False)
51
- data_discount = data_discount.to_dict()['Согласованная скидка, %']
52
- discount_list = list(data_discount.keys())
53
- discount_vals = list(data_discount.values())
54
- x = sns.barplot(x=discount_list,y=discount_vals)
55
- x.bar_label(x.containers[0])
56
- thirdfig = x.get_figure()
57
- thirdfig.savefig(f'{choice}thirddraw.png')
58
- st.image(f'{choice}thirddraw.png', caption='Какой процент скидки в среднем запрашивает Менеджер О.П.')
59
-
60
- plt.clf()
61
- categories = dataset[['ТГ',"Количество в запросе, шт"]].groupby(['ТГ']).sum().sort_values(by='Количество в запросе, шт',ascending=False)
62
- categories = categories.to_dict()['Количество в запросе, шт']
63
- cats_list = list(categories.keys())
64
- cats_vals = list(categories.values())
65
- cols = ['red' if x >400 else 'green' for x in cats_vals]
66
- sns.set(rc={'figure.figsize':(19,10)},font_scale=0.80)
67
- z = sns.barplot(x=cats_vals, y=cats_list, estimator=np.sum,palette=cols)
68
- z.bar_label(z.containers[0])
69
- fourfig=z.get_figure()
70
- fourfig.savefig(f'{choice}fourdraw.png')
71
- st.image(f'{choice}fourdraw.png',caption='Суммарное количество позиций, поступивших по К��. Суммарно по товарным группам')
72
-
73
- plt.clf()
74
- men_array = dataset['ТГ'].unique()
75
- men_requests = {}
76
- for i in men_array:
77
- men_requests.update({f"{i}":dataset.loc[dataset["ТГ"]==i].shape[0]})
78
- men_requests=dict(sorted(men_requests.items(), key=lambda item: item[1]))
79
- bar_list = list(men_requests.keys())
80
- bar_vals = list(men_requests.values())
81
- sns.set(rc={'figure.figsize':(19,10)},font_scale=0.65)
82
- y = sns.barplot(x=bar_vals,y=bar_list,palette=['red'])
83
- y.bar_label(y.containers[0])
84
- fivefig = y.get_figure()
85
- fivefig.savefig(f'{choice}fivedraw.png')
86
- st.image(f'{choice}fivedraw.png', caption='Количество поступивших КП по товарным группам')
87
-
88
- plt.clf()
89
- ex = {}
90
- for vb in dataset['Тип согласования'].unique():
91
- ex.update({vb:dataset.loc[dataset['Тип согласования']==f'{vb}'].shape[0]})
92
- bar_list = list(ex.keys())
93
- bar_vals = list(ex.values())
94
- q = sns.barplot(y=bar_vals,x=bar_list)
95
- sixfig = q.get_figure()
96
- sixfig.savefig(f'{choice}sixdraw.png')
97
- st.image(f'{choice}sixdraw.png',caption='Типы КП на анализируемый период')
98
-
99
- plt.clf()
100
- dif_data = [dataset.loc[dataset['Разница']== 0 ].shape[0],dataset.shape[0]-dataset.loc[dataset['Разница']== 0 ].shape[0]]
101
- dif_lables = ['Запрашиваемая и Согласованная скидки совпадают','Запрашиваемая и Согласованная скидки НЕ совпадают']
102
- other_colors_pie = sns.color_palette('bright')[0:4]
103
- plt.rcParams.update({'font.size': 22})
104
- plt.pie(dif_data,labels=dif_lables,colors=other_colors_pie,autopct='%.0f%%',textprops={'fontsize': 22})
105
- plt.savefig(f'{choice}sevendraw.png')
106
- st.image(f'{choice}sevendraw.png',caption='Совпадение/ НЕ совпадение Согласованной и Запрашиваемой скидок')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
 
8
  st.sidebar.title('Выберите анализируемый период')
9
+ choice = st.sidebar.selectbox('Какой период вы хотите выбрать ? ', ("Февраль 2022","Февраль 2023",'Резюме'))
10
  st.sidebar.write('Вы выбрали: ', choice)
11
 
12
+
13
  if choice == 'Февраль 2022':
14
+ dataset=pd.read_excel(r'C:\Users\preysve\Desktop\Git repo\Feb202222.xlsx')
15
+ dataset = dataset.drop_duplicates()
16
+ dataset['Разница'] = dataset['Запрашиваемая скидка, %'] - dataset['Согласованная скидка, %']
17
+
18
+ st.header("Аналитика по КП")
19
+
20
+ st.write(f'Общее количество КП за анализируемый период - {dataset.shape[0]}')
21
+
22
+ men_array = dataset['Менеджер О.П.'].unique()
23
+ men_requests = {}
24
+ for i in men_array:
25
+ men_requests.update({f"{i}": dataset.loc[dataset["Менеджер О.П."] == i].shape[0]})
26
+ men_requests = dict(sorted(men_requests.items(), key=lambda item: item[1]))
27
+ bar_list = list(men_requests.keys())
28
+ bar_vals = list(men_requests.values())
29
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.65)
30
+ y = sns.barplot(x=bar_list, y=bar_vals)
31
+ y.bar_label(y.containers[0])
32
+ fig = y.get_figure()
33
+ fig.savefig(f'{choice}firstdraw.png')
34
+ st.image(f'{choice}firstdraw.png', caption='Количество КП отправленных менеджером Отдела продаж за месяц')
35
+
36
+ plt.clf()
37
+ dataset.loc[dataset['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]
38
+ pie_data = [dataset.loc[dataset['Обратная связь от клиента'] == "Клиент позицию взял"].shape[0],
39
+ dataset.loc[dataset['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]]
40
+ pie_lables = ['Клиент взял позицию', 'Клиент не взял позицию']
41
+ colors_pie = sns.color_palette('bright')[1:5]
42
+ plt.rcParams.update({'font.size': 22})
43
+ plt.pie(pie_data, labels=pie_lables, colors=colors_pie, autopct='%.0f%%', textprops={'fontsize': 22})
44
+ plt.savefig(f'{choice}seconddraw.png')
45
+ st.image(f'{choice}seconddraw.png', caption='Реакция клиентов на КП')
46
+
47
+ plt.clf()
48
+ data_discount = dataset.loc[
49
+ (dataset['Обратная связь от клиента'] == "Клиент позицию взял") & (dataset['Согласованная скидка, %'] != 0)]
50
+ data_discount = data_discount[['Менеджер О.П.', 'Согласованная скидка, %']].groupby(
51
+ ['Менеджер О.П.']).mean().dropna()
52
+ data_discount = data_discount.sort_values(by='Согласованная скидка, %', ascending=False)
53
+ data_discount = data_discount.to_dict()['Согласованная скидка, %']
54
+ discount_list = list(data_discount.keys())
55
+ discount_vals = list(data_discount.values())
56
+ x = sns.barplot(x=discount_list, y=discount_vals)
57
+ x.bar_label(x.containers[0])
58
+ thirdfig = x.get_figure()
59
+ thirdfig.savefig(f'{choice}thirddraw.png')
60
+ st.image(f'{choice}thirddraw.png', caption='Какой процент скидки в среднем запрашивает Менеджер О.П.')
61
+
62
+ plt.clf()
63
+ categories = dataset[['ТГ', "Количество в запросе, шт"]].groupby(['ТГ']).sum().sort_values(
64
+ by='Количество в запросе, шт', ascending=False)
65
+ categories = categories.to_dict()['Количество в запросе, шт']
66
+ cats_list = list(categories.keys())
67
+ cats_vals = list(categories.values())
68
+ cols = ['red' if x > 400 else 'green' for x in cats_vals]
69
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.80)
70
+ z = sns.barplot(x=cats_vals, y=cats_list, estimator=np.sum, palette=cols)
71
+ z.bar_label(z.containers[0])
72
+ fourfig = z.get_figure()
73
+ fourfig.savefig(f'{choice}fourdraw.png')
74
+ st.image(f'{choice}fourdraw.png',
75
+ caption='Суммарное количество позиций, поступивших по КП. Суммарно по товарным группам')
76
+
77
+ plt.clf()
78
+ men_array = dataset['ТГ'].unique()
79
+ men_requests = {}
80
+ for i in men_array:
81
+ men_requests.update({f"{i}": dataset.loc[dataset["ТГ"] == i].shape[0]})
82
+ men_requests = dict(sorted(men_requests.items(), key=lambda item: item[1]))
83
+ bar_list = list(men_requests.keys())
84
+ bar_vals = list(men_requests.values())
85
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.65)
86
+ y = sns.barplot(x=bar_vals, y=bar_list, palette=['red'])
87
+ y.bar_label(y.containers[0])
88
+ fivefig = y.get_figure()
89
+ fivefig.savefig(f'{choice}fivedraw.png')
90
+ st.image(f'{choice}fivedraw.png', caption='Количество поступивших КП по товарным группам')
91
+
92
+ plt.clf()
93
+ ex = {}
94
+ for vb in dataset['Тип согласования'].unique():
95
+ ex.update({vb: dataset.loc[dataset['Тип согласования'] == f'{vb}'].shape[0]})
96
+ bar_list = list(ex.keys())
97
+ bar_vals = list(ex.values())
98
+ q = sns.barplot(y=bar_vals, x=bar_list)
99
+ sixfig = q.get_figure()
100
+ sixfig.savefig(f'{choice}sixdraw.png')
101
+ st.image(f'{choice}sixdraw.png', caption='Типы КП на анализируемый период')
102
+
103
+ plt.clf()
104
+ dif_data = [dataset.loc[dataset['Разница'] == 0].shape[0],
105
+ dataset.shape[0] - dataset.loc[dataset['Разница'] == 0].shape[0]]
106
+ dif_lables = ['Запрашиваемая и Согласованная скидки совпадают', 'Запрашиваемая и Согласованная скидки НЕ совпадают']
107
+ other_colors_pie = sns.color_palette('bright')[0:4]
108
+ plt.rcParams.update({'font.size': 22})
109
+ plt.pie(dif_data, labels=dif_lables, colors=other_colors_pie, autopct='%.0f%%', textprops={'fontsize': 22})
110
+ plt.savefig(f'{choice}sevendraw.png')
111
+ st.image(f'{choice}sevendraw.png', caption='Совпадение/ НЕ совпадение Согласованной и Запрашиваемой скидок')
112
  elif choice == 'Февраль 2023':
113
+ dataset = pd.read_excel(r'C:\Users\preysve\Desktop\Git repo\Feb202322.xlsx')
114
+ dataset = dataset.drop_duplicates()
115
+ dataset['Разница'] = dataset['Запрашиваемая скидка, %'] - dataset['Согласованная скидка, %']
116
+
117
+ st.header("Аналитика по КП")
118
+
119
+ st.write(f'Общее количество КП за анализируемый период - {dataset.shape[0]}')
120
+
121
+ men_array = dataset['Менеджер О.П.'].unique()
122
+ men_requests = {}
123
+ for i in men_array:
124
+ men_requests.update({f"{i}": dataset.loc[dataset["Менеджер О.П."] == i].shape[0]})
125
+ men_requests = dict(sorted(men_requests.items(), key=lambda item: item[1]))
126
+ bar_list = list(men_requests.keys())
127
+ bar_vals = list(men_requests.values())
128
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.65)
129
+ y = sns.barplot(x=bar_list, y=bar_vals)
130
+ y.bar_label(y.containers[0])
131
+ fig = y.get_figure()
132
+ fig.savefig(f'{choice}firstdraw.png')
133
+ st.image(f'{choice}firstdraw.png', caption='Количество КП отправленных менеджером Отдела продаж за месяц')
134
+
135
+ plt.clf()
136
+ dataset.loc[dataset['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]
137
+ pie_data = [dataset.loc[dataset['Обратная связь от клиента'] == "Клиент позицию взял"].shape[0],
138
+ dataset.loc[dataset['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]]
139
+ pie_lables = ['Клиент взял позицию', 'Клиент не взял позицию']
140
+ colors_pie = sns.color_palette('bright')[1:5]
141
+ plt.rcParams.update({'font.size': 22})
142
+ plt.pie(pie_data, labels=pie_lables, colors=colors_pie, autopct='%.0f%%', textprops={'fontsize': 22})
143
+ plt.savefig(f'{choice}seconddraw.png')
144
+ st.image(f'{choice}seconddraw.png', caption='Реакция клиентов на КП')
145
+
146
+ plt.clf()
147
+ data_discount = dataset.loc[
148
+ (dataset['Обратная связь от клиента'] == "Клиент позицию взял") & (dataset['Согласованная скидка, %'] != 0)]
149
+ data_discount = data_discount[['Менеджер О.П.', 'Согласованная скидка, %']].groupby(
150
+ ['Менеджер О.П.']).mean().dropna()
151
+ data_discount = data_discount.sort_values(by='Согласованная скидка, %', ascending=False)
152
+ data_discount = data_discount.to_dict()['Согласованная скидка, %']
153
+ discount_list = list(data_discount.keys())
154
+ discount_vals = list(data_discount.values())
155
+ x = sns.barplot(x=discount_list, y=discount_vals)
156
+ x.bar_label(x.containers[0])
157
+ thirdfig = x.get_figure()
158
+ thirdfig.savefig(f'{choice}thirddraw.png')
159
+ st.image(f'{choice}thirddraw.png', caption='Какой процент скидки в среднем запрашивает Менеджер О.П.')
160
+
161
+ plt.clf()
162
+ categories = dataset[['ТГ', "Количество в з��просе, шт"]].groupby(['ТГ']).sum().sort_values(
163
+ by='Количество в запросе, шт', ascending=False)
164
+ categories = categories.to_dict()['Количество в запросе, шт']
165
+ cats_list = list(categories.keys())
166
+ cats_vals = list(categories.values())
167
+ cols = ['red' if x > 400 else 'green' for x in cats_vals]
168
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.80)
169
+ z = sns.barplot(x=cats_vals, y=cats_list, estimator=np.sum, palette=cols)
170
+ z.bar_label(z.containers[0])
171
+ fourfig = z.get_figure()
172
+ fourfig.savefig(f'{choice}fourdraw.png')
173
+ st.image(f'{choice}fourdraw.png',
174
+ caption='Суммарное количество позиций, поступивших по КП. Суммарно по товарным группам')
175
+
176
+ plt.clf()
177
+ men_array = dataset['ТГ'].unique()
178
+ men_requests = {}
179
+ for i in men_array:
180
+ men_requests.update({f"{i}": dataset.loc[dataset["ТГ"] == i].shape[0]})
181
+ men_requests = dict(sorted(men_requests.items(), key=lambda item: item[1]))
182
+ bar_list = list(men_requests.keys())
183
+ bar_vals = list(men_requests.values())
184
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.65)
185
+ y = sns.barplot(x=bar_vals, y=bar_list, palette=['red'])
186
+ y.bar_label(y.containers[0])
187
+ fivefig = y.get_figure()
188
+ fivefig.savefig(f'{choice}fivedraw.png')
189
+ st.image(f'{choice}fivedraw.png', caption='Количество поступивших КП по товарным группам')
190
+
191
+ plt.clf()
192
+ ex = {}
193
+ for vb in dataset['Тип согласования'].unique():
194
+ ex.update({vb: dataset.loc[dataset['Тип согласования'] == f'{vb}'].shape[0]})
195
+ bar_list = list(ex.keys())
196
+ bar_vals = list(ex.values())
197
+ q = sns.barplot(y=bar_vals, x=bar_list)
198
+ sixfig = q.get_figure()
199
+ sixfig.savefig(f'{choice}sixdraw.png')
200
+ st.image(f'{choice}sixdraw.png', caption='Типы КП на анализируемый период')
201
+
202
+ plt.clf()
203
+ dif_data = [dataset.loc[dataset['Разница'] == 0].shape[0],
204
+ dataset.shape[0] - dataset.loc[dataset['Разница'] == 0].shape[0]]
205
+ dif_lables = ['Запрашиваемая и Согласованная скидки совпадают', 'Запрашиваемая и Согласованная скидки НЕ совпадают']
206
+ other_colors_pie = sns.color_palette('bright')[0:4]
207
+ plt.rcParams.update({'font.size': 22})
208
+ plt.pie(dif_data, labels=dif_lables, colors=other_colors_pie, autopct='%.0f%%', textprops={'fontsize': 22})
209
+ plt.savefig(f'{choice}sevendraw.png')
210
+ st.image(f'{choice}sevendraw.png', caption='Совпадение/ НЕ совпадение Согласованной и Запрашиваемой скидок')
211
+ elif choice == 'Резюме':
212
+ dataset1 = pd.read_excel(r'C:\Users\preysve\Desktop\Git repo\Feb202222.xlsx')
213
+ dataset1 = dataset1.drop_duplicates()
214
+ dataset1['Разница'] = dataset1['Запрашиваемая скидка, %'] - dataset1['Согласованная скидка, %']
215
+
216
+ dataset2 = pd.read_excel(r'C:\Users\preysve\Desktop\Git repo\Feb202322.xlsx')
217
+ dataset2 = dataset2.drop_duplicates()
218
+ dataset2['Разница'] = dataset2['Запрашиваемая скидка, %'] - dataset2['Согласованная скидка, %']
219
+
220
+ st.header("Резюме Аналитики по КП")
221
+
222
+ st.text(f'Сравнение количества КП')
223
+
224
+ quant_lables = ['2022', '2023']
225
+ quant_vals = [dataset1.shape[0], dataset2.shape[0]]
226
+ quant_data = pd.DataFrame.from_dict({'names': quant_lables, 'values': quant_vals})
227
+ st.bar_chart(quant_data, x='names', y='values', height=0)
228
+ st.text('По сравнению с февралем 2022 года, количество КП в 2023 году возрасло на 70 %')
229
+
230
+
231
+ def top_tg_zapros():
232
+
233
+ sp = plt.subplot(121)
234
+ tg1_array = dataset1['ТГ'].unique()
235
+ tg1_requests = {}
236
+ for i in tg1_array:
237
+ tg1_requests.update({f"{i}": dataset1.loc[dataset1["ТГ"] == i].shape[0]})
238
+ tg1_requests = dict(sorted(tg1_requests.items(), key=lambda item: item[1], reverse=True))
239
+ bar1_list = list(tg1_requests.keys())[0:5]
240
+ bar_vals = list(tg1_requests.values())[0:5]
241
+ y = sns.barplot(x=bar_vals, y=bar1_list, palette=['red'])
242
+ y.bar_label(y.containers[0])
243
+ quan_tg_fig1 = y.get_figure()
244
+ quan_tg_fig1.savefig(f'{choice}quan_tg_fig1draw.png')
245
+ plt.title('2022', fontsize=15)
246
+
247
+ sp = plt.subplot(122)
248
+ tg2_array = dataset2['ТГ'].unique()
249
+ tg2_requests = {}
250
+ for i in tg2_array:
251
+ tg2_requests.update({f"{i}": dataset2.loc[dataset2["ТГ"] == i].shape[0]})
252
+ tg2_requests = dict(sorted(tg2_requests.items(), key=lambda item: item[1], reverse=True))
253
+ bar2_list = list(tg2_requests.keys())[0:5]
254
+ bar_vals = list(tg2_requests.values())[0:5]
255
+ y = sns.barplot(x=bar_vals, y=bar2_list, palette=['blue'])
256
+ y.bar_label(y.containers[0])
257
+ quan_tg_fig2 = y.get_figure()
258
+ quan_tg_fig2.savefig(f'{choice}quan_tg_fig2draw.png')
259
+ plt.title('2023', fontsize=15)
260
+
261
+ plt.savefig('Something2.png')
262
+ st.image('Something2.png', caption='ТОП-5 товарных групп по количеству КП')
263
+
264
+ return bar1_list, bar2_list
265
+
266
+
267
+ def pie_data_clientreact():
268
+
269
+ plt.clf()
270
+ sp = plt.subplot(121)
271
+ dataset1.loc[dataset1['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]
272
+ pie1_data = [dataset1.loc[dataset1['Обратная связь от клиента'] == "Клиент позицию взял"].shape[0],
273
+ dataset1.loc[dataset1['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]]
274
+ pie1_lables = ['Клиент взял позицию', 'Клиент не взял позицию']
275
+ colors_pie = sns.color_palette('bright')[1:5]
276
+ plt.rcParams.update({'font.size': 15})
277
+ plt.pie(pie1_data, labels=pie1_lables, colors=colors_pie, autopct='%.0f%%', textprops={'fontsize': 15})
278
+ plt.title('2022', fontsize=15)
279
+
280
+ sp = plt.subplot(122)
281
+ dataset2.loc[dataset2['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]
282
+ pie2_data = [dataset2.loc[dataset2['Обратная связь от клиента'] == "Клиент позицию взял"].shape[0],
283
+ dataset2.loc[dataset2['Обратная связь от клиента'] != "Клиент позицию взял"].shape[0]]
284
+ pie2_lables = ['Клиент взял позицию', 'Клиент не взял позицию']
285
+ colors_pie = sns.color_palette('bright')[1:5]
286
+ plt.rcParams.update({'font.size': 15})
287
+ plt.pie(pie2_data, labels=pie2_lables, colors=colors_pie, autopct='%.0f%%', textprops={'fontsize': 15})
288
+ plt.title('2023', fontsize=15)
289
+
290
+ plt.savefig('SOMETHIG.png')
291
+ st.image('SOMETHIG.png', caption='Реакция клиентов на КП')
292
+
293
+
294
+ def quantTG():
295
+ sp = plt.subplot(121)
296
+ new_cat1 = {}
297
+ categories1 = dataset1[['ТГ', "Количество в запросе, шт"]].groupby(['ТГ']).sum().sort_values(
298
+ by='Количество в запросе, шт', ascending=False)
299
+ categories1 = categories1.to_dict()['Количество в запросе, шт']
300
+ for key, value in categories1.items():
301
+ if key in f1:
302
+ new_cat1[key] = value
303
+
304
+ cats_list = list(new_cat1.keys())
305
+ cats_vals = list(new_cat1.values())
306
+ cols = ['red']
307
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.80)
308
+ z1 = sns.barplot(x=cats_vals, y=cats_list, estimator=np.sum, palette=cols)
309
+ z1.bar_label(z1.containers[0])
310
+ plt.title('2022', fontsize=15)
311
+
312
+ sp = plt.subplot(122)
313
+ new_cat2 = {}
314
+ categories2 = dataset2[['ТГ', "Количество в запросе, шт"]].groupby(['ТГ']).sum().sort_values(
315
+ by='Количество в запросе, шт', ascending=False)
316
+ categories2 = categories2.to_dict()['Количество в запросе, шт']
317
+ for key, value in categories2.items():
318
+ if key in k2:
319
+ new_cat2[key] = value
320
+
321
+ cats_list = list(new_cat2.keys())
322
+ cats_vals = list(new_cat2.values())
323
+ cols = ['blue']
324
+ sns.set(rc={'figure.figsize': (19, 10)}, font_scale=0.80)
325
+ z = sns.barplot(x=cats_vals, y=cats_list, estimator=np.sum, palette=cols)
326
+ z.bar_label(z.containers[0])
327
+ plt.title('2022', fontsize=15)
328
+
329
+ plt.savefig('KPquanTG.png')
330
+ st.image('KPquanTG.png', caption='Количество позиций по ТОП-5 ТГ')
331
+
332
+
333
+ def TGtype():
334
+ sp = plt.subplot(121)
335
+ ex1 = {}
336
+ for vb in dataset1['Тип согласования'].unique():
337
+ ex1.update({vb: dataset1.loc[dataset1['Тип согласования'] == f'{vb}'].shape[0]})
338
+ bar1_list = list(ex1.keys())
339
+ bar1_vals = list(ex1.values())
340
+ q = sns.barplot(y=bar1_vals, x=bar1_list)
341
+ q.bar_label(q.containers[0])
342
+ plt.title('2022', fontsize=15)
343
+
344
+ sp = plt.subplot(122)
345
+ ex2 = {}
346
+ for vb in dataset2['Тип согласования'].unique():
347
+ ex2.update({vb: dataset2.loc[dataset2['Тип согласования'] == f'{vb}'].shape[0]})
348
+ bar2_list = list(ex2.keys())
349
+ bar2_vals = list(ex2.values())
350
+ q2 = sns.barplot(y=bar2_vals, x=bar2_list)
351
+ q2.bar_label(q2.containers[0])
352
+ plt.title('2023', fontsize=15)
353
+
354
+ plt.savefig('SoglType.png')
355
+ st.image('SoglType.png')
356
+
357
+
358
+ def pricesovp():
359
+ sp = plt.subplot(121)
360
+ dif1_data = [dataset1.loc[dataset1['Разница'] == 0].shape[0],
361
+ dataset1.shape[0] - dataset1.loc[dataset1['Разница'] == 0].shape[0]]
362
+ dif1_lables = ['Совпадают', 'НЕ совпадают']
363
+ other_colors_pie = sns.color_palette('bright')[0:4]
364
+ plt.rcParams.update({'font.size': 13})
365
+ plt.pie(dif1_data, labels=dif1_lables, colors=other_colors_pie, autopct='%.0f%%', textprops={'fontsize': 13})
366
+ plt.title('2022', fontsize=20)
367
+
368
+ sp = plt.subplot(122)
369
+ dif2_data = [dataset2.loc[dataset2['Разница'] == 0].shape[0],
370
+ dataset2.shape[0] - dataset2.loc[dataset2['Разница'] == 0].shape[0]]
371
+ dif2_lables = ['Совпадают', 'НЕ совпадают']
372
+ other_colors_pie = sns.color_palette('bright')[0:4]
373
+ plt.rcParams.update({'font.size': 20})
374
+ plt.pie(dif2_data, labels=dif2_lables, colors=other_colors_pie, autopct='%.0f%%', textprops={'fontsize': 13})
375
+ plt.title('2023', fontsize=20)
376
+
377
+ plt.savefig('zaprsogl.png')
378
+ st.image('zaprsogl.png')
379
+
380
+
381
+ f1, k2 = top_tg_zapros()
382
+ st.write(
383
+ 'На графике мы можем видеть изменения в ТГ, по которым приходят КП. Можно заметить, что по состоянию на 2023 год в ТОП-5 групп выбились Накладки, Накладки Simpeco и Оптика. Стоит обратить внимание на то, что Рессоры и Барабаны Simpeco остались в ТОП-5, также как и в 2022.')
384
+ plt.clf()
385
+ quantTG()
386
+ st.write(
387
+ 'На основе это графика, не трудно сделть вывод, что с ростом количества КП, растет и количество позиций, на которые запрашивается скидка. Таким образом мы можем увидеть прирост по двум сопадающим ТГ - Рессоры и Барабаны Simpeco, если конкретнее то количество по Рессорам возрасло на 34%, а по барабанам Simpeco на 239%')
388
+ plt.clf()
389
+ TGtype()
390
+ st.write('Количество КП по типу "На Объем" по сравнению с февралем прошлого года возрасло на 517%')
391
+ plt.clf()
392
+ pricesovp()
393
+ st.write(
394
+ 'Можем заметить что процент скидок в которых совпадает Цена Запрашиваемая и Цена Согласованная, увеличился. Это свидетельствует о том, что КП, которые поступают в ОЦДР, укладываются в текущую политику именно поэтому необходимо оценить поведение клиента.')
395
+ plt.clf()
396
+ pie_data_clientreact()
397
+ st.write(
398
+ 'Из этого графика можем заметить, что в относительных показателях процент клиентов, которые берут позиции с учетом скидок по КП увеличился на 1%. Этот показатель является незначительным, с учетом роста количества КП, а также роста запросов по типу скидки "На объем"')
399
+
400
+ st.header('Благодарим за внимание !')