首页 > 解决方案 > 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)

所以我可以打印数据,但是错误的日期格式是造成错误的原因。

标签: pythonpandasdatetimemplfinance

解决方案


  • 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)

推荐阅读