#导入库
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")
wangxishi
2020-09-09
对,比如第一个人的x有6个数值,y就是1,2,3,4,5,6,然后拿x和y做出一元线性方程,y=ax+b,我主要想看的是每个客户的这个一元线性方程里面的a,就是斜率
wangxishi
2020-09-09
对的,近6的代表6月,近1代表1月,可以这么理解,近6就是从现在往前推6个月的,近1就是现在往前1个月的
wangxishi
2020-09-09
示例:
# 导包
import pymysql
# 创建连接对象
mydb = pymysql.connect(
host='localhost', # 数据库主机地址
user="root", # 数据库用户名
password="1234" , # 数据库密码
database=None, # 可以指定连接某个数据库
port=3306, # 端口号, 默认是3306
charset='utf8' # 使用的编码
)
wangxishi
2020-09-09
你下载了pymysql,却没有用,你用的是MySQLdb,它只支持 Python2.x,你的这段代码并没有使用pymysql
wangxishi
2020-09-09
我下载了pymysql的包,但是为什么这段代码运行不了呢
import MySQLdbconn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="mydatabase",charset="utf8")cursor = conn.cursor()if conn:print("data base has already connected")
wangxishi
2020-09-09
可以的,你下载一个pymysql的包,是专门通过python操作mysql数据库的,通过pymysql,你可以创建,连接,操作数据库文件,方法方式非常多,这里没有办法一一赘述。
wangxishi
2020-09-09
In [19]:
import pandas as pddf=pd.read_excel(r'D:\CDA\CDA_PGC\datas.xlsx',sheetname='Sheet1') df
Out[19]:
编号 | 日期 | |
---|---|---|
0 | 123 | 2020-09-09 |
1 | 123 | 2020-09-08 |
2 | 345 | 2020-09-09 |
3 | 345 | 2020-09-08 |
4 | 345 | 2020-09-09 |
5 | 123 | 2020-09-09 |
In [20]:
df=df.drop_duplicates()
In [21]:
df['日期']=df['日期'].dt.date.apply(str)
In [22]:
df
Out[22]:
编号 | 日期 | |
---|---|---|
0 | 123 | 2020-09-09 |
1 | 123 | 2020-09-08 |
2 | 345 | 2020-09-09 |
3 | 345 | 2020-09-08 |
In [23]:
df.to_excel(r'D:\CDA\CDA_PGC\datas2.xlsx',index=None)#删除index列
wangxishi
2020-09-08