Python

Помогите, пожалуйста, с задачей Python , Яндекс практикум.

Средние оценки
Постройте хитмэп с такими же настройками, но уже по настоящим значениям — средним пользовательским оценкам в каждом из сегментов до и после внедрения роботов.
Вычислить средние показатели можно несколькими способами:
Создать по циклу для каждой «ячейки» хитмэпа и в каждом цикле найти соответствующее среднее;
Написать цикл по всем сегментам и во вложенном цикле вычислить значения для обоих периодов — «до» и «после»;
Сделать «тройной» цикл: внешний, вложенный и внутри ещё один. Не переживайте, если пока не можете такой написать — позже мы покажем, как это сделать.
Средние оценки сохраняйте в mean_scores методом append(). Обратите внимание, что каждую пару значений «до» и «после» для сегментов перед добавлением в mean_scores следует также хранить в списке, чтобы в конце получился список списков, как в примере.

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'])# ваш код здесь
score_column = list(data['score'])# ваш код здесь

# средние оценки
mean_scores = []

for segment in segments_old:
score_before=0
score_after=0
counter_before=0
counter_after=0 # допишите код

for index in range(len(data)):
if segments_column[index] == segment:
if intervals_column[index] == 'До внедрения роботов':
score_before += score_column[index]
counter_before = +1
else:
score_after += score_column[index]
counter_after += 1
segment_scores = [score_before/ counter_before, score_after/counter_after]
mean_scores.append(segment_scores)


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


Не могу понять, что не так. Может кто-то сталкивался, кто уже проходил.
Юра Шавров
Юра Шавров
108
Тебе это надо или мне? Сам
Руслан Королёв
Руслан Королёв
24 151
Лучший ответ
Юра Шавров Я не прошу решить. Прошу подсказать. Где я, возможно, ошибся (отступы не в счет).
Юра Шавров Всё, нашел. Блин, один маленький косяк и весь код насмарку.... Ерунда была
Виталий Яньес не понимаю как построить логику мышления.
подскажи как сделал сижу второй день ломаю голову
Юрий Вербовский 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'])# ваш код здесь
score_column = list(data['score'])# ваш код здесь
# средние оценки
mean_scores = []
Юрий Вербовский # ваш код здесь
for segment in segments_old:
score_before = 0
score_after = 0
sum_score_before = 0
sum_score_after = 0

for index in range(len(data)):
if segments_column[index] == segment:
if intervals_column[index] == 'До внедрения роботов':
sum_score_before += score_column[index]
score_before += 1
elif intervals_column[index] == 'После внедрения роботов':
sum_score_after += score_column[index]
score_after += 1
segment_scores = [sum_score_before/score_before, sum_score_after/score_after]
mean_scores.append(segment_scores)

print(mean_scores)

seaborn.heatmap(mean_scores, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')
Юрий Вербовский Интервалы не отобразились только.
Баха Батталов Оцените соотношение значений в датасете по сегментам пользователей. Для этого посчитайте число строк, относящихся к каждому сегменту — 'Segment 0', 'Segment 1', 'Segment 2'. Выведите полученные значения на разных строках по порядку: нулевой, первый, второй.
import pandas
data = pandas.read_csv('support_data.csv')
segment = list(data['segment'])
zero_segment = 0
first_segment = 0
second_segment = 0
for index in segment:
if index == 'Segment 0':
zero_segment = zero_segment +1
if index == 'Segment 1':
first_segment = first_segment +1
if index == 'Segment 2':
second_segment = second_segment +1
print(zero_segment)
print(first_segment)
print(second_segment)

Пишет - неверные переменные. Не могу понять что не так
Баха Батталов Ой, не та задача!

import pandas
data = pandas.read_csv('support_data.csv')
segment = list(data['segment'])
robocats = list(data['robocats'])
zero_segment = 0
first_segment = 0
second_segment = 0
counter = 0
for value in range(len(data)):
if segment[value] == 'Segment 0':
zero_segment += robocats[value]
counter += 1
if segment[value] == 'Segment 1':
first_segment += robocats[value]
counter += 1
if segment[value] == 'Segment 2':
second_segment += robocats[value]
counter += 1
print(zero_segment / counter)
print(first_segment / counter)
print(second_segment / counter)
Баха Батталов Не могу отредактировать напишу заново.
Чтобы найти средние показатели, в каждом сегменте разделите количество робокотов на количество обращений. Выведите полученные значения на экран на отдельных строках в обычном порядке: нулевой, первый, второй.
Удобнее всего добавить в подсчёт робокотов для каждого сегмента из предыдущего задания подсчёт обращений, а затем вывести на экран результат деления одного на другое:
cats = 0
counter = 0
for index in range(len(data)):
if segment[index] == 'Segment 0':
cats += robocats[index]
counter += 1
print(cats / counter)

Пояснения к задаче. Извиняюсь что выслала сперва не то, просто просматривала, что возможно упустила что то ранее и на автомате скопировала
Баха Батталов Нужно решение второй задачи
Виталий Яньес Не понимаю, как построить логику мышления для решения данной задачи
еще учишься?
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'])
score_column = list(data['score'])

mean_scores = []

for segment in segments_old:
score_before = 0
counter_before = 0
score_after = 0
counter_after = 0
for index in range(len(data)):
if segments_column[index] == segment:
if intervals_column[index] == 'До внедрения роботов':
score_before += score_column[index]
counter_before += 1
else:
score_after += score_column[index]
counter_after += 1
segment_scores = [score_before / counter_before, score_after / counter_after]
mean_scores.append(segment_scores)
seaborn.heatmap(mean_scores, xticklabels=intervals, yticklabels=segments_new, annot=True, cmap='RdYlGn')
так в чем ошибка была?
import pandas
import seaborn

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

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

intervals_column = list(data['interval'])
segments_column = list(data['segment'])
score_column = list(data['score'])
#print(sum(score_column[:300]))
# средние оценки
mean_scores = []
counter_before = 0
counter_after = 0
score_before = 0
score_after = 0
counter_before_list = []
counter_after_list = []

for before in intervals_column:
if before == intervals[0]:
counter_before_list.append(before)
counter_before = len(counter_before_list)
score_before = sum(counter_before_list)
if before == intervals[1]:
counter_after_list.append(before)
counter_after = len(counter_after_list)
score_after
print(counter_before)
print(counter_after)