Я использовал следующий код для импорта файла Excel в Python:
import pandas as pd
file_name = (file.direction)
ExcelData = pd.read_excel(file_name, sheet_name = "File Name", header = 0)
Data = ExcelData.head()
После этого я делаю:
df = pd.DataFrame(Data)
Моя проблема в том, что я хочу создать модель линейной регрессии из класса sklearn.linear_model, и для этого мне нужно определить столбцы X и Y. Вопрос в том, как я импортировал данные, как я могу ссылаться на столбцы в переменных x и y? Прямо сейчас я делаю следующее:
X = df[["ColumnName1", "ColumnName2", "ColumnName3"]]
y = df["ColumnName4"]
Если кто-нибудь знает, как поместить столбцы в переменные x и y, я был бы очень признателен :)
Почему вы используете ExcelData.head()? Это позволит получить только первые 5 строк из файла Excel. Разве вы не хотите использовать все строки для модели линейной регрессии?
Мне известна функция head(), начиная с 5 строк, чтобы убедиться, что данные импортируются правильно, после этого функция head будет удалена. Однако я знал, что данные служат фреймом данных, спасибо за это.






Чтобы использовать метод «подгонки» из scikit-learn linear_model, вы можете напрямую использовать DataFrame pandas для вектора X и серию pandas для вашего y.
Это должно работать, и вы можете использовать приведенный ниже код в качестве основы:
import pandas as pd
from sklearn import linear_model
my_df = pd.DataFrame({'col1': [0,1,2], 'col2': [0.5,1.5,2.5], 'col3': [1,2,3]})
reg = linear_model.LinearRegression()
X = my_df[['col1','col2']]
y = my_df['col3']
reg.fit(X, y)
reg.coef_
Вы можете ссылаться на переменные столбца, просто используя имена их заголовков, указанные в файле xlsx.
Вы можете попробовать что-то вроде этого:
import pandas as pd
from sklearn.linear_model import LinearRegression
df = pd.read_excel(r'You file name.xlsx')
X = df.drop(columns = ['the column name for the output'])
Y = df['the column name for the output']
model = LinearRegression()
model.fit(X, Y)
model.predict(<Your X inputs>)
Если у вас есть какие-либо категориальные переменные, я рекомендую выполнить горячее кодирование ваших данных с помощью from sklearn.preprocessing import OneHotEncoder перед отправкой их в модель линейной регрессии. Это связано с тем, что все данные должны быть в числовом формате. Надеюсь это поможет
Это то, что мне нужно, спасибо, мне не хватало функции df.drop() для импорта определенных столбцов. Спасибо!
Dataуже является DataFrame, поэтомуpd.DataFrame(Data)— бесполезный шаг. Как вы думаете, что это делает?