Python 数据帧中的数据转置
我有一个大数据框7 GB csv,通过pandas.read_csv加载,结构如下:Python 数据帧中的数据转置,python,pandas,dataframe,linear-regression,transpose,Python,Pandas,Dataframe,Linear Regression,Transpose,我有一个大数据框7 GB csv,通过pandas.read_csv加载,结构如下: In [1]: df Out[1]: ID Month Transaction_Amount 1 2014/01 10 1 2014/02 20 1 2014/03 10 1 2014/04 20 1
In [1]: df
Out[1]:
ID Month Transaction_Amount
1 2014/01 10
1 2014/02 20
1 2014/03 10
1 2014/04 20
1 2014/05 10
1 2014/06 20
1 2014/07 10
1 2014/08 20
1 2014/09 10
1 2014/10 20
1 2014/11 10
1 2014/12 20
2 2014/01 15
2 2014/02 25
2 2014/03 15
2 2014/04 25
...
10000000 2014/11 13
10000000 2014/12 23
In [2]: my_new_transposed_df
Out[2]:
ID 01 02 03 04 ... 11 12
1 10 20 10 20 10 20
2 15 25 15 25 ... 15 25
...
10000000 13 23 13 23 ... 13 23
我想在12个月的数据中对每个ID进行线性回归。最终目标是获得每个线性回归的斜率值,并将该值与ID关联。我的第一个想法是,要执行此回归,我应该创建一个具有以下结构的新数据框:
In [1]: df
Out[1]:
ID Month Transaction_Amount
1 2014/01 10
1 2014/02 20
1 2014/03 10
1 2014/04 20
1 2014/05 10
1 2014/06 20
1 2014/07 10
1 2014/08 20
1 2014/09 10
1 2014/10 20
1 2014/11 10
1 2014/12 20
2 2014/01 15
2 2014/02 25
2 2014/03 15
2 2014/04 25
...
10000000 2014/11 13
10000000 2014/12 23
In [2]: my_new_transposed_df
Out[2]:
ID 01 02 03 04 ... 11 12
1 10 20 10 20 10 20
2 15 25 15 25 ... 15 25
...
10000000 13 23 13 23 ... 13 23
此时,我将在每条直线上执行回归,并记录斜率:
In [1]: my_new_transposed_df['linear_reg_slope'] = my_new_transposed_df.perform_linear_regression(rows=(1:12))
然而,我在完成这两个步骤时遇到了困难,我想第一个步骤是转换?第二个是执行回归 您应该使用groupby将数据分组到多个数据帧中,每个ID对应一个数据帧,然后对每个数据帧进行回归。退房,你能详细说明一下吗?我将groupby与sum结合使用,对多行数据求和,但不执行换位。我的意思是,您不想执行换位。您只需要对数据进行分组,并对每个组执行操作。您可以执行df.groupby'ID'['Transaction Amount'].applymyFunction,其中myFunction是一个函数,它获取一系列事务数据,并进行回归,返回斜率或任何您想要的其他数据。实际上,你不需要创建巨大的转置数据帧,只需要对每个ID分别进行回归。您可以执行类似df.set_index['ID','Month']的操作。取消堆栈。但是,正如BrenBarn所说,如果不需要创建额外的DF,最好不要创建。我正在研究使用sklearn.linear_model.LinearRegression模块,但不确定BrenBarn建议在apply函数中使用LinearRegression的语法。