【问题标题】:ValueError: not enough values to unpack (expected 5, got 4)ValueError:没有足够的值来解包(预期 5,得到 4)
【发布时间】:2020-05-09 10:50:36
【问题描述】:
import pandas as pd
import pandas_datareader.data as web
from matplotlib import style
import matplotlib.pyplot as plt
!pip install https://github.com/matplotlib/mpl_finance/archive/master.zip
from mpl_finance import candlestick_ohlc
import matplotlib.dates as mdates
import datetime as dt

style.use('ggplot')
start = dt.datetime(1996,1,1)
end = dt.datetime(2020,5,8)
df = web.DataReader('TATAMOTORS.NS', 'yahoo', start, end)
df.head()

df_ohlc = df[['Open', 'Close', 'High', 'Low']]
df_ohlc.index = df_ohlc.index.map(mdates.date2num)
df_volume = df['Volume']

ax1 = plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1)
ax2 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1, sharex=ax1)
ax1.xaxis_date()
candlestick_ohlc(ax1, df_ohlc.values, width=2, colorup='g')
ax2.fill_between(df_volume.index.map(mdates.date2num), df_volume.values, 0)
plt.show()

运行上述代码后,我收到以下错误消息

ValueError:没有足够的值来解包(预期 5,得到 4)

如何解决以下错误?

【问题讨论】:

  • 在问题中将完整的回溯显示为格式正确的文本。

标签: python python-3.x pandas matplotlib


【解决方案1】:

candlestick_ohlc 函数需要 5 个值(t、开、高、低、收),为此您需要将时间值添加到输入中:

>>> values = np.hstack((np.array(df_ohlc.index).reshape(-1,1), df_ohlc.values))
>>> candlestick_ohlc(ax1, values, width=2, colorup='g')

我还建议您使用 mplfinance 而不是 mpl_finance,因为后者已被弃用

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2023-03-20
    • 2016-04-10
    • 2017-09-14
    • 2022-01-21
    相关资源
    最近更新 更多