2017-01-08 6 views
0

私が見ているファンドに対して、さまざまなベンチマークのトラッキングエラーを計算しようとしています(トラッキングエラーは、ファンドとの間のパーセント差の標準偏差基準)。ファンドとすべてのベンチマークの時系列は、私がファイルのExcelから読んでいるデータフレームにあります。これまでのところ、これは(arg1はすべてのベンチマークを表し、applymap )、それはKeyError、任意の提案を返すか?多くのベンチマークでのトラッキングエラー

import pandas as pd 
import numpy as np 
data = pd.read_excel('File_Path.xlsx') 

def index_analytics(arg1): 
    tracking_err = np.std((data['Fund'] - data[arg1])/data[arg1]) 
    return tracking_err 

data.applymap(index_analytics) 

答えて

1

いくつか修正する必要があります。まず、applymapは、すべての列の個々の値を呼び出し関数(index_analytics)に渡します。したがって、arg1は、データフレーム内のすべての値の個別のスカラー値です。 data[arg1]は、すべての値が列名でもない限り、常にキーエラーを返します。

また、適用する必要はありません。ベンチマークが同じデータフレーム内にあると仮定すると、ベンチマークごとにこのようなことができるはずです。次回は、データフレームのサンプルが含まれています。

df['Benchmark1_result'] = (df['Fund'] - data['Benchmark1'])/data['Benchmark1'] 

そして、あなたはすべてのベンチマークのためのすべての標準偏差を計算したい場合は、あなたが行うことができますが、この

# assume you have a dataframe with a list of all the benchmark columns 
benchmark_columns = [list, of, benchmark, columns] 

np.std((df['Fund'].values - df[benchmark_columns].values)/df['Fund'].values, axis=1) 
+0

ありがとうございました!私はリストを作成することについてあなたのポイントを参照してください。 (ベンチマーク列)/ data [ベンチマーク列])。std()関数は、ベンチマーク列を作成しました。 –

+0

RuntimeWarning:順序付け不可能な型:str()

+0

'benchmark_columns'は列のサブセットでなければなりません。あなたの上記のコードから、あなたは無意味になるすべての列をつかんでいます。ベンチマーク列のみを選択します。減算を行うときにも '.values'を使います。 –

関連する問題