Numpy日志计算



我正在尝试计算两个时间序列的日志返回。我已经将numpy导入为np,并编写了以下代码:

# Calculate the Log Returns
stocks_data_log = np.log(stocks_data / stocks_data.shift(1))
stocks_data_log.head()

不幸的是,我收到了以下(永无止境(的错误消息。

# Calculate the Log Returns
stocks_data_log = np.log(stocks_data / stocks_data.shift(1))
stocks_data_log.head()
1
# Calculate the Log Returns
2
​
3
stocks_data_log = np.log(stocks_data / stocks_data.shift(1))
4
stocks_data_log.head()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~anaconda3libsite-packagespandascoreopsarray_ops.py in na_arithmetic_op(left, right, op, str_rep)
148     try:
--> 149         result = expressions.evaluate(op, str_rep, left, right)
150     except TypeError:
~anaconda3libsite-packagespandascorecomputationexpressions.py in evaluate(op, op_str, a, b, use_numexpr)
207     if use_numexpr:
--> 208         return _evaluate(op, op_str, a, b)
209     return _evaluate_standard(op, op_str, a, b)
~anaconda3libsite-packagespandascorecomputationexpressions.py in _evaluate_numexpr(op, op_str, a, b)
120     if result is None:
--> 121         result = _evaluate_standard(op, op_str, a, b)
122 
~anaconda3libsite-packagespandascorecomputationexpressions.py in _evaluate_standard(op, op_str, a, b)
69     with np.errstate(all="ignore"):
---> 70         return op(a, b)
71 
TypeError: unsupported operand type(s) for /: 'str' and 'float'
During handling of the above exception, another exception occurred:
TypeError                                 Traceback (most recent call last)
<ipython-input-62-5c8fcb5cdb27> in <module>
1 # Calculate the Log Returns
2 
----> 3 stocks_data_log = np.log(stocks_data / stocks_data.shift(1))
4 stocks_data_log.head()
~anaconda3libsite-packagespandascoreops__init__.py in f(self, other, axis, level, fill_value)
701 
702             left, right = self.align(other, join="outer", level=level, copy=False)
--> 703             new_data = left._combine_frame(right, pass_op, fill_value)
704             return left._construct_result(new_data)
705 
~anaconda3libsite-packagespandascoreframe.py in _combine_frame(self, other, func, fill_value, level)
5298         if ops.should_series_dispatch(self, other, func):
5299             # iterate over columns
-> 5300             new_data = ops.dispatch_to_series(self, other, _arith_op)
5301         else:
5302             with np.errstate(all="ignore"):
~anaconda3libsite-packagespandascoreops__init__.py in dispatch_to_series(left, right, func, str_rep, axis)
414         raise NotImplementedError(right)
415 
--> 416     new_data = expressions.evaluate(column_op, str_rep, left, right)
417     return new_data
418 
~anaconda3libsite-packagespandascorecomputationexpressions.py in evaluate(op, op_str, a, b, use_numexpr)
206     use_numexpr = use_numexpr and _bool_arith_check(op_str, a, b)
207     if use_numexpr:
--> 208         return _evaluate(op, op_str, a, b)
209     return _evaluate_standard(op, op_str, a, b)
210 
~anaconda3libsite-packagespandascorecomputationexpressions.py in _evaluate_numexpr(op, op_str, a, b)
119 
120     if result is None:
--> 121         result = _evaluate_standard(op, op_str, a, b)
122 
123     return result
~anaconda3libsite-packagespandascorecomputationexpressions.py in _evaluate_standard(op, op_str, a, b)
68         _store_test_result(False)
69     with np.errstate(all="ignore"):
---> 70         return op(a, b)
71 
72 
~anaconda3libsite-packagespandascoreops__init__.py in column_op(a, b)
383 
384         def column_op(a, b):
--> 385             return {i: func(a.iloc[:, i], b.iloc[:, i]) for i in range(len(a.columns))}
386 
387     elif isinstance(right, ABCSeries) and axis == "columns":
~anaconda3libsite-packagespandascoreops__init__.py in <dictcomp>(.0)
383 
384         def column_op(a, b):
--> 385             return {i: func(a.iloc[:, i], b.iloc[:, i]) for i in range(len(a.columns))}
386 
387     elif isinstance(right, ABCSeries) and axis == "columns":
~anaconda3libsite-packagespandascoreopscommon.py in new_method(self, other)
62         other = item_from_zerodim(other)
63 
---> 64         return method(self, other)
65 
66     return new_method
~anaconda3libsite-packagespandascoreops__init__.py in wrapper(left, right)
498         lvalues = extract_array(left, extract_numpy=True)
499         rvalues = extract_array(right, extract_numpy=True)
--> 500         result = arithmetic_op(lvalues, rvalues, op, str_rep)
501 
502         return _construct_result(left, result, index=left.index, name=res_name)
~anaconda3libsite-packagespandascoreopsarray_ops.py in arithmetic_op(left, right, op, str_rep)
195     else:
196         with np.errstate(all="ignore"):
--> 197             res_values = na_arithmetic_op(lvalues, rvalues, op, str_rep)
198 
199     return res_values
~anaconda3libsite-packagespandascoreopsarray_ops.py in na_arithmetic_op(left, right, op, str_rep)
149         result = expressions.evaluate(op, str_rep, left, right)
150     except TypeError:
--> 151         result = masked_arith_op(left, right, op)
152 
153     return missing.dispatch_fill_zeros(op, left, right, result)
~anaconda3libsite-packagespandascoreopsarray_ops.py in masked_arith_op(x, y, op)
92         if mask.any():
93             with np.errstate(all="ignore"):
---> 94                 result[mask] = op(xrav[mask], yrav[mask])
95 
96     else:
TypeError: unsupported operand type(s) for /: 'str' and 'str'

有人知道我做错了什么吗?


这里是整个脚本

import quandl
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
from scipy import stats
import matplotlib.pyplot as plt
import matplotlib
# Load ABB Data
ABB = pd.read_csv('C:/Users/Startklar/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Anaconda3 (64-bit)/ABB.csv',sep=";",names=['Datum','ABBN_Preis'])
Roche = pd.read_csv('C:/Users/Startklar/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Anaconda3 (64-bit)/Roche.csv',sep=";", names=['ROG_Datum','ROG_Preis'])
Roche.head(10)
# Concatenate the different dataframes
stocks_data = pd.concat([ABB,Roche], axis=1)
stocks_data.head()
stocks_data['Datum'] = pd.to_datetime(stocks_data['Datum'])
stocks_data.head()
# Kick out the Dates
stocks_data = stocks_data.loc[:,['Datum','ABBN_Preis','ROG_Preis']]
stocks_data.head()
# Compute Log Returns
stocks_data_log = np.log(stocks_data / stocks_data.shift(1))
stocks_data_log.head()

根据日志,您似乎正在尝试对字符串或浮点列执行/操作。目前尚不清楚帖子中的stocks_data是什么。

最新更新