2016-09-27 1 views
1

pandas dfをnp配列に変換する必要がありますが、プロセスで列名が失われます。私は今読んで、しばらくの間googledと私は立ち往生している。私は、やるpandas dfをnp配列に変換するときに、列名を保持するにはどうすればよいですか?

mont_data.tail() 
Out[114]: 
Index  MOEX.ME  ^GSPC  ^MXX  ^N225 ^OSEAX 
Date               
2016-05-31 0.001482 -0.004077 0.002506 -0.000005 0.033240 
2016-06-30 0.074850 0.008136 -0.002262 -0.029029 0.002518 
2016-07-31 0.025882 0.030147 0.024242 0.007169 0.032473 
2016-08-31 0.059069 0.014333 0.025050 0.025243 -0.008767 
2016-09-30 0.035201 -0.009029 -0.016499 -0.039833 -0.003520 

mont_arr = mont_data.as_matrix(columns=[mont_data.columns[0:5]]) 

か:

mont_arr = mont_data.as_matrix(columns=[mont_data.columns[0:]]) 

をどちらも結果はNP配列に列ヘッダーなし

私のDFは、このようになります。どのようにこれを解決するための任意のアイデア?あなたは、このようにそれを行うことができますPythonの3.5

+1

行うことはできません: 'numpy'アレイはヘッダ名を持っていません。 –

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ投稿者: – cJc

+0

'mont_data.columns.tolist()'はあなたの列名のリストを提供します。しかし、あなたは['DataFrame.corr()'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.corr.html)を使ってパンダで計算を行うことができます。 –

答えて

3

あなたはパンダの列の間の相関係数を計算することができます。

import io 
import pandas as pd 

data = io.StringIO('''\ 
Index  MOEX.ME  ^GSPC  ^MXX  ^N225 ^OSEAX 
2016-05-31 0.001482 -0.004077 0.002506 -0.000005 0.033240 
2016-06-30 0.074850 0.008136 -0.002262 -0.029029 0.002518 
2016-07-31 0.025882 0.030147 0.024242 0.007169 0.032473 
2016-08-31 0.059069 0.014333 0.025050 0.025243 -0.008767 
2016-09-30 0.035201 -0.009029 -0.016499 -0.039833 -0.003520 
''') 
mont_data = pd.read_csv(data, delim_whitespace=True).set_index('Date') 

print(mont_data.corr()) 

出力:

  MOEX.ME  ^GSPC  ^MXX  ^N225 ^OSEAX 
MOEX.ME 1.000000 0.201809 0.030481 -0.152252 -0.762061 
^GSPC 0.201809 1.000000 0.853232 0.595998 0.261402 
^MXX  0.030481 0.853232 1.000000 0.926106 0.231001 
^N225 -0.152252 0.595998 0.926106 1.000000 0.225621 
^OSEAX -0.762061 0.261402 0.231001 0.225621 1.000000 
+0

...または 'mont_data.iloc [:, 1:]。T.corr()'の結果を再現する'np.corrcoef' –

2

と述べたパッケージの最新バージョンを使用して

In [19]: df 
Out[19]: 
      MOEX.ME  ^GSPC  ^MXX  ^N225 ^OSEAX 
Date 
2016-05-31 0.001482 -0.004077 0.002506 -0.000005 0.033240 
2016-06-30 0.074850 0.008136 -0.002262 -0.029029 0.002518 
2016-07-31 0.025882 0.030147 0.024242 0.007169 0.032473 
2016-08-31 0.059069 0.014333 0.025050 0.025243 -0.008767 
2016-09-30 0.035201 -0.009029 -0.016499 -0.039833 -0.003520 

In [23]: result = pd.DataFrame(np.corrcoef(df), index=df.columns, columns=df.columns) 

In [24]: result 
Out[24]: 
      MOEX.ME  ^GSPC  ^MXX  ^N225 ^OSEAX 
MOEX.ME 1.000000 -0.087534 0.433865 -0.651299 0.093799 
^GSPC -0.087534 1.000000 0.457119 0.657940 0.980054 
^MXX  0.433865 0.457119 1.000000 -0.299503 0.596537 
^N225 -0.651299 0.657940 -0.299503 1.000000 0.501435 
^OSEAX 0.093799 0.980054 0.596537 0.501435 1.000000 
+0

次のエラーが表示されます。ValueError:渡された値の形状は(121,121)、インデックスは(5,121) – cJc

+0

@cJcを暗示しています。私は答えを更新しました。試してみてください... – MaxU

+0

get:渡された値の形状は(121,121)、インデックスは(5,5) – cJc

関連する問題