Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python关联多个时间序列_Python_Pandas_Statistics - Fatal编程技术网

使用Python关联多个时间序列

使用Python关联多个时间序列,python,pandas,statistics,Python,Pandas,Statistics,我有一个数据框,它由两列“AvailabilityZone”和“InstanceType”组成,如下所示 我使用以下代码创建此文件: #Create full time series and fill data dfSorted = df.groupby(['AvailabilityZone', 'InstanceType']) dfSorted = dfSorted.resample('H') dfSorted = dfSorted.fillna("ffill") dfSorted = df

我有一个数据框,它由两列“AvailabilityZone”和“InstanceType”组成,如下所示

我使用以下代码创建此文件:

#Create full time series and fill data
dfSorted = df.groupby(['AvailabilityZone', 'InstanceType'])
dfSorted = dfSorted.resample('H')
dfSorted = dfSorted.fillna("ffill")
dfSorted = dfSorted.dropna()
每个分组代表一个时间序列。我已经对数据进行了重新采样,这样所有的时间序列都是按小时运行的。我如何运行相关性来找出每个时间序列之间的相似程度

当我使用:

 dfSorted.corr()
它只返回SpotPrice=1,所以我假设我可能需要使用循环之类的东西?并将每个时间序列与其他时间序列进行比较?我失去了任何帮助,非常感谢

以下是作为csv文件的数据帧:


我只是在创建组时使用了df.tocsv()

,我假设您使用的是
groupby
。您可以先创建组:

groups = df.groupby(['whatever','grouping'])
然后你可以得到你想要关联的值的列表,我相信在你的例子中这是
SpotPrice
。所以,

grouped_prices = [g['SpotPrice'].tolist() for i,g in groups]
numpy.corrcoef
将列表列表作为输入,然后计算每个列表之间的相关性,并返回相关系数矩阵。见:

这是你的相关系数矩阵

numpy.corrcoef
pandas.DataFrame.corr
应该给出相同的结果,因为默认情况下它们都计算
Pearson
相关系数。我选择使用
numpy.corrcoef
,因为我认为在这种情况下更容易


此外,在使用Pearson相关性之前,您应该知道它只测量变量之间的线性关系,并且您的数据必须满足某些假设才能使用它。请参阅示例。

创建组时,我假设您使用的是
groupby
。您可以先创建组:

groups = df.groupby(['whatever','grouping'])
然后你可以得到你想要关联的值的列表,我相信在你的例子中这是
SpotPrice
。所以,

grouped_prices = [g['SpotPrice'].tolist() for i,g in groups]
numpy.corrcoef
将列表列表作为输入,然后计算每个列表之间的相关性,并返回相关系数矩阵。见:

这是你的相关系数矩阵

numpy.corrcoef
pandas.DataFrame.corr
应该给出相同的结果,因为默认情况下它们都计算
Pearson
相关系数。我选择使用
numpy.corrcoef
,因为我认为在这种情况下更容易


此外,在使用Pearson相关性之前,您应该知道它只测量变量之间的线性关系,并且您的数据必须满足某些假设才能使用它。请参阅示例。

我认为您面临的主要问题是数据帧的结构设置不正确。burhan的上述回答所做的是将数据重组为列表。要继续使用
dataframe.corr()
类,您需要的是数据中的以下结构:


我认为您面临的主要问题是数据帧的结构设置不正确。burhan的上述回答所做的是将数据重组为列表。要继续使用
dataframe.corr()
类,您需要的是数据中的以下结构:


请发布您的数据框示例,我们可以使用pd.read_clipboard()导入该示例(或创建该示例的代码片段)以及所需/预期的输出。@JulienMarec我已编辑并添加了一个指向我的数据框的链接,作为csv下载!后df.head()output@Boud上面的图像就是,我使用了group by函数,这就是返回的内容。请发布一个数据帧示例,我们可以使用pd.read_clipboard()导入它(或创建它的代码片段)以及所需/预期的输出。@JulienMarrec我已经编辑并添加了一个链接到我的数据框,作为csv下载!后df.head()output@Boud上面的图片就是,我使用了按函数分组,这就是返回的结果。我很抱歉,我没有意识到我在如何创建分组的假设中还剩下多少。我遇到了一个ValueError:太多的值无法解包(预期为2个),但您的答案肯定是正确的,我们将继续讨论,看看我能得到什么。只需尝试制作一个SpotPrice的列表,并将其输入到
numpy.corrcoef
中,我很抱歉,我没有意识到我还有多少时间来进行假设,我包括了关于如何创建组的代码。我遇到一个ValueError:太多的值无法解包(预期为2个),但是你的答案肯定是正确的,我们会继续玩下去,看看我能得到什么。试着把
SpotPrice
的列表列出来,然后输入
numpy。corrcoef
这正是问题的症结所在。我很高兴我很晚才找到答案,哈哈。祝你好运!这正是问题的症结所在。我很高兴我能在晚些时候找到答案。祝你好运!