循环数据帧列以进行简单的线性回归?

2024-04-18 06:09:43 发布

您现在位置:Python中文网/ 问答频道 /正文

import pandas as pd
import numpy as np

from sklearn.linear_model import LinearRegression

df = pd.read_excel("Book1.xlsx")

for column in df:

    X = df["Row Labels"]

    Y = df[column]
    y1 =Y.values.reshape(-1,1)
    x1 =X.values.reshape(-1,1)
    regressor = LinearRegression()
    regressor.fit(x1, y1)
    y_new = []
    y_i = []
    for i in range(12,24):
        y_new.append(regressor.predict([[i]]))
        y_i.append(i)

    df2 = pd.DataFrame({'column':y_new})

我编写这段代码是为了循环遍历dataframe列,进行简单的线性回归,并将所有预测值放入dataframe中。但它只预测最后一列的值


Tags: inimportdfnewforascolumnpd
1条回答
网友
1楼 · 发布于 2024-04-18 06:09:43

df2 = pd.DataFrame({'column':y_new})创建一个名为'column'的列(不是保存在变量column中的名称)。此外,在每次迭代中都会重新创建df2,每次迭代只保存最后一次y_new

我认为您想要的是在每次迭代中在df2中创建一个新列:

import pandas as pd
import numpy as np

from sklearn.linear_model import LinearRegression

df = pd.read_excel("Book1.xlsx")

df2 = pd.DataFrame()

for column in df:

    X = df["Row Labels"]

    Y = df[column]
    y1 =Y.values.reshape(-1,1)
    x1 =X.values.reshape(-1,1)
    regressor = LinearRegression()
    regressor.fit(x1, y1)
    y_new = []
    y_i = []
    for i in range(12,24):
        y_new.append(regressor.predict([[i]]))
        y_i.append(i)

    df2[column] = y_new

相关问题 更多 >