Anonymous
AttributeError: объект «NoneType» не имеет атрибута «столбцы» BPTK-Py
Сообщение
Anonymous » 03 ноя 2025, 21:09
Код: Выделить всё
Depreciation_DM = model.constant("Depreciation_DM")
Depreciation_DM.equation = 0.0708
DMPIncRate = model.constant("DMPIncRate")
DMPIncRate.equation = 0.0284
DMPInc = model.flow("DMPInc")
DM_Price = model.stock("DM_Price")
DM_Price.initial_value = 4.2e+07
DM_Price.equation = DMPInc
DMPInc.equation = DM_Price * DMPIncRate
Average_Expected_Years_Kept_Battery_DM = model.constant("Average_Expected_Years_Kept_Battery_DM")
Average_Expected_Years_Kept_Battery_DM.equation = 6.0
Depreciation_Battery_DM = model.constant("Depreciation_Battery_DM")
Depreciation_Battery_DM.equation = 0.00033
Battery_Price_DM = model.converter("Battery_Price_DM")
Battery_Price_DM.equation = 0.25 * DM_Price
Battery_Resale_DM = model.converter("Battery_Resale_DM")
Battery_Resale_DM.equation = ((Charging_Frequency_DM * Average_Expected_Years_Kept_Battery_DM)* Depreciation_Battery_DM) * Battery_Price_DM
Discount_Rate_DM = model.constant("Discount_Rate_DM")
Discount_Rate_DM.equation = 0.0838
Battery_Resale_DM = model.converter("Battery_Resale_DM")
Battery_Resale_DM.equation = (
(Charging_Frequency_DM * Average_Expected_Years_Kept_Battery_DM) *
Depreciation_Battery_DM
) * Battery_Price_DM
Resale_Value_DM = model.converter("Resale_Value_DM")
Resale_Value_DM._function_string = (
"lambda model, t: ("
"pow(1.0 - model.memoize('Depreciation_DM', t), "
"model.memoize('Average_Expected_Years_Kept_DM', t))"
"* model.memoize('DM_Price', t)"
"+ model.memoize('Battery_Resale_DM', t)"
") / "
"pow(1.0 + model.memoize('Discount_Rate_DM', t), "
"(model.memoize('Average_Expected_Years_Kept_DM', t) - 1.0))"
)
Resale_Value_DM.generate_function()
Purchase_Tax_Subsidy_DM_pct = model.converter("Purchase_Tax_Subsidy_DM_pct")
Purchase_Tax_Subsidy_DM_pct._function_string = (
"lambda model, t: 0.11 if t < 2023.0 else 0.01"
)
Purchase_Tax_Subsidy_DM_pct.generate_function()
Price_Subsidy_DM = model.converter("Price_Subsidy_DM")
Price_Subsidy_DM._function_string = (
"lambda model, t: 0.0 if t < 2023.0 else 7e+06"
)
Price_Subsidy_DM.generate_function()
Purchase_Cost_After_Subsidies_DM = model.converter("Purchase_Cost_After_Subsidies_DM")
Purchase_Cost_After_Subsidies_DM.equation = ((DM_Price - Price_Subsidy_DM) + (Purchase_Tax_Subsidy_DM_pct * DM_Price))
model.points["PKB_%_DM_Subsidy"] = [
[2015, 0.02],
[2016, 0.02],
[2017, 0.02],
[2018, 0.02],
[2019, 0.02],
[2020, 0.02],
[2021, 0.002],
[2022, 0.002],
[2023, 0.0],
[2024, 0.0],
[2025, 0.0],
[2026, 0.0],
[2027, 0.0],
[2028, 0.0],
[2029, 0.0],
[2030, 0.0],
[2031, 0.0],
[2032, 0.0],
[2033, 0.0],
[2034, 0.0],
[2035, 0.0],
]
PKB_pct_DM_Subsidy = model.converter("PKB_%_DM_Subsidy")
PKB_pct_DM_Subsidy.equation = sd.lookup(sd.time(), "PKB_%_DM_Subsidy")
SWDKLLJ = model.constant("SWDKLLJ")
SWDKLLJ.equation = 35000.0
Yearly_Tax_Cost_DM_After_Subsidies = model.converter("Yearly_Tax_Cost_DM_After_Subsidies")
Yearly_Tax_Cost_DM_After_Subsidies._function_string = (
"lambda model, t: ("
"model.memoize('PKB_%_DM_Subsidy', t) * "
"pow(1.0 - model.memoize('Depreciation_DM', t), (t - 2014.0 - 1.0)) * "
"model.memoize('Resale_Value_DM', t)"
") + model.memoize('SWDKLLJ', t)"
)
Yearly_Tax_Cost_DM_After_Subsidies.generate_function()
Сначала я использовал первый скрипт, и в результате возникла ошибка...
Код: Выделить всё
bptk.plot_scenarios(
scenarios="base",
scenario_managers="smDm vs cm",
equations=["Yearly_Tax_Cost_DM_After_Subsidies"],
series_names={},
return_df=True)
Код: Выделить всё
2025-11-03 16:00:25.551125, [ERROR] No output data produced.**
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipython-input-2983896965.py in ()
30 #PKB_pct_DM_Subsidy* ((1.0 - Depreciation_DM) ** (Time - 2014 - 1))* Resale_Value_DM) + SWDKLLJ
31
---> 32 bptk.plot_scenarios(
33 scenarios="base",
34 scenario_managers="smDm vs cm",
________________________________________
1 frames
________________________________________
/usr/local/lib/python3.12/dist-packages/BPTK_Py/visualizations/visualize.py in plot(self, df, return_df, visualize_from_period, visualize_to_period, stacked, kind, title, alpha, x_label, y_label, start_date, freq, series_names, format)
63
64 new_columns = {}
---> 65 for column in df.columns:
66 for series_names_key in series_names_keys:
67 if series_names_key in column:
AttributeError: 'NoneType' object has no attribute 'columns'
После того, как мне поставили диагноз второй скрипт, оказалось, что значение «Yearly_Tax_Cost_DM_After_Subsidies» действительно существует.
Код: Выделить всё
print("PKB 2015→", model.memoize("PKB_%_DM_Subsidy", 2015.0))
print("Resale 2015→", model.memoize("Resale_Value_DM", 2015.0))
print("SWDKLLJ 2015→", model.memoize("SWDKLLJ", 2015.0))
print("Tax DM 2015→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2015.0))
print("Tax DM 2016→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2016.0))
print("Tax DM 2017→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2017.0))
print("Tax DM 2018→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2018.0))
print("Tax DM 2019→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2019.0))
print("Tax DM 2020→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2020.0))
print("Tax DM 2021→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2021.0))
print("Tax DM 2022→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2022.0))
print("Tax DM 2035→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2035.0))
Код: Выделить всё
PKB 2015→ 0.02
Resale 2015→ 20247218.066840753
SWDKLLJ 2015→ 35000.0
Tax DM 2015→ 439944.36133681505
Tax DM 2016→ 421960.49068990693
Tax DM 2017→ 404775.2966868149
Tax DM 2018→ 388353.30952273984
Tax DM 2019→ 372660.63463245216
Tax DM 2020→ 357664.882732768
Tax DM 2021→ 65833.51029718903
Tax DM 2022→ 64464.17190476344
Tax DM 2035→ 35000.0
Однако мне нужен первый сценарий для моего моделирования, поскольку в моем моделировании еще есть много других столбцов, которые зависят от значения в столбце «Yearly_Tax_Cost_DM_After_Subsidies». Почему возникает ошибка AttributeError: объект «NoneType» не имеет атрибута «столбцы»???
Подробнее здесь:
https://stackoverflow.com/questions/798 ... ns-bptk-py
1762193386
Anonymous
[code]Depreciation_DM = model.constant("Depreciation_DM") Depreciation_DM.equation = 0.0708 DMPIncRate = model.constant("DMPIncRate") DMPIncRate.equation = 0.0284 DMPInc = model.flow("DMPInc") DM_Price = model.stock("DM_Price") DM_Price.initial_value = 4.2e+07 DM_Price.equation = DMPInc DMPInc.equation = DM_Price * DMPIncRate Average_Expected_Years_Kept_Battery_DM = model.constant("Average_Expected_Years_Kept_Battery_DM") Average_Expected_Years_Kept_Battery_DM.equation = 6.0 Depreciation_Battery_DM = model.constant("Depreciation_Battery_DM") Depreciation_Battery_DM.equation = 0.00033 Battery_Price_DM = model.converter("Battery_Price_DM") Battery_Price_DM.equation = 0.25 * DM_Price Battery_Resale_DM = model.converter("Battery_Resale_DM") Battery_Resale_DM.equation = ((Charging_Frequency_DM * Average_Expected_Years_Kept_Battery_DM)* Depreciation_Battery_DM) * Battery_Price_DM Discount_Rate_DM = model.constant("Discount_Rate_DM") Discount_Rate_DM.equation = 0.0838 Battery_Resale_DM = model.converter("Battery_Resale_DM") Battery_Resale_DM.equation = ( (Charging_Frequency_DM * Average_Expected_Years_Kept_Battery_DM) * Depreciation_Battery_DM ) * Battery_Price_DM Resale_Value_DM = model.converter("Resale_Value_DM") Resale_Value_DM._function_string = ( "lambda model, t: (" "pow(1.0 - model.memoize('Depreciation_DM', t), " "model.memoize('Average_Expected_Years_Kept_DM', t))" "* model.memoize('DM_Price', t)" "+ model.memoize('Battery_Resale_DM', t)" ") / " "pow(1.0 + model.memoize('Discount_Rate_DM', t), " "(model.memoize('Average_Expected_Years_Kept_DM', t) - 1.0))" ) Resale_Value_DM.generate_function() Purchase_Tax_Subsidy_DM_pct = model.converter("Purchase_Tax_Subsidy_DM_pct") Purchase_Tax_Subsidy_DM_pct._function_string = ( "lambda model, t: 0.11 if t < 2023.0 else 0.01" ) Purchase_Tax_Subsidy_DM_pct.generate_function() Price_Subsidy_DM = model.converter("Price_Subsidy_DM") Price_Subsidy_DM._function_string = ( "lambda model, t: 0.0 if t < 2023.0 else 7e+06" ) Price_Subsidy_DM.generate_function() Purchase_Cost_After_Subsidies_DM = model.converter("Purchase_Cost_After_Subsidies_DM") Purchase_Cost_After_Subsidies_DM.equation = ((DM_Price - Price_Subsidy_DM) + (Purchase_Tax_Subsidy_DM_pct * DM_Price)) model.points["PKB_%_DM_Subsidy"] = [ [2015, 0.02], [2016, 0.02], [2017, 0.02], [2018, 0.02], [2019, 0.02], [2020, 0.02], [2021, 0.002], [2022, 0.002], [2023, 0.0], [2024, 0.0], [2025, 0.0], [2026, 0.0], [2027, 0.0], [2028, 0.0], [2029, 0.0], [2030, 0.0], [2031, 0.0], [2032, 0.0], [2033, 0.0], [2034, 0.0], [2035, 0.0], ] PKB_pct_DM_Subsidy = model.converter("PKB_%_DM_Subsidy") PKB_pct_DM_Subsidy.equation = sd.lookup(sd.time(), "PKB_%_DM_Subsidy") SWDKLLJ = model.constant("SWDKLLJ") SWDKLLJ.equation = 35000.0 Yearly_Tax_Cost_DM_After_Subsidies = model.converter("Yearly_Tax_Cost_DM_After_Subsidies") Yearly_Tax_Cost_DM_After_Subsidies._function_string = ( "lambda model, t: (" "model.memoize('PKB_%_DM_Subsidy', t) * " "pow(1.0 - model.memoize('Depreciation_DM', t), (t - 2014.0 - 1.0)) * " "model.memoize('Resale_Value_DM', t)" ") + model.memoize('SWDKLLJ', t)" ) Yearly_Tax_Cost_DM_After_Subsidies.generate_function() [/code] Сначала я использовал первый скрипт, и в результате возникла ошибка... [code]bptk.plot_scenarios( scenarios="base", scenario_managers="smDm vs cm", equations=["Yearly_Tax_Cost_DM_After_Subsidies"], series_names={}, return_df=True) [/code] [code]2025-11-03 16:00:25.551125, [ERROR] No output data produced.** --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) /tmp/ipython-input-2983896965.py in () 30 #PKB_pct_DM_Subsidy* ((1.0 - Depreciation_DM) ** (Time - 2014 - 1))* Resale_Value_DM) + SWDKLLJ 31 ---> 32 bptk.plot_scenarios( 33 scenarios="base", 34 scenario_managers="smDm vs cm", ________________________________________ 1 frames ________________________________________ /usr/local/lib/python3.12/dist-packages/BPTK_Py/visualizations/visualize.py in plot(self, df, return_df, visualize_from_period, visualize_to_period, stacked, kind, title, alpha, x_label, y_label, start_date, freq, series_names, format) 63 64 new_columns = {} ---> 65 for column in df.columns: 66 for series_names_key in series_names_keys: 67 if series_names_key in column: AttributeError: 'NoneType' object has no attribute 'columns' [/code] После того, как мне поставили диагноз второй скрипт, оказалось, что значение «Yearly_Tax_Cost_DM_After_Subsidies» действительно существует. [code]print("PKB 2015→", model.memoize("PKB_%_DM_Subsidy", 2015.0)) print("Resale 2015→", model.memoize("Resale_Value_DM", 2015.0)) print("SWDKLLJ 2015→", model.memoize("SWDKLLJ", 2015.0)) print("Tax DM 2015→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2015.0)) print("Tax DM 2016→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2016.0)) print("Tax DM 2017→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2017.0)) print("Tax DM 2018→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2018.0)) print("Tax DM 2019→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2019.0)) print("Tax DM 2020→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2020.0)) print("Tax DM 2021→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2021.0)) print("Tax DM 2022→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2022.0)) print("Tax DM 2035→", model.memoize("Yearly_Tax_Cost_DM_After_Subsidies", 2035.0)) [/code] [code]PKB 2015→ 0.02 Resale 2015→ 20247218.066840753 SWDKLLJ 2015→ 35000.0 Tax DM 2015→ 439944.36133681505 Tax DM 2016→ 421960.49068990693 Tax DM 2017→ 404775.2966868149 Tax DM 2018→ 388353.30952273984 Tax DM 2019→ 372660.63463245216 Tax DM 2020→ 357664.882732768 Tax DM 2021→ 65833.51029718903 Tax DM 2022→ 64464.17190476344 Tax DM 2035→ 35000.0 [/code] Однако мне нужен первый сценарий для моего моделирования, поскольку в моем моделировании еще есть много других столбцов, которые зависят от значения в столбце «Yearly_Tax_Cost_DM_After_Subsidies». Почему возникает ошибка AttributeError: объект «NoneType» не имеет атрибута «столбцы»??? Подробнее здесь: [url]https://stackoverflow.com/questions/79808087/attributeerror-nonetype-object-has-no-attribute-columns-bptk-py[/url]