Как сделать коробку, где каждая строка в моем объекте dataframe является полем на графике?Pandas DataFrame Matplotlib BoxPlot Boxes
У меня есть данные о запасах, которые я хочу построить с графиком. Мои данные получены из финансов yahoo и включают в себя данные Open, High, Low, Close, Adjusted Close и Volume за каждый торговый день. Я хочу построить участок коробки, где каждый ящик составляет 1 день действия цены OHLC.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.io.data import DataReader
# get daily stock price data from yahoo finance for S&P500
SP = DataReader("^GSPC", "yahoo")
SP.head()
Open High Low Close Volume Adj Close
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99 3991400000 1132.99
2010-01-05 1132.66 1136.63 1129.66 1136.52 2491020000 1136.52
2010-01-06 1135.71 1139.19 1133.95 1137.14 4972660000 1137.14
2010-01-07 1136.27 1142.46 1131.32 1141.69 5270680000 1141.69
2010-01-08 1140.52 1145.39 1136.22 1144.98 4389590000 1144.98
plt.figure()
bp = SP.boxplot()
Но когда я сюжет этот кадр данных как boxplot, я получаю только одну коробку с Open, High, Low и Close значения всего столбца тома.
Кроме того, я стараюсь ресемплированием моих Скорректированных Закрыть ежедневно цену данных, чтобы получить еженедельную OHLC:
close = SP['Adj Close']
wk = close.resample('W', how='ohlc')
wk.head()
open high low close
Date
2010-01-10 1132.99 1144.98 1132.99 1144.98
2010-01-17 1146.98 1148.46 1136.03 1136.03
2010-01-24 1150.23 1150.23 1091.76 1091.76
2010-01-31 1096.78 1097.50 1073.87 1073.87
2010-02-07 1089.19 1103.32 1063.11 1066.19
Это дает Box Участок с 4 коробки. Каждый ящик - это диапазон каждого столбца, а не строка. Так, например, первая коробка, «открытая», показывает Open, Close, High и Low всей «открытой» колонки.
Но то, что я на самом деле хочу, - это 1 поле для каждой «даты» (индекс или строка моего DataFrame). Таким образом, первая коробка покажет OHLC первой строки, «2010-01-10». Второй ящик будет второй строкой ('2010-01-17').
То, что я действительно хочу, это каждая строка в моих первоначальных ежедневных данных (SP DataFrame) - это собственный OHLC Box. По сути, мне нужны ежедневные подсвечники, созданные как boxplot().
Open High Low Close
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99
Как это сделать, используя Boxplot() Pandas DataFrame и Matplotlib boxplot()? Мне просто нужен базовый график, где каждая строка из DataFrame является полем OHLC на графике. Ничего необычного в этот момент. Благодаря!
Я думаю, что вы хотите что-то вроде этого: https://github.com/pydata/pandas/issues/783 Это еще не реализован, но могут быть некоторые предложения там, которые помогут вам. – TomAugspurger
@TomAugspurger также это: https://github.com/matplotlib/matplotlib/pull/2643 –
О, geez, есть 'matplotlib.finance.candlestick' http://matplotlib.org/examples/pylab_examples/finance_demo.html?highlight = candlestick –