Top.Mail.Ru
Ответы

Помогите с задачей PYTHON (Практикум)

Теперь постройте тепловую карту по среднему количеству выданных промокодов.
За один раз сотрудники поддержки или выдают один промокод, или не выдают ни одного, поэтому в столбце 'promo' только два вида значений: 1 и 0. Среднее позволит судить о частоте выдачи в разных сегментах — чем ближе к единице, тем чаще выдают промокоды.



import pandas
import seaborn

​data = pandas.read _csv('support_data.csv')

segments_old = ['Segment 0', 'Segment 1', 'Segment 2']
segments_new = ['Потенциальные клиенты', 'Обычные клиенты', 'VIP-клиенты']
intervals = ['До внедрения роботов', 'После внедрения роботов']

intervals_column = list(data['interval'])
segments_column = list(data['segment'])
promo_column = list(data['promo'])# ваш код здесь

mean_promo = []

for segment in segments_old:
promo_score = []

for interval in intervals:
promo = 0
counter = 0

for index in range(len(data)):
if (segments_column[index] == segment and
intervals_column[index] == interval):
promo += promo_column[index]
counter += 1
promo_score.append(promo/counter)
mean_promo.append(promo_score)

seaborn.heatmap(mean_promo, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')

Вроде все сделала по предыдущему примеру задачи...но чет ошибка что на ноль делю...ничего не понимаю((

Ошибка:
Результат
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Input In [1], in <cell line: 17>()
27 promo += promo_column[index]
28 counter += 1
---> 29 promo_score.append(promo/counter)
30 mean_promo.append(promo_score)
32 seaborn.heatmap(mean_promo, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')
ZeroDivisionError: division by zero

По дате
По рейтингу
Аватар пользователя
Профи

import pandas
import seaborn

data = pandas.read _csv('support_data.csv')

segments_old = ['Segment 0', 'Segment 1', 'Segment 2']
segments_new = ['Потенциальные клиенты', 'Обычные клиенты', 'VIP-клиенты']
intervals = ['До внедрения роботов', 'После внедрения роботов']
promo_count = [0,1]

intervals_column = list(data['interval'])
segments_column = list(data['segment'])
promo_column = list(data['promo'])# ваш код здесь

mean_promo = [] #среднее значение промо

for segment in segments_old:
interval_promo = []

# вложенный цикл по двум периодам

for interval in intervals:
promo = 0
counter = 0
# вложенный цикл по строкам
for index in range(len(data)):
if (segments_column[index] == segment and
intervals_column[index] == interval):
promo += promo_column[index]
counter += 1

interval_promo.append(promo / counter)
mean_promo.append(interval_promo)

seaborn.heatmap(mean_promo, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')

Аватар пользователя
Профи

import pandas
import seaborn

data = pandas.read _csv('support_data.csv')

segments_old = ['Segment 0', 'Segment 1', 'Segment 2']
segments_new = ['Потенциальные клиенты', 'Обычные клиенты', 'VIP-клиенты']
intervals = ['До внедрения роботов', 'После внедрения роботов']

intervals_column = list(data['interval'])
segments_column = list(data['segment'])
promo_column = list(data['promo']) # ваш код здесь

mean_promo = []

for segment in segments_old: # напишите ваш код здесь
promo_before = 0
counter_before = 0
promo_after = 0
counter_after = 0
for index in range(len(data)):
if segments_column[index] == segment:
if intervals_column[index] == 'До внедрения роботов':
promo_before += promo_column[index]
counter_before += 1
else:
promo_after += promo_column[index]
counter_after += 1
segment_promo = [promo_before / counter_before, promo_after / counter_after]
mean_promo.append(segment_promo)

seaborn.heatmap(mean_promo, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')

Аватар пользователя
Ученик

Привет. Ты нашла решение?

Аватар пользователя
Знаток

Добавление результатов деления счётчиков поместим в область второго списка, а добавление получившегося списка с результатами деления в область первого цилка.