Conditions | 3 |
Total Lines | 180 |
Code Lines | 86 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | import os |
||
185 | def CTS_demand_scale(aggregation_level): |
||
186 | """ |
||
187 | |||
188 | Description: caling the demand curves to the annual demand of the respective aggregation level |
||
189 | |||
190 | |||
191 | Parameters |
||
192 | ---------- |
||
193 | aggregation_level : str |
||
194 | aggregation_level : str |
||
195 | if further processing is to be done in zensus cell level 'other' |
||
196 | else 'dsitrict' |
||
197 | |||
198 | Returns |
||
199 | ------- |
||
200 | CTS_per_district : pandas.DataFrame |
||
201 | if aggregation ='district' |
||
202 | Profiles scaled up to annual demand |
||
203 | else |
||
204 | 0 |
||
205 | CTS_per_grid : pandas.DataFrame |
||
206 | if aggregation ='district' |
||
207 | Profiles scaled up to annual demandd |
||
208 | else |
||
209 | 0 |
||
210 | CTS_per_zensus : pandas.DataFrame |
||
211 | if aggregation ='district' |
||
212 | 0 |
||
213 | else |
||
214 | Profiles scaled up to annual demand |
||
215 | |||
216 | """ |
||
217 | scenarios = ["eGon2035", "eGon100RE"] |
||
218 | |||
219 | CTS_district = pd.DataFrame() |
||
220 | CTS_grid = pd.DataFrame() |
||
221 | CTS_zensus = pd.DataFrame() |
||
222 | |||
223 | for scenario in scenarios: |
||
224 | ( |
||
225 | CTS_per_district, |
||
226 | CTS_per_grid, |
||
227 | CTS_per_zensus, |
||
228 | ) = cts_demand_per_aggregation_level(aggregation_level, scenario) |
||
229 | CTS_per_district = CTS_per_district.transpose() |
||
230 | CTS_per_grid = CTS_per_grid.transpose() |
||
231 | CTS_per_zensus = CTS_per_zensus.transpose() |
||
232 | |||
233 | demand = db.select_dataframe( |
||
234 | f""" |
||
235 | SELECT demand, zensus_population_id |
||
236 | FROM demand.egon_peta_heat |
||
237 | WHERE sector = 'service' |
||
238 | AND scenario = '{scenario}' |
||
239 | ORDER BY zensus_population_id |
||
240 | """ |
||
241 | ) |
||
242 | |||
243 | if aggregation_level == "district": |
||
244 | |||
245 | district_heating = db.select_dataframe( |
||
246 | f""" |
||
247 | SELECT area_id, zensus_population_id |
||
248 | FROM demand.egon_map_zensus_district_heating_areas |
||
249 | WHERE scenario = '{scenario}' |
||
250 | """ |
||
251 | ) |
||
252 | |||
253 | CTS_demands_district = pd.merge( |
||
254 | demand, |
||
255 | district_heating, |
||
256 | on="zensus_population_id", |
||
257 | how="inner", |
||
258 | ) |
||
259 | CTS_demands_district.drop( |
||
260 | "zensus_population_id", axis=1, inplace=True |
||
261 | ) |
||
262 | CTS_demands_district = CTS_demands_district.groupby( |
||
263 | "area_id" |
||
264 | ).sum() |
||
265 | |||
266 | CTS_per_district = pd.merge( |
||
267 | CTS_per_district, |
||
268 | CTS_demands_district[["demand"]], |
||
269 | how="inner", |
||
270 | right_on=CTS_per_district.index, |
||
271 | left_on=CTS_demands_district.index, |
||
272 | ) |
||
273 | |||
274 | CTS_per_district = CTS_per_district.rename( |
||
275 | columns={"key_0": "area_id"} |
||
276 | ) |
||
277 | CTS_per_district.set_index("area_id", inplace=True) |
||
278 | |||
279 | CTS_per_district = CTS_per_district[ |
||
280 | CTS_per_district.columns[:-1] |
||
281 | ].multiply(CTS_per_district.demand, axis=0) |
||
282 | |||
283 | CTS_per_district.insert(0, "scenario", scenario) |
||
284 | |||
285 | CTS_district = CTS_district.append(CTS_per_district) |
||
286 | CTS_district = CTS_district.sort_index() |
||
287 | |||
288 | |||
289 | |||
290 | mv_grid_ind = db.select_dataframe( |
||
291 | f""" |
||
292 | SELECT bus_id, a.zensus_population_id |
||
293 | FROM boundaries.egon_map_zensus_grid_districts a |
||
294 | |||
295 | LEFT JOIN demand.egon_map_zensus_district_heating_areas b |
||
296 | ON a.zensus_population_id = b.zensus_population_id |
||
297 | |||
298 | JOIN demand.egon_peta_heat c |
||
299 | ON a.zensus_population_id = c.zensus_population_id |
||
300 | |||
301 | WHERE b.scenario = '{scenario}' |
||
302 | AND c.scenario = '{scenario}' |
||
303 | AND c.sector = 'service' |
||
304 | """ |
||
305 | ) |
||
306 | |||
307 | CTS_demands_grid = pd.merge( |
||
308 | demand, |
||
309 | mv_grid_ind[["bus_id", "zensus_population_id"]], |
||
310 | on="zensus_population_id", |
||
311 | how="inner", |
||
312 | ) |
||
313 | |||
314 | CTS_demands_grid.drop("zensus_population_id", axis=1, inplace=True) |
||
315 | CTS_demands_grid = CTS_demands_grid.groupby("bus_id").sum() |
||
316 | |||
317 | CTS_per_grid = pd.merge( |
||
318 | CTS_per_grid, |
||
319 | CTS_demands_grid[["demand"]], |
||
320 | how="inner", |
||
321 | right_on=CTS_per_grid.index, |
||
322 | left_on=CTS_demands_grid.index, |
||
323 | ) |
||
324 | |||
325 | CTS_per_grid = CTS_per_grid.rename(columns={"key_0": "bus_id"}) |
||
326 | CTS_per_grid.set_index("bus_id", inplace=True) |
||
327 | |||
328 | CTS_per_grid = CTS_per_grid[CTS_per_grid.columns[:-1]].multiply( |
||
329 | CTS_per_grid.demand, axis=0 |
||
330 | ) |
||
331 | |||
332 | CTS_per_grid.insert(0, "scenario", scenario) |
||
333 | |||
334 | CTS_grid = CTS_grid.append(CTS_per_grid) |
||
335 | CTS_grid = CTS_grid.sort_index() |
||
336 | |||
337 | CTS_per_zensus = 0 |
||
338 | |||
339 | else: |
||
340 | CTS_per_district = 0 |
||
341 | CTS_per_grid = 0 |
||
342 | |||
343 | CTS_per_zensus = pd.merge( |
||
344 | CTS_per_zensus, |
||
345 | demand, |
||
346 | how="inner", |
||
347 | right_on=CTS_per_zensus.index, |
||
348 | left_on=demand.zensus_population_id, |
||
349 | ) |
||
350 | CTS_per_zensus = CTS_per_zensus.drop("key_0", axis=1) |
||
351 | CTS_per_zensus.set_index("zensus_population_id", inplace=True) |
||
352 | |||
353 | CTS_per_zensus = CTS_per_zensus[ |
||
354 | CTS_per_zensus.columns[:-1] |
||
355 | ].multiply(CTS_per_zensus.demand, axis=0) |
||
356 | CTS_per_zensus.insert(0, "scenario", scenario) |
||
357 | |||
358 | CTS_per_zensus.reset_index(inplace=True) |
||
359 | |||
360 | CTS_zensus = CTS_zensus.append(CTS_per_grid) |
||
361 | CTS_zensus = CTS_zensus.set_index("bus_id") |
||
362 | CTS_zensus = CTS_zensus.sort_index() |
||
363 | |||
364 | return CTS_district, CTS_grid, CTS_zensus |