Я имею в SQL Server исторической возвратную таблицы по дате и Id активов, как это:Python корреляционной матрицы 3d dataframe
[Date] [Asset] [1DRet]
jan asset1 0.52
jan asset2 0.12
jan asset3 0.07
feb asset1 0.41
feb asset2 0.33
feb asset3 0.21
...
Поэтому мне нужно вычислить корреляционную матрицу для данного диапазон дат для всех комбинаций активов: A1, A2; A1, A3; A2, A3
Im using pandas и в моем SQL Выберите, где я фильтрую диапазон дат и заказываю его по дате.
Я пытаюсь сделать это с помощью панд df.corr(), numpy.corrcoef и SciPy, но не в состоянии сделать это для моей п-переменной dataframe
я вижу какой-то пример, но это всегда для dataframe где у вас есть актив за стол и одну строку в день.
Это мой блок кода, где я делаю это:
qryRet = "Select * from IndexesValue where Date > '20100901' and Date < '20150901' order by Date"
result = conn.execute(qryRet)
df = pd.DataFrame(data=list(result),columns=result.keys())
df1d = df[['Date','Id_RiskFactor','1DReturn']]
corr = df1d.set_index(['Date','Id_RiskFactor']).unstack().corr()
corr.columns = corr.columns.droplevel()
corr.index = corr.columns.tolist()
corr.index.name = 'symbol_1'
corr.columns.name = 'symbol_2'
print(corr)
conn.close()
Для этого я reciving этот Сообщ:
corr.columns = corr.columns.droplevel()
AttributeError: 'Index' object has no attribute 'droplevel'
**Print(df1d.head())**
Date Id_RiskFactor 1DReturn
0 2010-09-02 149 0E-12
1 2010-09-02 150 -0.004242875148
2 2010-09-02 33 0.000590000011
3 2010-09-02 28 0.000099999997
4 2010-09-02 34 -0.000010000000
**print(df.head())**
Date Id_RiskFactor Value 1DReturn 5DReturn
0 2010-09-02 149 0.040096000000 0E-12 0E-12
1 2010-09-02 150 1.736700000000 -0.004242875148 -0.013014321215
2 2010-09-02 33 2.283000000000 0.000590000011 0.001260000048
3 2010-09-02 28 2.113000000000 0.000099999997 0.000469999999
4 2010-09-02 34 0.615000000000 -0.000010000000 0.000079999998
**print(corr.columns)**
Index([], dtype='object')
Вы можете напечатать 'df1d.head() '? И 'df.head()'? – Alexander
Попробуйте напечатать corr.columns – Alexander
сделано, я смог распечатать после комментария строку с ошибкой – Flib