Mostrar csv con candlestick_ohlc

Intento hacer los primeros pasos con los pandas.

Después de algunos pasos exitosos, me quedé con la siguiente tarea: mostrar datos con barras OHLC.

Descargué datos para el stock de Apple de Google Finance y los almacené en un archivo * .csv.

Después de mucha búsqueda escribí el siguiente código:

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

Pero muestra un gráfico vacío. ¿Qué está mal con este código?

Gracias.

Necesitas cambiar la última línea para combinar las tuplas diariamente. El siguiente código:

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

Produce la siguiente ttwig:

Sigue el enlace para ver la trama!

con lo que puedes seguir jugando.