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','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)
,

这是我目前所拥有的:

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','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)

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...