Итак, я иногда кодирую, но мне всегда наскучивает мой код, и я чувствовал, что мне не хватает навыков Python, и я вижу какой-то фрагмент кода, когда я его закончил. Ниже приведен фрагмент, который я сделал сегодня, и я хочу поделиться с вами некоторыми советами о том, как я могу улучшить это и, следовательно, свои навыки Python.
Идея ниже состоит в том, чтобы выполнить регрессию по столбцу и создать три новых столбца с прогнозом на следующие 30, 60 и 90 дней. Код работает нормально и делает то, что я ожидаю, но меня это не устраивает.
Набор данных выглядит примерно так:
f0 | f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 | f11 |
---|---|---|---|---|---|---|---|---|---|---|---|
AA | 1648 | 0 | 0 | 89440 | 40760 | 0 | 2021-01-21 | 0 | 0 | 40760 | 0 |
… | … | … | … | … | … | … | … | … | … | … | … |
AA | 1802 г. | 36196 | 8980 | 89440 | 90380 | 45176 | 2021-03-16 | 2522 | 527 | 0 | 3049 |
BB | 1868 г. | 0 | 0 | 335153 | 87760 | 0 | 2021-01-21 | 0 | 0 | 87760 | 0 |
… | … | … | … | … | … | … | … | … | … | … | … |
BB | 1872 г. | 112758 | 42762 | 335153 | 260860 | 155520 | 2021-03-16 | 0 | 0 | 0 | 0 |
CC | 1868 г. | 0 | 0 | 420774 | 282320 | 0 | 2021-01-21 | 0 | 0 | 282320 | 0 |
… | … | … | … | … | … | … | … | … | … | … | … |
CC | 1872 г. | 360787 | 106921 | 420774 | 762104 | 467708 | 2021-03-16 | 18766 | 3902 | 0 | 22668 |
DD | 1868 г. | 0 | 0 | 86173 | 31000 | 0 | 2021-01-21 | 0 | 0 | 31000 | 0 |
… | … | … | … | … | … | … | … | … | … | … | … |
DD | 1872 г. | 28163 | 3628 | 86173 | 66600 | 31791 | 2021-03-16 | 0 | 0 | 0 | 0 |
df['prev30'] = np.int(0)
df['prev60'] = np.int(0)
df['prev90'] = np.int(0)
for f0 in df['f0'].unique():
dataset = df[df['f0'] == f0]
y = dataset.iloc[:, 2:3].values
X = dataset.iloc[:, 0:1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/4, random_state = 0)
regressor = LinearRegression()
regressor.fit(X_train, y_train)
max_data = dataset['f1'].max()
array = [30,60,90]
for i in array:
if i == 30:
prev = "prev30"
elif i == 60:
prev = "prev60"
else:
prev = "prev90"
new_X = np.array([[max_data + i]])
predic = int(regressor.predict(new_X))
dataset[prev] = predic
print(dataset[dataset["f0"] == f0])