在试图用Python绘制一个DataFrame的YoY相关性的背景下。问题是如何得到代表每对变量 "AAPL"、"IBM "和 "MSFT "每年相关性的3对相关系数。然后用matplotlib绘制它们。
如何按行计算相关性?.corrwith
似乎是什么建议,但它它不工作在这里。
https:/www.geeksforgeeks.orgpython-pandas-dataframe-corrwith
我设法找到了一个熊猫数据框架,其中每一行代表年份,每一个元素代表一年来的累计价格。我想把累积的YoY价格的相关性,然后把它们作为时间的函数绘制出来。
数据的样子是这样的。
AAPL IBM MSFT
Year
2003 333.392142 21429.009979 6585.475002
2004 637.586428 22862.419960 6837.309986
2005 1678.695713 21121.199997 6519.779993
2006 2545.412858 20827.630028 6592.800003
2007 4603.665710 26528.350021 7638.409990
2008 5143.625731 27841.030014 6755.059990
2009 5278.287136 27444.059998 5779.759998
2010 9312.338573 33034.919891 6795.050001
最后的图表是这样的:
总结一下这个问题。如何将下面的数据,计算出每一年的3个对偶关系,然后用matplotlib来绘制结果?
下面提供了目前导入数据并进行操作的代码。注意用yfinance来加载数据。
#!pip install yfinance
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
ticker_Symbol = "AAPL", "MSFT", "IBM"
start_date = '2003-1-01'
end_date = '2010-12-31'
df5 = yf.download(ticker_Symbol,start_date , end_date)
df = df5[["Open"]]
print(df.head(3))
# Index the Year of each Value
df["Year"] = df.index.year
dfYearly = df.groupby(['Year']).sum()
dfYearly = dfYearly["Open"]
dfYearly
你不能计算两个单数之间的相关性。
计算相关系数背后的想法是,有一个基本的 "人口 "相关系数,你通过计算数据样本的经验系数来估计。但如果这个样本的大小是1,你对任何潜在的相关信息都是零。
因此,如果你想计算单个年份的单独相关系数,你将需要没有按年份汇总的数据。那么实际上你可以使用 corrwith
作为每年的汇总方法。