Python 显示带有烛台的csv\u ohlc

Python 显示带有烛台的csv\u ohlc,python,pandas,Python,Pandas,我试着和熊猫一起迈出第一步 经过几个成功的步骤后,我坚持执行以下任务:用OHLC条显示数据 我从谷歌金融下载了苹果股票的数据,并将其存储到*.csv文件中 经过大量搜索,我编写了以下代码: import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime as dt from matplotlib.

我试着和熊猫一起迈出第一步

经过几个成功的步骤后,我坚持执行以下任务:用OHLC条显示数据

我从谷歌金融下载了苹果股票的数据,并将其存储到*.csv文件中

经过大量搜索,我编写了以下代码:

  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.dates as mdates
  import datetime as dt
  from matplotlib.finance import candlestick_ohlc

  #read stored data

  #First two lines of csv:
  #Date,Open,High,Low,Close
  #2010-01-04,30.49,30.64,30.34,30.57

  data = pd.read_csv("AAPL.csv")

  #graph settings
  fig, ax = plt.subplots()
  ax.xaxis_date()
  ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
  plt.xlabel("Date")
  plt.ylabel("Price")
  plt.title("AAPL")

  #convert date to float format 
  data['Date2'] = data['Date'].map(lambda d: mdates.date2num(dt.datetime.strptime(d, "%Y-%m-%d")))

  candlestick_ohlc(ax, (data['Date2'], data['Open'], data['High'], data['Low'], data['Close']))
  plt.show()
start = dt.datetime(2015, 7, 1)
data = pd.io.data.DataReader('AAPL', 'yahoo', start)
data = data.reset_index()
data['Date2'] = data['Date'].apply(lambda d: mdates.date2num(d.to_pydatetime()))
tuples = [tuple(x) for x in data[['Date2','Open','High','Low','Close']].values]

fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
plt.xticks(rotation=45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("AAPL")
candlestick_ohlc(ax, tuples, width=.6, colorup='g', alpha =.4);
但它显示的是空图。 这个代码有什么问题


谢谢。

您需要将最后一行更改为每天组合元组。以下代码:

  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.dates as mdates
  import datetime as dt
  from matplotlib.finance import candlestick_ohlc

  #read stored data

  #First two lines of csv:
  #Date,Open,High,Low,Close
  #2010-01-04,30.49,30.64,30.34,30.57

  data = pd.read_csv("AAPL.csv")

  #graph settings
  fig, ax = plt.subplots()
  ax.xaxis_date()
  ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
  plt.xlabel("Date")
  plt.ylabel("Price")
  plt.title("AAPL")

  #convert date to float format 
  data['Date2'] = data['Date'].map(lambda d: mdates.date2num(dt.datetime.strptime(d, "%Y-%m-%d")))

  candlestick_ohlc(ax, (data['Date2'], data['Open'], data['High'], data['Low'], data['Close']))
  plt.show()
start = dt.datetime(2015, 7, 1)
data = pd.io.data.DataReader('AAPL', 'yahoo', start)
data = data.reset_index()
data['Date2'] = data['Date'].apply(lambda d: mdates.date2num(d.to_pydatetime()))
tuples = [tuple(x) for x in data[['Date2','Open','High','Low','Close']].values]

fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
plt.xticks(rotation=45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("AAPL")
candlestick_ohlc(ax, tuples, width=.6, colorup='g', alpha =.4);
生成以下绘图:


您可以进一步修改。

因为您有一个数据帧,所以应该能够只使用
data.plot()
。试试看教程。是的,我看过了。随机序列的样本效果很好。我用横条和日期时间索引敲打,成功了。但我的名声不够,以防万一。在R中,这需要两行:一行下载系列,另一行绘制。Python似乎对烛台特别不友好。似乎不需要转换为元组。下面的代码工作正常:candlestick_ohlc(ax,data['Date2','Open','High','Low','Close'].values)或只是candlestick_ohlc(ax,data.values)