首页 > 解决方案 > 使用特定数据框计算 cov_matrix

问题描述

我有一个这样的数据框:

数据框

Ticker意思是Stock Name我已经计算过pct_change了,现在我需要计算cov matrix每个 Ticker = StockName。

输出应该类似于:

输出

任何想法如何为我的专栏计算上面的矩阵pct_change

我从这段代码开始,下一步是计算协方差。

import pandas as pd

import glob
import os

os.chdir('C:\\Users\xxxxx')
files_list = glob.glob('*.txt')
stocks = {}

for i, file in enumerate(files_list):
    stocks[i] = pd.read_csv(files_list[i], names=['Ticker', 'Date', 'Open', 'High', 'Low', 'Close', 'Vol'], 
                            header=None).drop(index=0).reset_index().drop(columns='index')
    stocks[i].iloc[:, stocks[i].columns.get_loc('Open'):] = stocks[i].iloc[:, stocks[i].columns.get_loc('Open'):].astype('float')
    stocks[i]['pct_change'] = stocks[i]['Close'].pct_change()

在此先感谢您的帮助 :)

标签: pythonpandasdataframematrixcovariance

解决方案


这是一些模仿您的数据特征的假数据 - 以股票代码日期作为唯一观察标识符的面板数据。

df

在此处输入图像描述

我所做的就是像这样旋转数据

dfp = df.pivot(index='date',columns='ticker',values='pct_change')
dfp

在此处输入图像描述

现在我可以使用 Numpy 的协方差矩阵函数了。

cov = np.cov(df.values)
cov

在此处输入图像描述


推荐阅读