numpy nanmean () объект 'float' не имеет атрибута 'dtype' error - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужна помощь в обработке вышеуказанной ошибки.Пока мои поиски не дали никакого решения.Код ниже.Работает для некоторых наборов данных, но вызывает ошибку для других.

a = np.array(df_cols)
aver = np.nanmean(a)
    File "…\Continuum\anaconda3\lib\site-packages\numpy\lib\nanfunctions.py", line 916, in nanmean

    avg = _divide_by_count(tot, cnt, out=out)

    File "…\Continuum\anaconda3\lib\site-packages\numpy\lib\nanfunctions.py", line 190, in _divide_by_count

    return a.dtype.type(a / b)

    AttributeError: 'float' object has no attribute 'dtype'

Я использую Spyder 3.3.4 Python 3.7.3 64-bit |Qt 5.9.6 |PyQt5 5.9.2 |Windows 10

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Я решил это, используя Pandas mean () после преобразования моих df_cols в серии.Средство панд рассматривает все записи как объект и заботится о NaN.

0 голосов
/ 29 апреля 2019

df_cols в проблемных случаях, вероятно, object dtype.pandas свободно использует этот тип d, как для строк или содержимого None.

In [117]: np.nanmean(np.array([1.2,np.nan]))      # a float array                                         
Out[117]: 1.2

In [118]: np.nanmean(np.array([1.2,np.nan], object))   # object dtype array                    
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-118-ca706fd2a20e> in <module>
----> 1 np.nanmean(np.array([1.2,np.nan], object))

/usr/local/lib/python3.6/dist-packages/numpy/lib/nanfunctions.py in nanmean(a, axis, dtype, out, keepdims)
    914     cnt = np.sum(~mask, axis=axis, dtype=np.intp, keepdims=keepdims)
    915     tot = np.sum(arr, axis=axis, dtype=dtype, out=out, keepdims=keepdims)
--> 916     avg = _divide_by_count(tot, cnt, out=out)
    917 
    918     isbad = (cnt == 0)

/usr/local/lib/python3.6/dist-packages/numpy/lib/nanfunctions.py in _divide_by_count(a, b, out)
    188         else:
    189             if out is None:
--> 190                 return a.dtype.type(a / b)
    191             else:
    192                 # This is questionable, but currently a numpy scalar can

AttributeError: 'float' object has no attribute 'dtype'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...