2017-07-07 24 views
0

私はベンチマークに株式リターンの平均値を比較しようとしている、と私のコードは、これまでに次のようになります。今のグラフのようパンダに平均に列をピッキング

index = ['^GSPC'] 
tickers = ['CAT','AAPL'] 
stocks = tickers + index 
start = dt.datetime(2017,1,1) 
end = dt.datetime(2017,6,30) 

def excess_movement_plot(stocks): 
    f = web.get_data_yahoo(tickers,start,end) 
    cleanData = f.loc['Adj Close'] 
    dataFrame = pd.DataFrame(cleanData) 
    stock_return = dataFrame.pct_change() 
    return plt.plot(stock_return[stocks]) 

3つのラインを示していますが、私はちょうど2 - ティッカーの平均(AAPLとCAT)とS & P(^ GSPC)

を試してみたいと思います。

stock_return[['AAPL', 'CAT']].mean(axis=0) 
stock_return.merge('AAPL', 'CAT') 

答えて

0

あなたはdf.apply(np.mean, axis=1)使用することができます:あなたは平均を計算するために使用された元の列にしたくない場合は

In [127]: import pandas as pd 
    ...: df = pd.DataFrame(np.random.randn(50, 3), columns=list('ABC')) 
    ...: df.head() 
    ...: 
Out[127]: 
      A   B   C 
0 -0.030422 -0.608397 -2.281822 
1 -0.448152 -1.609030 0.382790 
2 0.297778 0.207474 -0.212203 
3 -0.132665 -0.091073 0.108438 
4 -1.290343 0.782635 0.401523 

In [128]: df['Average'] = df[['B', 'C']].apply(np.mean, axis=1) 

In [131]: df[['A', 'Average']].head() 
Out[131]: 
      A Average 
0 -0.030422 -1.445109 
1 -0.448152 -0.613120 
2 0.297778 -0.002365 
3 -0.132665 0.008682 
4 -1.290343 0.592079 

が、あなたはこのように、それらをドロップすることができます。

df.drop(['B', 'C'], 1, inplace=True) 

df[['B', 'C']].mean(axis=1)と同じことを行うこともできます。

In [132]: df['Average'] = df[['B', 'C']].mean(axis=1) 

In [133]: df[['A', 'Average']].head() 
Out[133]: 
      A Average 
0 -0.030422 -1.445109 
1 -0.448152 -0.613120 
2 0.297778 -0.002365 
3 -0.132665 0.008682 
4 -1.290343 0.592079 
+0

ありがとうございました。 –

+0

私はreturn plt.plot(stock_return ['Average'])を使用しましたが、インデックスの2番目のグラフをプロットするにはどうすればよいですか?2つのプロットを返すことはできますか? –

+0

@ thomas.mac 'plt.plot(stock_return)'はそれらを両方ともプロットすべきだと私は思う。私はパンダにあまり慣れていない。昨日学習を始めました。私は私が得るエラーです:KeyError:(( ''^GSPC '、)、' Average ')、それ以外の場合は: –

関連する問題