如图,我有每个客户近6-近1的数据,想算出每个客户近6-近1数据的斜率,每个客户的斜率都要算出来,x 是近1到近6这6列的数据,y取1,2,3,4,5,6就可以,因为y代表月份,近1个月到近6个月的月份 代表y
测试文件已传








还有个问题,我这个代码里面,近6的数代表前6个月的数据,对应的y为“1”,那么如果我的斜率是正数,就说明我的近6到近1的数据是上升趋势对吧

我这样跑出来为什么斜率都是空的呢,只有一个有值
for i in range(rows):
reg=linear_model.LinearRegression()
id=data2["credit_no"][i]
x=data2.loc[i,"近6个月里程数":"近1个月里程数"].values.reshape(6,1)
y=[1,2,3,4,5,6]
try:
reg.fit(x,y)
coef=reg.coef_[0]
except:
coef="异常情况"
data2.loc[i,"斜率"]=coef

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
# 读取数据
data_1 = pd.read_excel("直线.xlsx",index_col = "序号")
data_1
#创建一个拟合直线的函数
def linear_regression(x, y):
N = len(x)
sumx = sum(x)
sumy = sum(y)
sumx2 = sum(x ** 2)
sumxy = sum(x * y)
A = np.mat([[N, sumx], [sumx, sumx2]])
b = np.array([sumy, sumxy])
return np.linalg.solve(A, b)
slope = []
for i in range(288):
slope.append(list(linear_regression(data_1.iloc[i],b))[0])
slope

#导入库
import pandas as pd
import numpy as np
#导入数据
data=pd.read_excel("C:\\Users\\Administrator\\Desktop\\1599639998_298148.xlsx")
from sklearn import linear_model
#将没有求得的斜率预设为缺失值
data["斜率"]=np.nan
#求数据行数
rows=data.shape[0]
#从第一行(第一个人)开始,进行循环,多少行数据就循环多少次,做多少个回归
for i in range(rows):
reg=linear_model.LinearRegression()
#调取第i行的x数据
id=data["序号"][i]
x=data.loc[i,"近6":"近1"].values.reshape(6,1)
y=[1,2,3,4,5,6]
#如果遇到不能回归的情况可以跳过去,比如缺失值太多无法回归
try:
reg.fit(x,y)
coef=reg.coef_[0]
except:
coef="异常情况"
data.loc[i,"斜率"]=coef
#将结果导出
data.to_excel("C:\\Users\\Administrator\\Desktop\\结果.xlsx")