簡體   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