2016-03-19 71 views
3

我有包含客戶購買歷史記錄的數據以及每個訂單的相應銷售價值。我想隨着時間的推移,每個客戶都會有某種趨勢。我想過每個客戶的迴歸,然後提取係數。這是否可以用高效的方式處理大熊貓(我在數據中獲得了大約1000000筆交易)?如果是的話,我該怎麼做?每個客戶數據的迴歸

爲了更好地理解這裏的數據結構。

 Date  Customer_ID  Sales_Value  
    2014-07-01   1   62.946002 
    2014-12-01   2   62.947733 
    2013-05-01   3   27.328221 
    2015-01-01   1   30.023658 

這將是交易數據的結構與其他幾列在這種情況下不需要的結構。該數據不幸的是在月份的基礎上,所以對於日期,你將只有這種格式:20xx-xx-01

我現在想要的是一個數組,爲我提供給我每個客戶的迴歸係數根據Sales_Value在整個時間間隔內對交易數據進行分析。所以基本上是這樣的:

Customer_ID trend_coeff 
    1    -0,5 
    2    0 
    3    0 

(本爲trend_coeff數字當然是由只是爲了演示)

謝謝您的幫助!

+0

大熊貓是不是一臺機器學習模塊。你可能想看看[Scikit-learn](http://scikit-learn.org/stable/modules/linear_model.html) –

+0

是的,我知道熊貓本身不提供任何迴歸方法。我寧願考慮如何安排或準備數據,以便以有效的方式爲每位客戶進行迴歸。 – TheDude

+0

然後顯示一個數據樣本不會受到傷害。 –

回答

2

假設你有這樣的開始:

import pandas as pd 

df = pd.DataFrame({ 
    'a': [1, 2, 3, 1, 2, 3, 1, 2, 3], 
    'b': range(9), 
    'c': range(1, 10)}) 
>>> df 
    a b c 
0 1 0 1 
1 2 1 2 
2 3 2 3 
3 1 3 4 
4 2 4 5 
5 3 5 6 
6 1 6 7 
7 2 7 8 
8 3 8 9 

要爲'a'每個值'b''c'之間進行線性迴歸,你可以這樣做:

from sklearn import linear_model 

def find_for_a(g): 
    p = linear_model.LinearRegression().fit(g.b.values[:, None], g.c.values) 
    return pd.Series({'coef': p.coef_[0], 'intercept': p.intercept_}) 

>>> df.groupby('a').apply(find_for_a) 
    coef intercept 
a  
1 1.0  1.0 
2 1.0  1.0 
3 1.0  1.0