每个客户数据的回归分析

3
我有一些包含客户购买历史及其每个订单的销售价值的数据。我希望能够对每个客户的开支随时间的变化趋势进行分析。我想到了对每个客户进行回归并在之后提取系数。请问用pandas是否可以高效地实现这一过程(我的数据中大约有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。
现在我想要一个数组,为每个客户提供基于整个交易数据时间间隔内销售价值的回归系数。因此基本上就像这样:
Customer_ID  trend_coeff
  1             -0,5
  2               0
  3               0

(趋势系数的数字当然仅用于演示)
谢谢您的帮助!

Pandas不是一个机器学习模块。你可能想要看看Scikit-learn。 - Gustavo Bezerra
是的,我知道pandas本身并不提供任何回归方法。我更多地考虑了如何安排或准备数据以有效地为每个客户进行回归分析。 - TheDude
那么展示一份数据样本也无妨。 - Gustavo Bezerra
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接