繁体   English   中英

跨时间序列的列的相关性

[英]Correlation of columns across time series

我试图了解销售活动与已结订单的相关性。

因此,例如,1月份的销售活动在2月导致了一定数量的机会,这导致3月份赢得了一定数量的订单。 我遇到的困难是活动/机会/赢得订单之间并不总是有一个月的滞后。 在我看来,pandas .corr想要使用特定的数据集,但这是我未知的事情之一,也是我想要了解的事情之一。 另一个难点是尺度。 呼叫以呼叫数量来衡量。 机会和赢得的订单以美元计算。 所以我的问题是,有没有办法最好地适应来自不同列的数据,以便我可以应用相关性?

将pandas导入为pd

d = {
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
     'Year': [2019, 2019, 2019, 2019, 2019],
    'CallsActivity': [10, 20, 30, 40, 50],
    'NewOpportunitiesRevenue': [0, 5000, 10000, 15000, 20000],
    'WonOpportunitiesRevenue': [0, 0, 1000, 2000, 3000]
}
df = pd.DataFrame(data=d)

我希望这显示为如下所示:

correlation_d = {
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
     'Year': [2019, 2019, 2019, 2019, 2019],
    'CallsActivity': [10, 20, 30, 40, 50],
    'NewOpportunitiesRevenue': [5000, 10000, 15000, 20000, 'NaN'],
    'WonOpportunitiesRevenue': [1000, 2000, 3000, 'NaN', 'NaN']
}
correlation_df = pd.DataFrame(data=correlation_d)

input(correlation_df)

如果我在这个简单的例子中手动移动列,我可以得到相关性,但我不知道从哪里开始自动化我的实际数据集的研究部分。 我很欣赏对此的见解。

谢谢。

如果我将您的问题解释为:“如何自动为每列选择理想的滞后量?” 那么你可以做的是:做一个循环:1)计算两列之间的相关性,2)将该相关性与已经看到的最新最大相关性进行比较,如果新的相关性大于最新的最大值,则更新最大值包含找到的新关联(因为它更大),否则保持最大值。 每次找到新的最大值时,还记录最新最大值的列行移位(滞后)。 3)将两列中的一列向上/向下移动X行。 4)回到循环的顶部。

循环应该继续,直到你不能再向上/向下移动列,你已经探索了所有合理的滞后。 然后,您将获得观察到的最大相关性以及给出它的偏移量(滞后)。 从一个大的X开始是非常重要的,这样算法可以快速运行并调整X以使其更小和更小,以便在速度上权衡准确性。

我相信这个14分钟的视频也可以帮到你。 它将教您如何进行滚动统计和滚动功能,以便您可以根据函数和现有行自动创建新行: 滚动统计 - 第11页使用Python和Pandas教程进行数据分析

但是,我不确定您是否无法将列向上和向下移动给定滞后量,自动对所有列,或者如果您在确定每列开始的理想滞后量时遇到问题? 我会通过评论问你这个问题,除了我还没有足够的声誉点才能做到这一点......

编辑: 如果要计算“滚动窗口”(继续沿数据移动的子样本)的相关性,也可以使用pandas.rolling_corr()。 但我相信你仍然需要自己在循环中移动数据以找到最佳滞后。 要移动数据,请使用切片器符号df ['1st Column name'] [Shift_variable:]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM