Вопрос или проблема
У меня есть коэффициенты и константа (альфа). Я хочу перемножить и сложить значения, как в этом примере. (это нужно сделать для 300000 строк)
Прогноз = константа + (значениеСтроки1 * кол1) + (-значениеСтроки1 * кол2) + (-значениеСтроки1 *
кол3) + (значениеСтроки1 * кол4) + (значениеСтроки1 * кол5)
У меня есть датафрейм с одной строкой, который содержит коэффициенты и константу, как показано ниже
кол1 | кол2 | кол3 | кол4 | кол5 | константа | |
---|---|---|---|---|---|---|
2.447697e-07 | -5.214072e-07 | -0.000003 | 0.000006 | 555 | 222 |
и другой датафрейм с точно такими же именами, но с ежемесячными значениями.
кол1 | кол2 | кол3 | кол4 | кол5 |
---|---|---|---|---|
16711 | 17961 | 0 | 20 | 55 |
Я попробовал отсортировать столбцы, а затем применить произведение df.dot
.
selected_columns = selected_columns.sort_index(axis=1)
#датафрейм mean_coefficients 21ый (начиная с 0) это константа, поэтому я использую остальные столбцы
selected_columns['predicted_Mcap']=selected_columns.dot(mean_coefficients.iloc[:,0:20])+mean_coefficients['const']
mean_coefficients.columns
результат:
['CashSTInv_w', 'CommonEquity_w', 'GainLossAssetSale_w', 'IncomeTaxes_w', 'LTDebt_w', 'NIbefEIPrefDiv_w', 'NIbefPrefDiv_w', 'NItoCommon_w', 'OtherCA_w', 'OtherCL_w', 'OtherIncome_w', 'OtherLiabilities_w', 'OtherTA_w', 'PPT_w', 'PreTaxIncome_w', 'PrefDiv_w', 'Sales_w', 'TotalAssets', 'TotalDiv_w', 'TotalLiabilities_w', 'const']
причина, по которой я использую mean_coefficients.iloc[:,0:20]
, заключается в том, что я не хочу включать const
в умножение, это просто нужно добавить в конце. пожалуйста, обратите внимание, что моя константа (альфа) сохранена в mean_coefficients
.
selected_columns.columns
результат:
['CashSTInv_w', 'CommonEquity_w', 'GainLossAssetSale_w', 'IncomeTaxes_w', 'LTDebt_w', 'NIbefEIPrefDiv_w', 'NIbefPrefDiv_w', 'NItoCommon_w', 'OtherCA_w', 'OtherCL_w', 'OtherIncome_w', 'OtherLiabilities_w', 'OtherTA_w', 'PPT_w', 'PreTaxIncome_w', 'PrefDiv_w', 'Sales_w', 'TotalAssets', 'TotalDiv_w', 'TotalLiabilities_w']
я рассчитала прогнозное значение, но когда проверила его в Excel, значение не совпало.
я правильно считаю?
Как указано в df.dot()
в документации названия столбцов DataFrame и индекс другого должны содержать одинаковые значения, так как они будут выровнены перед умножением. В противном случае вы получите
ValueError: матрицы не выровнены
Таким образом, у вас есть 2 варианта:
использовать df.dot()
с .T
или транспонированным датафреймом. Ваши названия столбцов будут как индексы и готовы для умножения в виде матрицы. Помните, что названия столбцов в обоих датафреймах должны быть одинаковыми. Даже одна лишняя колонка вызовет ошибку.
selected_columns['predicted_MCAP']=selected_columns.dot(mean_coefficients.iloc[:,1:21].T) + mean_coefficients['const']
чтобы обойти это, я использую массив numpy
result = df1.dot(df2.values)
Ответ или решение
Для решения задачи прогнозирования с использованием коэффициентов и постоянной (альфа) в Python мы можем воспользоваться библиотеками pandas и numpy, которые предлагают удобный функционал для работы с такими вычислениями. Исходя из предоставленных данных и сценария, вам нужно умножить и сложить значения коэффициентов и постоянной для каждой строки вашего большого датафрейма.
Подход к решению
-
Загрузка данных: Предположим, что у вас уже есть два датафрейма:
mean_coefficients
, содержащий коэффициенты и постоянную.selected_columns
, содержащий значения строк.
-
Концепция вычисления: Вы должны умножить каждое значение строки на соответствующий коэффициент и затем сложить результаты. Дополнительно, к этой сумме нужно добавить ваше значение постоянной (альфа).
-
Кодовое решение:
import pandas as pd
# Предположим, что ваши датафреймы уже загружены как mean_coefficients и selected_columns
# Извлечение коэффициентов
coefficients = mean_coefficients.drop(columns='const').iloc[0]
# Извлечение постоянной (альфа)
constant = mean_coefficients['const'].iloc[0]
# Вычисление прогноза
selected_columns['predicted_MCAP'] = selected_columns.dot(coefficients) + constant
Детали выполнения
-
Совпадение колонок: Убедитесь, что названия колонок в
selected_columns
иmean_coefficients
точно совпадают, за исключением столбца с постоянной, иначе методdot
не сработает правильно. -
Проверка результатов: После выполнения вычислений рекомендуется проверить некоторые из прогнозируемых значений вручную с помощью Excel или другого инструмента, чтобы убедиться в правильности результата.
Оптимизация SEO
Использование таких ключевых фраз, как "расчет прогнозного значения на основе коэффициентов и постоянной в Python", сделает текст более доступным для поиска. Попробуйте включить эти фразы естественным образом, не теряя делового стиля изложения.
Заключение
В конечном итоге, чтобы ваши расчеты были корректными, важно внимание к деталям: начиная от правильного именования данных до точности математических операций. Мой код предлагает эффективный и надежный способ выполнения ваших прогнозов, используя возможности pandas.