Постройте столбчатую диаграмму, отображающую зависимость оценки от среднего количества выданных промокодов. Для этого отложите по оси X все возможные значения оценок из переменной scores, а по оси Y — среднее количество промокодов для каждой оценки. Возьмите только данные «до внедрения роботов» — на них роботы обучались.
подсказка:
Напишите вложенный цикл: пусть внешний цикл for проходит по оценкам из scores, а внутренний — по всем строкам датасета с перебором по индексам. В теле внешнего цикла объявите переменные для подсчёта количества промокодов и количества оценок.
В теле вложенного цикла поставьте два условия через оператор and: значение в колонке 'interval' совпадает со значением 'До внедрения роботов', а значение в 'score' — c переменной внешнего цикла. При выполнении условий добавляйте значение из столбца 'promo' к значению переменной для подсчёта количества промокодов и единицу — к переменной для подсчёта количества оценок.
Затем в теле внешнего цикла посчитайте возможность получить промокод, разделив количество промокодов на количество оценок, и добавьте это значение в заранее созданный пустой список.
Постройте столбчатую диаграмму: вызовите функцию barplot() из библиотеки seaborn, указав в её скобках x=scores и y=..., где вместо ... — название переменной со списком значений, обозначающих возможность получить промокод..
import pandas
import seaborn
data = pandas.read_csv('support_data.csv')
score_column = list(data['score'])
intervals_column = list(data['interval'])
promo_column = list(data['promo'])
# список всех оценок
scores = list(range(11))
for index in scores:
promo_n = 0
score_n = 0
if intervals_column[index] == 'До внедрения роботов' and score == values:
promo_n += promo_column[index]
score_n += 1
promo_av = []
promo_av.append(promo_n/score_n)
seaborn.barplot(x=scores, y=promo_av)
# ваш код здесь
Python
Помогите решить задачу на Python
Доброго времени суток! Тоже решал сегодня эту задачу в практикуме. И тоже видел этот код.
В нем не хватает вложенного цикла после объявления переменной score_n = 0. В подсказке написано "Напишите вложенный цикл: пусть внешний цикл for проходит по оценкам из scores, а внутренний — по всем строкам датасета с перебором по индексам", то есть надо пройти по всем строкам от 0 до 32539.
Далее, в подсказке написано "В теле вложенного цикла поставьте два условия через оператор and: значение в колонке 'interval' совпадает со значением 'До внедрения роботов', а значение в 'score' — c переменной внешнего цикла.", но переменной score нигде нет и объявлять её не нужно. Имеется в виду список score_column, к элементам которого нужно обращаться по индексам.
Ещё список promo_av лучше объявить вне цикла, чтобы не нарушать область видимости.
Вот мой код:
import pandas
import seaborn
promo_av = []
data = pandas.read_csv('support_data.csv')
score_column = list(data['score'])
intervals_column = list(data['interval'])
promo_column = list(data['promo'])
# список всех оценок
scores = list(range(11))
for values in scores:
promo_n = 0
score_n = 0
for index in range(0,32539):
if intervals_column[index] == 'До внедрения роботов' and score_column[index] == values:
promo_n+= promo_column[index]
score_n+=1
promo_av.append(promo_n/score_n)
seaborn.barplot(x=scores, y=promo_av)
В нем не хватает вложенного цикла после объявления переменной score_n = 0. В подсказке написано "Напишите вложенный цикл: пусть внешний цикл for проходит по оценкам из scores, а внутренний — по всем строкам датасета с перебором по индексам", то есть надо пройти по всем строкам от 0 до 32539.
Далее, в подсказке написано "В теле вложенного цикла поставьте два условия через оператор and: значение в колонке 'interval' совпадает со значением 'До внедрения роботов', а значение в 'score' — c переменной внешнего цикла.", но переменной score нигде нет и объявлять её не нужно. Имеется в виду список score_column, к элементам которого нужно обращаться по индексам.
Ещё список promo_av лучше объявить вне цикла, чтобы не нарушать область видимости.
Вот мой код:
import pandas
import seaborn
promo_av = []
data = pandas.read_csv('support_data.csv')
score_column = list(data['score'])
intervals_column = list(data['interval'])
promo_column = list(data['promo'])
# список всех оценок
scores = list(range(11))
for values in scores:
promo_n = 0
score_n = 0
for index in range(0,32539):
if intervals_column[index] == 'До внедрения роботов' and score_column[index] == values:
promo_n+= promo_column[index]
score_n+=1
promo_av.append(promo_n/score_n)
seaborn.barplot(x=scores, y=promo_av)
у меня ошибка возникает при решении, которое дали выше
Яков Чукин
работает, возможно ошибка в отступах

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:
interval_column = [] # про 4 8 12 пробелов в начале строк цикла не забываем
# вложенный цикл по двум периодам
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_column.append(promo / counter)
mean_promo.append(interval_column)
seaborn.heatmap(mean_promo, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')
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:
interval_column = [] # про 4 8 12 пробелов в начале строк цикла не забываем
# вложенный цикл по двум периодам
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_column.append(promo / counter)
mean_promo.append(interval_column)
seaborn.heatmap(mean_promo, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')
import pandas
import seaborn
data = pandas.read _csv('support_data.csv')
score_column = list(data['score'])
intervals_column = list(data['interval'])
promo_column = list(data['promo'])
# список всех оценок
scores = list(range(11))
promo_chance = []
for score in scores:
promo = 0 #кол-во промокодов
counter = 0 #кол-во оценок
for i in range(len(data)):
if intervals_column[i] == 'До внедрения роботов'and score_column[i] == score:
promo += promo_column[i]
counter +=1
promo_chance.append(promo/counter)
seaborn.barplot(x=scores, y=promo_chance)
import seaborn
data = pandas.read _csv('support_data.csv')
score_column = list(data['score'])
intervals_column = list(data['interval'])
promo_column = list(data['promo'])
# список всех оценок
scores = list(range(11))
promo_chance = []
for score in scores:
promo = 0 #кол-во промокодов
counter = 0 #кол-во оценок
for i in range(len(data)):
if intervals_column[i] == 'До внедрения роботов'and score_column[i] == score:
promo += promo_column[i]
counter +=1
promo_chance.append(promo/counter)
seaborn.barplot(x=scores, y=promo_chance)
у меня пишет с этим кодом ошибку ZeroDivisionError: division by zero
Похожие вопросы
- Пожалуйста, помогите решить задачу на Python. Упражнения 57,58,59,60.
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.
- Пожалуйста, помогите решить задачу на Python. Упражнение 124, 125, 146
- Помогите решить задачу на python! Упражнение 41,45,47.
- Помогите решить задачу на python! Упражнение 49,50,51,52,53.
- Помогите решить задачу на python!
- Помогите решить задачу на Python.
- Помогите решить задачу на Python
- Нужно решить задачу на Python
- Помогите решить задачу в яндекс-практикуме Python
range(len(data))