7

パンダを使用してヤフーからダウンロードしたデータから、毎日のローソク足プロットを作成したいと思います。このコンテキストでローソク足の matplotlib 関数を使用する方法がわかりません。コードは次のとおりです。

#The following example, downloads stock data from Yahoo and plots it.
from pandas.io.data import get_data_yahoo
import matplotlib.pyplot as plt

from matplotlib.pyplot import subplots, draw
from matplotlib.finance import candlestick

symbol = "GOOG"

data = get_data_yahoo(symbol, start = '2013-9-01', end = '2013-10-23')[['Open','Close','High','Low','Volume']]

ax = subplots()

candlestick(ax,data['Open'],data['High'],data['Low'],data['Close'])

ありがとう

アンドリュー。

4

5 に答える 5

8

ボケの使用:

import io
from math import pi
import pandas as pd
from bokeh.plotting import figure, show, output_file

df = pd.read_csv(
    io.BytesIO(
        b'''Date,Open,High,Low,Close
2016-06-01,69.6,70.2,69.44,69.76
2016-06-02,70.0,70.15,69.45,69.54
2016-06-03,69.51,70.48,68.62,68.91
2016-06-04,69.51,70.48,68.62,68.91
2016-06-05,69.51,70.48,68.62,68.91
2016-06-06,70.49,71.44,69.84,70.11
2016-06-07,70.11,70.11,68.0,68.35'''
    )
)

df["Date"] = pd.to_datetime(df["Date"])

inc = df.Close > df.Open
dec = df.Open > df.Close
w = 12*60*60*1000

TOOLS = "pan,wheel_zoom,box_zoom,reset,save"

p = figure(x_axis_type="datetime", tools=TOOLS, plot_width=1000, title
= "Candlestick")
p.xaxis.major_label_orientation = pi/4
p.grid.grid_line_alpha=0.3

p.segment(df.Date, df.High, df.Date, df.Low, color="black")
p.vbar(df.Date[inc], w, df.Open[inc], df.Close[inc], fill_color="#D5E1DD", line_color="black")
p.vbar(df.Date[dec], w, df.Open[dec], df.Close[dec], fill_color="#F2583E", line_color="black")

output_file("candlestick.html", title="candlestick.py example")

show(p)

Pandas DataFrame からのローソク足プロット

ここから分岐した上記のコード: http://docs.bokeh.org/en/latest/docs/gallery/candlestick.html

于 2017-02-23T22:10:26.913 に答える
5

@randall-goodwin の回答にコメントするという評判はありませんが、pandas 0.16.2 行の場合:

# convert the datetime64 column in the dataframe to 'float days'
data.Date = mdates.date2num(data.Date)

でなければなりません:

data.Date = mdates.date2num(data.Date.dt.to_pydatetime())

matplotlib は numpy の datetime64 dtype をサポートしていないため

于 2015-06-15T11:48:34.797 に答える
3

私はすばらしいペーストビン エントリを偶然見つけました: http://pastebin.com/ne7Fjdiq はこれをうまく行っています。私も呼び出し構文を正しくするのに苦労していました。通常は、関数が正しく機能するように簡単な方法でデータを変換することを中心に展開します。私の問題は日時にありました。私のフォーマットデータに何かがあるに違いありません。Date シリーズを range(maxdata) に置き換えると、うまくいきました。

data = pandas.read_csv('data.csv', parse_dates={'Timestamp': ['Date', 'Time']}, index_col='Timestamp')
ticks = data.ix[:, ['Price', 'Volume']]
bars = ticks.Price.resample('1min', how='ohlc')
barsa = bars.fillna(method='ffill')
fig = plt.figure()
fig.subplots_adjust(bottom=0.1)
ax = fig.add_subplot(111)
plt.title("Candlestick chart")
volume = ticks.Volume.resample('1min', how='sum')
value = ticks.prod(axis=1).resample('1min', how='sum')
vwap = value / volume
Date = range(len(barsa))
#Date = matplotlib.dates.date2num(barsa.index)#
DOCHLV = zip(Date , barsa.open, barsa.close, barsa.high, barsa.low, volume)
matplotlib.finance.candlestick(ax, DOCHLV, width=0.6, colorup='g', colordown='r', alpha=1.0)
plt.show()
于 2014-07-30T18:46:09.097 に答える
2

解決策は次のとおりです。

from pandas.io.data import get_data_yahoo
import matplotlib.pyplot as plt
from matplotlib import dates as mdates
from matplotlib import ticker as mticker
from matplotlib.finance import candlestick_ohlc
import datetime as dt
symbol = "GOOG"

data = get_data_yahoo(symbol, start = '2014-9-01', end = '2015-10-23')
data.reset_index(inplace=True)
data['Date']=mdates.date2num(data['Date'].astype(dt.date))
fig = plt.figure()
ax1 = plt.subplot2grid((1,1),(0,0))
plt.ylabel('Price')
ax1.xaxis.set_major_locator(mticker.MaxNLocator(6))
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

candlestick_ohlc(ax1,data.values,width=0.2)
于 2016-07-26T04:24:21.997 に答える
1

get_data_yahoo のような DataReader サービスの 1 つから返された pandas データフレームでろうそく足を使用する方法を私も探していたときに、この質問を見つけました。私は最終的にそれを理解しました。鍵の 1 つは、Wes McKinney と RJRyV が回答したこの別の質問でした。そのリンクは次のとおりです。

パンダはデータフレームをタプルの配列に変換します

重要なのは、candlestick.py 関数定義を読み取って、データの受信方法を決定することでした。最初に日付を変換する必要があり、次にデータフレーム全体をタプルの配列に変換する必要がありました。

これが私のために働いた最終的なコードです。株価サービスの 1 つから返された pandas データフレームで直接動作する他のローソク足チャートがどこかにあるかもしれません。それは非常にいいだろう。

# Imports
from pandas.io.data import get_data_yahoo
from datetime import datetime, timedelta
import matplotlib.dates as mdates
from matplotlib.pyplot import subplots, draw
from matplotlib.finance import candlestick
import matplotlib.pyplot as plt

# get the data on a symbol (gets last 1 year)
symbol = "TSLA"
data = get_data_yahoo(symbol, datetime.now() - timedelta(days=365))

# drop the date index from the dateframe
data.reset_index(inplace = True)

# convert the datetime64 column in the dataframe to 'float days'
data.Date = mdates.date2num(data.Date)

# make an array of tuples in the specific order needed
dataAr = [tuple(x) for x in data[['Date', 'Open', 'Close', 'High', 'Low']].to_records(index=False)]

# construct and show the plot
fig = plt.figure()
ax1 = plt.subplot(1,1,1)
candlestick(ax1, dataAr)
plt.show()
于 2014-06-01T04:15:18.437 に答える