Как улучшить навыки программирования?

Итак, я иногда кодирую, но мне всегда наскучивает мой код, и я чувствовал, что мне не хватает навыков 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])

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *