Почему вторая итерация всегда терпит неудачу? - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь создать диктат z_scores, отфильтровывая фрейм данных на основе пяти местоположений.

Независимо от того, какое местоположение является первым в списке, я всегда получаю первую пару ключ: значение, помещенную в диктовку. и независимо от того, какое местоположение является вторым, я всегда получаю эту ошибку:

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2018.2.1\plugins\python\helpers\pydev\pydevd.py", line 1434, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm 2018.2.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/Mark/PycharmProjects/main/main.py", line 104, in <module>
    z_score = z_score(base, df['SalePrice'])
TypeError: 'numpy.float64' object is not callable

Поскольку каждое значение списка работает, когда оно первое, я не понимаю, почему каждая последующая итерация дает сбой.

Мой код:

    def z_score(val, array, bessel=0):
        mean = array.mean()
        st_dev = std(array, ddof=bessel)
        distance = val - mean
        z = distance / st_dev

        return z


    neighborhoods = ['NAmes', 'CollgCr', 'OldTown', 'Edwards', 'Somerst']

    base = 200000
    z_scores = {}
    for neighborhood in neighborhoods:
        df = houses.loc[houses['Neighborhood'] == neighborhood]
        z_score = z_score(base, df['SalePrice'])
        z_scores[neighborhood] = z_score


    sorted_z_scores = sorted(z_scores.items(), key=lambda x: x[1], reverse=True)
    print(sorted_z_scores)

1 Ответ

0 голосов
/ 13 марта 2020

В python интерпретатор придает более высокий приоритет именам переменных в локальной области, чем именам методов, поэтому, когда вы используете z_score в качестве имени переменной, он маскирует доступ к имени метода z_score, если вы изменяете имя вашей z_score переменной, ваш код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...