2016-06-25 14 views
1

:私のデータフレーム上複数の時系列でPythonでスクリプトを実行する方法は?私は<a href="http://statsmodels.sourceforge.net/devel/" rel="nofollow">the StatsModels library</a>を使用して次のスクリプトを実行しようとしています

cadf = ts.adfuller(df1.spread) 
print 'Augmented Dickey Fuller test statistic =',cadf[0] 
print 'Augmented Dickey Fuller p-value =',cadf[1] 
print 'Augmented Dickey Fuller 1%, 5% and 10% test statistics =',cadf[4] 

を、私のデータフレームは、現在、複数の時系列(200 +)で構成され、私は上の上記のスクリプトを実行したいと思います各時系列。以下は、データフレームの例である:

Sn.No A-B  B-C   A-C 
    1  10  11.15  13.22 
    2  11  12.36  14.75 
    3  10.75 11.54  14.21 

だから、私は、-BにADFテスト・スクリプトを実行したいB-CおよびA-Cおよびそれらのそれぞれの検定統計量/出力を取得します。

+0

どの統計ライブラリーを使用していますか? – noumenal

+1

ねえ男。 statsmodelライブラリ –

+0

を使って私はそう思った。あなたの質問にライブラリを含めるようにしてください。答えるのが少し楽になります。 – noumenal

答えて

0

基本的には、全体ではなく、データフレームの、個別の列にアクセスするには:

df1['A-B'] 

はあなたの最初の列を取得します。リスト内で丸めよう:

columns = ['A-B', 'B-C', 'A-C'] 

200以上の列がある場合は、それらに別々にアクセスする必要があります。あなたはその下のxrange機能が必要ですが、好きではないような場合には

columns = range(200) 

df1.iloc(column) 

私は、これは知っている理由のは、あなたがこのような200何かことが可能なはずであるとしましょう私はthe source code for dataframe in the statmodels libraryを調べたので、明らかにPandas dataframeです。上記の例のようにスプレッドを入力する必要があると仮定すると、リストの理解式を使用して リストに出力統計を収集します。

代わり
cadfs = [ts.adfuller(df1[column].spread) for column in columns] 

、あなたは数値インデックスでアクセスしている場合:

cadfs = [ts.adfuller(df1.iloc(column).spread) for column in columns] 

コードより 読み使用ローカル定数を作るために。

TEST = 0  
P = 1 
PERCENTILES = 4 

values = [cadfs[column][TEST] for column in xrange(columns)] 
ps  = [cadfs[column][P] for column in xrange(columns)] 
pct = [cadfs[column][PERCENTILES] for column in xrange(columns)] 

print 'Augmented Dickey Fuller Test' 
print 'ADF Test Statistics - p - Percentiles 1%, 5% and 10%' 
print values, ps, pct 
+0

こんにちはNoumenal、上記のロジックを使用して、私はコードを書いたが、私はあなたがそれについて私を導くことができる場合、私はエラーと遭遇している、私はコードとエラーでimgを添付しています。 [link](http://imgur.com/SRgUK7A) –

+0

なぜこれが起こっているのかわかりませんが、xが定義されていないか、その形に長さがないようです。 – noumenal

関連する問題