Стандартное отклонение при использовании mrjob в Python показывает ошибку "файл не имеет атрибутов для запуска" - PullRequest
0 голосов
/ 03 марта 2019
from mrjob.job import MRJob
import statistics
import sys

class MRFindStdev():

    def mapper(self, _, line):
        for number in line.split(','):
            yield number, float(number)

    def reducer(self, _, line):
        numbers = list(self.mapper(line))
        #total_numbers = len(numbers)
        #mean = sum(numbers)/total_numbers
        #print(numbers)
        yield statistics.stdev(numbers)


if __name__ == '__main__':
  MRFindStdev.run()

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

попробуйте следующее

from statistics import stdev
import statistics

class deviation(MRJob):
    def mapper(self, __, line):
        for num in line.split(','):
            yield None, int(num)


    def reducer(self, __, numbr):
        yield "deviation",statistics.stdev(numbr)

if __name__ == '__main__':
    deviation.run()
0 голосов
/ 04 марта 2019

Я превращу свой комментарий в ответ, чтобы его можно было принять.

Подкласс MRJob при создании MRFindStdev:

class MRFindStdev(MRJob):
    def mapper(self, _, line):
        # code...
...