python - 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)
~\anaconda3\lib\site-packages\pandas\core\ops\array_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:
~\anaconda3\lib\site-packages\pandas\core\computation\expressions.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)
~\anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_numexpr(op, op_str, a, b)
120 if result is None:
--> 121 result = _evaluate_standard(op, op_str, a, b)
122
~\anaconda3\lib\site-packages\pandas\core\computation\expressions.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()
~\anaconda3\lib\site-packages\pandas\core\ops\__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
~\anaconda3\lib\site-packages\pandas\core\frame.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"):
~\anaconda3\lib\site-packages\pandas\core\ops\__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
~\anaconda3\lib\site-packages\pandas\core\computation\expressions.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
~\anaconda3\lib\site-packages\pandas\core\computation\expressions.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
~\anaconda3\lib\site-packages\pandas\core\computation\expressions.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
~\anaconda3\lib\site-packages\pandas\core\ops\__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":
~\anaconda3\lib\site-packages\pandas\core\ops\__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":
~\anaconda3\lib\site-packages\pandas\core\ops\common.py in new_method(self, other)
62 other = item_from_zerodim(other)
63
---> 64 return method(self, other)
65
66 return new_method
~\anaconda3\lib\site-packages\pandas\core\ops\__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)
~\anaconda3\lib\site-packages\pandas\core\ops\array_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
~\anaconda3\lib\site-packages\pandas\core\ops\array_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)
~\anaconda3\lib\site-packages\pandas\core\ops\array_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 是什么。
推荐阅读
- python - 如何使用 tf.data.experimental.make_csv_dataset 生成(输入、目标、样本权重)元组
- python - 向下滚动网站时,Python 抓取会自动加载后续的新闻页面
- python - 有什么方法可以在特定时间停止 GKE 集群并使用云功能在特定时间重新启动
- apache-kafka - ClickHouse JSON解析异常:无法解析输入:预期','之前
- c++ - 表达式树的前序遍历
- javascript - 如何在 div 淡出后删除它(Vanilla JS)
- javascript - 滚动反应时不显示阴影
- python - 检查字符串是否为大量字符串的子字符串的可扩展解决方案
- fb-hydra - 禁用 hydra 的文件输出
- powerbi - 上周和上个月的同一天 PowerBI