python - 使用 candlestick_ohlc 显示 csv

标签 python pandas

我尝试用 Pandas 做第一步。

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

我从 Google Finance 下载了 Apple 股票的数据并将其存储到 *.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);

产生下面的图:

Follow link to see the plot!

您可以进一步修改。

关于python - 使用 candlestick_ohlc 显示 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33066714/

相关文章:

c++ - 基准测试(python 与使用 BLAS 的 c++)和(numpy)

python - style.format() 和小数列的问题

Python-替换 pandas 数据框中的负无穷大值

python - 如何在 python-docx 中将页面大小更改为 A4

python - 为什么我会收到此内存错误?

python - Pandas 'eval' 与 NaN

python - 如何使用每个偶数列作为相应的奇数列并创建一个新的数据框 - Python

python - 在 Pandas 中传播条件列值

python - Pandas 将列从字符串转换为 float

python - 检查密码