Помогите с задачей 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 [38;5;241m+[39m[38;5;241m=[39m promo_column[index]
28 counter [38;5;241m+[39m[38;5;241m=[39m [38;5;241m1[39m
---> 29 promo_score[38;5;241m.[39mappend([43mpromo[49m[38;5;241;43m/[39;49m[43mcounter[49m)
30 mean_promo[38;5;241m.[39mappend(promo_score)
32 seaborn[38;5;241m.[39mheatmap(mean_promo, xticklabels[38;5;241m=[39mintervals, yticklabels[38;5;241m=[39msegments_new, annot[38;5;241m=[39m[38;5;28;01mTrue[39;00m, cmap[38;5;241m=[39m[38;5;124m'[39m[38;5;124mRdYlGn[39m[38;5;124m'[39m)
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')
Привет. Ты нашла решение?
Добавление результатов деления счётчиков поместим в область второго списка, а добавление получившегося списка с результатами деления в область первого цилка.