Данные массива от dtype ('float64') до dtype (' - PullRequest
0 голосов
/ 12 февраля 2019

Почему я получаю эту ошибку:

Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'

При запуске этого блока кода:

quantity_list = df2['Qauntity'].tolist()
date_list = df2['Date'].tolist()

interpol = interpolate.interp1d(y = quantity_list, 
                                x = date_list)

ynew = interpol(quantity_list)
plt.plot(date_list, ynew)

Строка, которая вызвала ошибку:

ynew = interpol(quantity_list)

Может ли это быть связано с уменьшением памяти в голове всей записной книжки?

Часть памяти.сокращение кода для переменных в приведенном выше коде :

#memory reducing
dtypes = {
    'Date': 'object',
    ...
    'Quantity': 'float32'
}

def reduce_mem_usage(df, verbose = True):
    ...
    return df


numerics = ['int8', 'int16', 'int32', 'int64', 'float16', 'float32', 'float64']
numerical_columns = [c for c, v in dtypes.items() if v in numerics]
categorical_columns = [c for c, v in dtypes.items() if v not in numerics]

Это dtypes Я имею в виду для набора данных при загрузке файла в Python.

Важно:

Также я изменяю 'Date' с 'object' на 'datetime64[ns]' с df1['Date'] = pd.to_datetime(df1['Date'])

  • np.array(quantity_list) производим float64 dtype
  • np.array(date_list) производим <U10 dtype

Если я выполняю такое же преобразование даты из тела кода, я получаю '<M8[ns]' dtype.

Что это за магия?

Функция интерполяции Pandas работает нормально, но интерполяция Pandas и интерполяция Scipy дают другой результат (https://github.com/pandas-dev/pandas/issues/8796),, и мне нужен результат Scipy.

...