2016-11-22 4 views
0

データフレームは、以下のように2つの列「AvailbilityZone」と「InstanceType」でグループ化されています。複数の時系列を相関させるためのPythonの使用

enter image description here

は、私は、これは次のコードを使用して作成します。

#Create full time series and fill data 
dfSorted = df.groupby(['AvailabilityZone', 'InstanceType']) 
dfSorted = dfSorted.resample('H') 
dfSorted = dfSorted.fillna("ffill") 
dfSorted = dfSorted.dropna() 

ごとにグループ化は時系列を表します。私はすでにすべての時系列が1時間単位で実行されるようにデータを再サンプリングしました。どのように相関関係を実行して、各時系列が互いに似ているかを調べるにはどうすればよいですか?

私が使用:

dfSorted.corr() 

それだけだから私は、私はおそらくループのようなものを使用する必要がありますと仮定するつもりですSpotPrice = 1を返しますか?それぞれの時系列を他と比較しますか?私は何か助けを失っている多くの感謝です!ここで

はcsvファイルとしての私のデータフレームです: https://www.dropbox.com/s/xgv8xm5n5o856mx/out.csv?dl=0

I単に使用df.tocsv()

+2

我々はpd.read_clipboard()(またはのスニペットを使用してインポートすることができ、あなたのデータフレームのサンプルを投稿してくださいそれを作成するコード)と、望ましい/期待される出力を示します。 –

+0

@JulienMarrec私はデータフレームへのリンクを編集してダウンロード用のcsvとして追加しました! –

+0

投稿head()出力 – Boud

答えて

1

主な問題は、データフレームの構造を間違って設定していることです。 burhanが行った上記の答えは、あなたのデータをリストに再構成することです。あなたがdataframe.corr()クラスの使用を継続するINORDER必要があるだろうことはあなたのデータでは、以下の構造を次のようになります。

table

+0

これはまさに問題となったものです。 –

+1

私は嬉しかった。私はそれを後半のahahaと特定できた。では、頑張ってね! – Kyros

1

グループを作成するとき、私はあなたがgroupbyを使用すると仮定しています。あなたが最初に自分のグループを作成することができます。

groups = df.groupby(['whatever','grouping']) 

次にあなたが相関する値のためのリストの一覧を取得することができ、私はこれはSpotPriceで、あなたのケースで考えています。そう;

grouped_prices = [g['SpotPrice'].tolist() for i,g in groups] 

numpy.corrcoef入力は、各リストの間の相関を計算し、あなたの相関係数行列を返すようリストのリストを取ります。参照:https://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html

numpy.corrcoef(grouped_prices) 

これは相関係数行列です。

numpy.corrcoefおよびpandas.DataFrame.corrは、デフォルトで両方ともPearsonの相関係数を計算するため、同じ結果が得られます。私はnumpy.corrcoefを使用することに決めました。なぜなら、このケースではもっと簡単だと思うからです。

また、Pearson Correlationを使用する前に、変数間の線形関係のみを測定するだけでなく、データを使用するために満たす必要があるという前提もあります。たとえば、hereを参照してください。

+0

私は謝罪しました。私はどのくらい私が仮定して残したのか分かりませんでした。 。私はValueErrorを実行します:アンパックするには値が大きすぎます(予想2)が、あなたの答えは間違いなく正しい方向に進み、私が得ることができるものを見て回ります。 –

+0

'SpotPrice'のリストを作成し、' numpy.corrcoef'に入力してみてください。 – burhan

関連する問題