Python Pandas 绘制标题名称传递字符串

标签 python matplotlib pandas

如何在不将所有 pandas 数据转换为 matplotlib 和 numpy 的情况下使标题名称显示“AAPL 股票价格”。

import time
from pylab import *
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas.io.data import *


def Datapull(Stock):
    try:
        OHLC=DataReader(Stock,'yahoo',start='01/01/2010')
        OHLC['diff'] = OHLC.Open - OHLC.Close
        return OHLC
        print 'Retrieved', Stock
        time.sleep(5)
    except Exception, e:
        print 'Main Loop', str(e)

def graph(stock):
    try:
        fig=plt.figure()
        mainplt=plt.subplot2grid((5,4), (0,0), rowspan=4, colspan=4)
        stock['Close'].plot(color='g').set_ylabel('Price')
        plt.title('Stock Price')
        plt.setp(mainplt.get_xticklabels(),  visible=False)

        ax2=plt.subplot2grid((5,4), (4,0), rowspan=1, sharex=mainplt, colspan=4)
        ax2.grid(False)
        stock['Volume'].plot(color='c').set_ylabel('Volume')
        ax2.axes.yaxis.set_ticklabels([])
        plt.setp(ax2.get_xticklabels(),  rotation=45)

        plt.subplots_adjust(top=0.95, bottom=.14, right=.94, left=.09, wspace=.20, hspace=0 )
        plt.show()



    except Exception, e:
        print 'Main Loop', str(e)


Stock='AAPL'
AAPL=Datapull(Stock)
graph(AAPL)

应该是

plt.title(stock+'Stock Price')

使用 numpy 但我收到一条错误消息,而且字幕也不起作用

Main Loop Could not operate ['Stock Price'] with block values [unsupported operand type(s) for +: 'numpy.ndarray' and 'str']

最佳答案

加载数据的方式,不保存符号名称。 OHLC 只是一个 DataFrame,据我所知,它没有合适的名称属性来存储 AAPL 符号。

一种可能的方法是加载Panel,注意方括号,将stock_name转换为符号列表:

>>> stock_name = 'AAPL'
>>> OHLC = pd.io.data.DataReader([stock_name],'yahoo',start='01/01/2010')
>>> OHLC
<class 'pandas.core.panel.Panel'>
Dimensions: 6 (items) x 990 (major_axis) x 1 (minor_axis)
Items axis: Open to Adj Close
Major_axis axis: 2010-01-04 00:00:00 to 2013-12-06 00:00:00
Minor_axis axis: AAPL to AAPL
>>> OHLC.axes[2]
Index([u'AAPL'], dtype=object)

并使用以下方式访问底层 DataFrame

>>> OHLC.ix[:,:,'AAPL']
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 990 entries, 2010-01-04 00:00:00 to 2013-12-06 00:00:00
Data columns (total 6 columns):
Open         990  non-null values
High         990  non-null values
Low          990  non-null values
Close        990  non-null values
Volume       990  non-null values
Adj Close    990  non-null values
dtypes: float64(6)

或者您可以自己存储符号名称,

>>> OHLC = (stock_name, pd.io.data.DataReader(stock_name,'yahoo',start='01/01/2010'))

并使用 df 和 name 访问

>>> name, df = OHLC
>>> name
'AAPL'

关于Python Pandas 绘制标题名称传递字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20439980/

相关文章:

python - os.environ ['PATH' ] 与 echo $PATH 显示的系统路径不同

python - 你如何在 Python 中舍入一个字符串?

python - 在 Matplotlib 中显示绘图之前获取空刻度标签

python - 将 plot() 添加到 imshow() 时避免更改图形大小

python - 如何在 Python 中设置辅助 y 轴

mysql - 如何从mysql连接下载数据

python - 为什么从初始化中添加零偏移量与从减法中添加零偏移量不同?

python - 从子目录导入文件?

python - django MySQLdb 不同步

python - 具有大型 .dta 文件的 Pandas read_stata()