我正在尝试计算两个时间序列的日志返回。我已经将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是什么。