python - date2num 是否仍在更新的 Mplfinance 解释器中?
问题描述
我一直在将 JSON 数据转换为 pandas 表,但我仍然需要将日期时间字符串转换为浮点数,以便 mplfinance 解释器能够读取和绘制数据。但是在尝试执行代码时,解释器中的一个包存在问题。
有谁知道为什么 mpl_finance 的更新版本没有这个 date2num 包(据我所知)?此代码用于以前版本的 mpl_finance,但由于某种原因,我无法使用“date2num”包。
有什么替代方法可以使这项工作?
import mplfinance as mpf
import datetime
from mplfinance import date2num
#Convert date string to date float
float_date = date2num(datetime.datetime.strptime(df['date'], '%Y%m%d%H%M%S%f'))
print(aapl_df)
mpf.plot(aapl_df)
这是我到目前为止所拥有的:
import requests #for http request to Marketstack.com
import pandas as pd
params = {
'access_key': '*********************'
}
#Sorts the data into a table
api_result = requests.get('HTTP API LINK/REQUEST', params)
api_response = api_result.json()
df = pd.DataFrame(api_response['data'])
print(df)
aapl_df = df[['date', 'high', 'open', 'low', 'close', 'adj_close']]
print(aapl_df)
import mplfinance as mpf
import datetime
#Convert date string to date float
float_date = date2num(datetime.datetime.strptime(df['date'], '%Y-%m-%dT%H:%M:%S+%f'))
print(aapl_df)
mpf.plot(aapl_df)
所以我可以打印数据,但是错误的日期格式是造成错误的原因。
解决方案
date2num()
不是也从来不是 mplfinance(也不是 mpl_finance)的一部分。date2num
是 matplotlib 的一部分。- 旧的mpl_finance 要求您将日期转换为 matplotlib 日期的数字表示。因此,在过去,您需要在约会时调用 date2num。
- 新的mplfinance 不需要这种转换。相反,它期望数据以Pandas DataFrame 和 Pandas DatetimeIndex的形式出现。
- 如果您的数据是 JSON,我建议您致电
pandas.read_json()
创建数据框。
我强烈建议您花 10 或 15 分钟仔细阅读新的 mplfinance 基本使用文档:
那里的文档的第一部分调用pandas.read_csv()
了您可以替换的调用,pandas.read_json()
并且很可能其他所有内容都可以正常工作。
如果您在此处发布您的数据以及您的所有代码(至少从读取数据的点到调用点mpf.plot()
),那么我可能可以帮助您使其工作。
- 尝试以下更改,从您分配的行开始
aapl_df
:
###aapl_df = df[['date', 'high', 'open', 'low', 'close', 'adj_close']]
aapl_df = df[['high', 'open', 'low', 'close']]
#Convert date string to datetime index:
aapl_df.index = pd.DatetimeIndex(df['date'])
print(aapl_df)
import mplfinance as mpf
###import datetime
####Convert date string to date float
###float_date = date2num(datetime.datetime.strptime(df['date'], '%Y-%m-%dT%H:%M:%S+%f'))
print(aapl_df)
mpf.plot(aapl_df)
我部分猜测这会起作用;如果能看到输出就更好了api_response = api_result.json()
。尽管如此,试试这个,让我知道它是如何工作的。
如果aapl_df.index = pd.DatetimeIndex(df['date'])
引发异常,请尝试:
aapl_df.index = pd.DatetimeIndex(df['date'].values)
推荐阅读
- python - 使用 bqplot 将颜色图应用于线(或线段)
- sql - 关于 B 树索引中不同值的最大数量的小问题
- swift - Thread 1: Fatal error: Index out of range, return array.count + 1
- sql-server - 在 ColdFusion 2016 中将太多参数传递给存储过程时遇到问题
- cmake - 无法在 Debug / X64 的 Visual Studio 中调试 googletests
- python - pandas 中的“复制”参数是否按预期工作?
- python - 尝试连接到 API 并打开 MySQL 端口以便它可以工作,但终端只是挂起
- javascript - 使用javascript从表中删除列
- java - 如何在 Quartz Scheduler 中使用 JDBC 作业存储
- reactjs - 使用 react-window 防止 DOM 元素在虚拟化树组件中重新渲染