Python 数据帧中的烛台绘图重试

Python 数据帧中的烛台绘图重试,python,matplotlib,plot,finance,Python,Matplotlib,Plot,Finance,我不熟悉matplotlib,需要一些指导。我一直在尝试从“熊猫数据框的烛台图”中复制这段代码,作为一种通过添加“read_csv”函数进行学习的方法 我的错误消息一直在说“valueError:长度不匹配:预期轴有6个元素,新值有5个元素” 我的问题是: 我在代码中遗漏了什么?我读了cvs,使用了正确的数据列,我知道索引被重置了,但我不知道为什么它总是出错 请帮忙 import pandas as pd import numpy as np import matplotlib.pyplot a

我不熟悉matplotlib,需要一些指导。我一直在尝试从“熊猫数据框的烛台图”中复制这段代码,作为一种通过添加“read_csv”函数进行学习的方法

我的错误消息一直在说“valueError:长度不匹配:预期轴有6个元素,新值有5个元素”

我的问题是:

  • 我在代码中遗漏了什么?我读了cvs,使用了正确的数据列,我知道索引被重置了,但我不知道为什么它总是出错 请帮忙

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.ticker as mticker
    from mpl_finance import candlestick_ohlc
    import matplotlib.dates as mdates
    import datetime as dt
    
    
    df = pd.read_csv("/Users/paul/Documents/python     (original)/Quant/sp500.csv", usecols=['Date', 'Open','High','Low','Close'])
    
    
    #Reset the index to remove Date column from index
    df_ohlc = df.reset_index()
    
    
    #Naming columns
    df_ohlc.columns = ["Date","Open","High",'Low',"Close"]
    
    #Converting dates column to float values
    df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)
    
    #Making plot
    fig = plt.figure()
    ax1 = plt.subplot2grid((6,1), (0,0), rowspan=6, colspan=1)
    
    #Converts raw mdate numbers to dates
    ax1.xaxis_date()
    plt.xlabel("Date")
    print(df_ohlc)
    
    #Making candlestick plot
    candlestick_ohlc(ax1,df_ohlc.values,width=1, colorup='g',       colordown='k',alpha=0.75)
    plt.ylabel("Price")
    plt.legend()
    
    plt.show()
    
    在.csv文件中的每一行之前不需要“0”、“1”、“2”。您必须先删除该文件,然后:

    • 如果要重置索引,则需要在数据帧中有一个实际的索引列,因此添加
      index\u col
      如下:
      df=pd.read\u csv(“/Users/paul/Documents/python(original)/Quant/sp500.csv”,usecols=['Date'、'Open'、'High'、'Low'、'Close'],index\u col='Date')

    • 将日期列从字符串转换为日期时间:
      df_ohlc['Date']=pd.to_datetime(df_ohlc['Date'])

    编辑:
    如果无法删除0、1、2。。。由于csv文件中的列太大,请修改第一行,使“索引”列如下所示:
    “索引”、“日期”、“打开”、“高”、“低”、“关闭”

    然后,在代码中:

    df = pd.read_csv("/Users/paul/Documents/python     (original)/Quant/sp500.csv", usecols=['index', 'Date', 'Open','High','Low','Close'], index_col="Date")
    df.drop('index', axis=1, inplace=True)
    
    在.csv文件中的每一行之前不需要“0”、“1”、“2”。您必须先删除该文件,然后:

    • 如果要重置索引,则需要在数据帧中有一个实际的索引列,因此添加
      index\u col
      如下:
      df=pd.read\u csv(“/Users/paul/Documents/python(original)/Quant/sp500.csv”,usecols=['Date'、'Open'、'High'、'Low'、'Close'],index\u col='Date')

    • 将日期列从字符串转换为日期时间:
      df_ohlc['Date']=pd.to_datetime(df_ohlc['Date'])

    编辑:
    如果无法删除0、1、2。。。由于csv文件中的列太大,请修改第一行,使“索引”列如下所示:
    “索引”、“日期”、“打开”、“高”、“低”、“关闭”

    然后,在代码中:

    df = pd.read_csv("/Users/paul/Documents/python     (original)/Quant/sp500.csv", usecols=['index', 'Date', 'Open','High','Low','Close'], index_col="Date")
    df.drop('index', axis=1, inplace=True)
    

    在脚本的哪一行中出现错误?请提供完整的错误回溯。没有关于当前输入文件的信息。(请参阅)因此,您可能无法在此处获得答案,因为没有人可以重现此问题。嗨,importantanceofbeingernest,我为缺乏信息而道歉。前几条记录的读入日期为2015-09-22 1961.390015 1961.390015 1929.219971 1942.739990 1 2015-09-23 1943.23990 1949.52020 1932.569946 1938.760010 22015-09-24 1934.810059 1937.170044 1908.920044 1932.23990完整的错误消息是“完整的错误消息是”raceback(最近一次调用):File“/Users/paul/Documents/python(original)/Quant/candle stick chart from stackoverflow v4.py”,第17行,在df_ohlc.columns=[“Date”,“Open”,“High”,“Low”,“Low”,“Close”]文件中“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pandas/core/generic.py”,第3094行,在setattr返回对象中。uuuuuuu setattr_uuuu(self,name,value)文件“pandas/libs/src/properties.pyx”,第65行,在pandas.libs.libs.AxisProperty.uu set_uuuuuu(pandas/u libs/libs/libs/libs/lib/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pandas/core/generic.py”,第473行,在集合轴self.\u data.set\u axis(axis,labels)文件中“/Library/framework/python3.6/site packages/pandages/core/internals.py”,第2836行,在集合轴(旧的,新的))ValueError:长度不匹配:预期轴有6个元素,新值有5个元素“谢谢。在脚本的哪一行中出现错误?”?请提供完整的错误回溯。没有关于当前输入文件的信息。(请参阅)因此,您可能无法在此处获得答案,因为没有人可以重现此问题。嗨,importantanceofbeingernest,我为缺乏信息而道歉。前几条记录的读入日期为2015-09-22 1961.390015 1961.390015 1929.219971 1942.739990 1 2015-09-23 1943.23990 1949.52020 1932.569946 1938.760010 22015-09-24 1934.810059 1937.170044 1908.920044 1932.23990完整的错误消息是“完整的错误消息是”raceback(最近一次调用):File“/Users/paul/Documents/python(original)/Quant/candle stick chart from stackoverflow v4.py”,第17行,在df_ohlc.columns=[“Date”,“Open”,“High”,“Low”,“Low”,“Close”]文件中“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pandas/core/generic.py”,第3094行,在setattr返回对象中。uuuuuuu setattr_uuuu(self,name,value)文件“pandas/libs/src/properties.pyx”,第65行,在pandas.libs.libs.AxisProperty.uu set_uuuuuu(pandas/u libs/libs/libs/libs/lib/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pandas/core/generic.py”,第473行,在集合轴self.\u data.set\u axis(axis,labels)文件中“/Library/framework/python3.6/site packages/pandages/core/internals.py”,第2836行,在集合轴(旧的,新的))ValueError:长度不匹配:预期轴有6个元素,新值有5个元素“谢谢。我很欣赏这两个元素的指针。我在想一种方法来匹配这些专栏。我重新阅读了所有函数,昨晚用df=pd.read_csv(“/Users/paul/Documents/python(original)/Quant/sp500.csv”,index_col='Date',parse_dates=True,usecols=['Date','Open','High','Low','Close'])尝试了这一点。它成功了。我很欣赏这两位的指点。我在想一个办法