从 NG.L CSV 文件读取数据 - 日本烛台图

问题描述

我最近不得不从 Yahoo Finance 网站实际下载一个 CSV 文件(NG.L 股票),因为我无法再直接从 Yahoo 提取数据,而我的原始财务 Python 脚本没有问题。

>

我的程序几乎可以运行并显示我的 NG.L 股票图表,但图表底部的日期完全错误。他们应该只显示我的 NG.L CSV 文件中从 02/06/202109/07/2021 的日期。

相反,我的图表显示日期是 23/01/2021 到 19/11/2021,这很奇怪。是否有快速代码修复,因为我只想显示日期并从我的 CSV 文件提取日期。

NG.L Python 代码

import matplotlib.pyplot as plt
from mplfinance.original_flavor import candlestick_ohlc
import pandas as pd
import matplotlib.dates as mpl_dates
import datetime as dt

plt.style.use('ggplot')

# Extracting Data for plotting
data = pd.read_csv('NG.L.csv')
ohlc = data.loc[:,['Date','Open','High','Low','Close',]]
ohlc['Date'] = pd.to_datetime(ohlc['Date'])
ohlc['Date'] = ohlc['Date'].apply(mpl_dates.date2num)
ohlc = ohlc.astype(float)

# Creating subplots
fig,ax = plt.subplots()
candlestick_ohlc(ax,ohlc.values,width=0.8,colorup='green',colordown='red',alpha=0.8)

# Setting labels & titles
ax.set_xlabel('TIMELINE of NG.L')
ax.set_ylabel('PRICE IN GBP POUND STERLING')
fig.suptitle('NATIONAL GRID PLC - 2 JUNE 2021 - 9 JULY 2021')

# Formatting Date
date_format = mpl_dates.DateFormatter('%d-%m-%Y')
ax.xaxis.set_major_formatter(date_format)
fig.autofmt_xdate()
fig.tight_layout()
plt.show()

NG.L 股票图表:

enter image description here

NG.L CSV 文件

enter image description here

解决方法

我下载了csv文件,将上面的代码复制到我机器上的.py文件中,然后简单的运行了一下,得到了下面的结果。对我来说看起来不错。你安装了什么版本的mplfinance?

enter image description here

还要注意,如果您直接查看 csv 文件,日期格式是什么??

dino@DINO:~/code/mplfinance/examples/scratch_pad$ head NG.L.csv
Date,Open,High,Low,Close,Adj Close,Volume
2021-06-01,938.799988,957.755981,950.099976,918.291504,5162873
2021-06-02,950.500000,965.599976,948.500000,960.599976,928.439941,9110791
2021-06-03,937.099976,909.099976,921.299988,9609182
2021-06-04,921.700012,927.799988,912.700012,914.299988,7607690
2021-06-07,918.900024,919.229980,913.000000,916.000000,5240943
2021-06-08,919.099976,926.200012,914.239990,914.700012,12657157
2021-06-09,913.599976,916.299988,909.799988,6334877
2021-06-10,918.099976,925.000000,911.900024,914.000000,7530470
2021-06-11,915.799988,921.809998,914.400024,918.599976,8630006

您可能需要考虑使用 mpfinance API。你可以用更少的代码完成同样的事情:

import mplfinance as mpf
import pandas as pd

# Extracting Data for plotting
data = pd.read_csv('NG.L.csv',index_col=0,parse_dates=True)

mpf.plot(data,type='candle',style='yahoo',ylabel='PRICE IN GBP POUND STERLING',title='NATIONAL GRID PLC - 2 JUNE 2021 - 9 JULY 2021',datetime_format='%d-%m-%Y')

完全披露:我是 mplfinance 库的维护者。目前,旧 API 仍可通过 from mplfinance.original_flavor 导入使用,对于那些习惯了它的人,但我仍然鼓励人们使用旨在更简单的新 API。

相关问答

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