Привет! Меня зовут Алексей, и я хочу рассказать тебе о своем опыте работы с кодом для сборки маппера и редьюсера на примере данного кода.Первым делом, я понял, что для начала работы мне понадобятся модули `json` и `functools`. В `json` я использовал `load` для загрузки данных из файла, а в `functools` ⸺ `reduce`, чтобы проводить операции вычисления суммы и разницы.Процесс начался с определения начальных значений переменных `n`, `mean` и `M2`. Затем я начал обходить указанную директорию и находить файлы с расширением `.json`.
Если файл был найден, я открывал его и загружал данные в переменную `info` с помощью метода `load`. Затем я преобразовывал рейтинг фильма (`movieIMDbRating`) во float и добавлял его к общему количеству фильмов `n`.
Далее я вычислял разницу между текущим рейтингом и средним значением `mean`, и добавлял это значение к общей сумме разниц `M2`. После этого я обновлял значение среднего рейтинга `mean` и продолжал считать накопленные значения `M2`.В конце, я выводил значение среднего рейтинга `mean` и стандартное отклонение `M2` с помощью формулы `(M2 / n) ** (1/2)`.Теперь, чтобы собрать маппер и редьюсер на основе этого кода, можно использовать следующий подход⁚
**Mapper**⁚
python
def mapper(path)⁚
if path.is_file and path.suffix ‘.json’⁚
with open(path, ‘r’) as f⁚
info json.load(f)
score float(info[‘movieIMDbRating’])
return score
return None
В маппере мы проверяем, является ли файл `.json` и возвращаем рейтинг фильма как результат. Если файл не является `.json`, то возвращаем `None`.**Reducer**⁚
python
def reducer(scores)⁚
n 0
mean 0.0
M2 0
for score in scores⁚
if score is not None⁚
n 1
delta score ⸺ mean
mean delta / n
M2 delta * (score ⸺ mean)
result {
‘mean’⁚ mean,
‘std_dev’⁚ (M2 / n) ** (1/2)
}
return result
В редьюсере мы инициализируем начальные значения `n`, `mean` и `M2`, а затем проходимся по переданным рейтингам и вычисляем среднее значение и стандартное отклонение аналогично исходному коду.
После вычислений, результат возвращается в виде словаря, содержащего среднее значение `mean` и стандартное отклонение `std_dev`.
Вот и все! Теперь мы можем использовать полученные маппер и редьюсер для анализа данных и получения среднего значения и стандартного отклонения рейтингов фильмов.