edisgo.network.timeseries.TimeSeries ==================================== .. py:class:: edisgo.network.timeseries.TimeSeries(**kwargs) Holds component-specific active and reactive power time series. All time series are fixed time series that in case of flexibilities result after application of a heuristic or optimisation. They can be used for power flow calculations. Also holds any raw time series data that was used to generate component-specific time series in attribute `time_series_raw`. See :class:`~.network.timeseries.TimeSeriesRaw` for more information. :param timeindex: Can be used to define a time range for which to obtain the provided time series and run power flow analysis. Default: None. :type timeindex: :pandas:`pandas.DatetimeIndex`, optional .. attribute:: time_series_raw Raw time series. See :class:`~.network.timeseries.TimeSeriesRaw` for more information. :type: :class:`~.network.timeseries.TimeSeriesRaw` .. py:attribute:: time_series_raw .. py:property:: is_worst_case :type: bool Time series mode. Is used to distinguish between normal time series analysis and worst-case analysis. Is determined by checking if the timindex starts before 1971 as the default for worst-case is 1970. Be mindful when creating your own worst-cases. :returns: Indicates if current time series is worst-case time series with different assumptions for mv and lv simultaneities. :rtype: bool .. py:property:: timeindex Time index all time-dependent attributes are indexed by. Is used as default time steps in e.g. power flow analysis. :param ind: Time index all time-dependent attributes are indexed by. :type ind: :pandas:`pandas.DatetimeIndex` :returns: Time index all time-dependent attributes are indexed by. :rtype: :pandas:`pandas.DatetimeIndex` .. py:property:: generators_active_power Active power time series of generators in MW. :param df: Active power time series of all generators in topology in MW. Index of the dataframe is a time index and column names are names of generators. :type df: :pandas:`pandas.DataFrame` :returns: Active power time series of all generators in topology in MW for time steps given in :py:attr:`~timeindex`. For more information on the dataframe see input parameter `df`. :rtype: :pandas:`pandas.DataFrame` .. py:property:: generators_reactive_power Reactive power time series of generators in MVA. :param df: Reactive power time series of all generators in topology in MVA. Index of the dataframe is a time index and column names are names of generators. :type df: :pandas:`pandas.DataFrame` :returns: Reactive power time series of all generators in topology in MVA for time steps given in :py:attr:`~timeindex`. For more information on the dataframe see input parameter `df`. :rtype: :pandas:`pandas.DataFrame` .. py:property:: loads_active_power Active power time series of loads in MW. :param df: Active power time series of all loads in topology in MW. Index of the dataframe is a time index and column names are names of loads. :type df: :pandas:`pandas.DataFrame` :returns: Active power time series of all loads in topology in MW for time steps given in :py:attr:`~timeindex`. For more information on the dataframe see input parameter `df`. :rtype: :pandas:`pandas.DataFrame` .. py:property:: loads_reactive_power Reactive power time series of loads in MVA. :param df: Reactive power time series of all loads in topology in MVA. Index of the dataframe is a time index and column names are names of loads. :type df: :pandas:`pandas.DataFrame` :returns: Reactive power time series of all loads in topology in MVA for time steps given in :py:attr:`~timeindex`. For more information on the dataframe see input parameter `df`. :rtype: :pandas:`pandas.DataFrame` .. py:method:: charging_points_active_power(edisgo_object) Returns a subset of :py:attr:`~loads_active_power` containing only the time series of charging points. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :returns: Pandas DataFrame with active power time series of charging points. :rtype: :pandas:`pandas.DataFrame` .. py:method:: charging_points_reactive_power(edisgo_object) Returns a subset of :py:attr:`~loads_reactive_power` containing only the time series of charging points. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :returns: Pandas DataFrame with reactive power time series of charging points. :rtype: :pandas:`pandas.DataFrame` .. py:property:: storage_units_active_power Active power time series of storage units in MW. :param df: Active power time series of all storage units in topology in MW. Index of the dataframe is a time index and column names are names of storage units. :type df: :pandas:`pandas.DataFrame` :returns: Active power time series of all storage units in topology in MW for time steps given in :py:attr:`~timeindex`. For more information on the dataframe see input parameter `df`. :rtype: :pandas:`pandas.DataFrame` .. py:property:: storage_units_reactive_power Reactive power time series of storage units in MVA. :param df: Reactive power time series of all storage units in topology in MVA. Index of the dataframe is a time index and column names are names of storage units. :type df: :pandas:`pandas.DataFrame` :returns: Reactive power time series of all storage units in topology in MVA for time steps given in :py:attr:`~timeindex`. For more information on the dataframe see input parameter `df`. :rtype: :pandas:`pandas.DataFrame` .. py:method:: reset() Resets all time series. Active and reactive power time series of all loads, generators and storage units are deleted, as well as timeindex and everything stored in :py:attr:`~time_series_raw`. .. py:method:: set_active_power_manual(edisgo_object, ts_generators=None, ts_loads=None, ts_storage_units=None) Sets given component active power time series. If time series for a component were already set before, they are overwritten. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param ts_generators: Active power time series in MW of generators. Index of the data frame is a datetime index. Columns contain generators names of generators to set time series for. :type ts_generators: :pandas:`pandas.DataFrame` :param ts_loads: Active power time series in MW of loads. Index of the data frame is a datetime index. Columns contain load names of loads to set time series for. :type ts_loads: :pandas:`pandas.DataFrame` :param ts_storage_units: Active power time series in MW of storage units. Index of the data frame is a datetime index. Columns contain storage unit names of storage units to set time series for. :type ts_storage_units: :pandas:`pandas.DataFrame` .. py:method:: set_reactive_power_manual(edisgo_object, ts_generators=None, ts_loads=None, ts_storage_units=None) Sets given component reactive power time series. If time series for a component were already set before, they are overwritten. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param ts_generators: Reactive power time series in MVA of generators. Index of the data frame is a datetime index. Columns contain generators names of generators to set time series for. :type ts_generators: :pandas:`pandas.DataFrame` :param ts_loads: Reactive power time series in MVA of loads. Index of the data frame is a datetime index. Columns contain load names of loads to set time series for. :type ts_loads: :pandas:`pandas.DataFrame` :param ts_storage_units: Reactive power time series in MVA of storage units. Index of the data frame is a datetime index. Columns contain storage unit names of storage units to set time series for. :type ts_storage_units: :pandas:`pandas.DataFrame` .. py:method:: set_worst_case(edisgo_object, cases, generators_names=None, loads_names=None, storage_units_names=None) Sets demand and feed-in of loads, generators and storage units for the specified worst cases. Per default time series are set for all loads, generators and storage units in the network. Possible worst cases are 'load_case' (heavy load flow case) and 'feed-in_case' (reverse power flow case). Each case is set up once for dimensioning of the MV grid ('load_case_mv'/'feed-in_case_mv') and once for the dimensioning of the LV grid ('load_case_lv'/'feed-in_case_lv'), as different simultaneity factors are assumed for the different voltage levels. Assumed simultaneity factors specified in the config section `worst_case_scale_factor` are used to generate active power demand or feed-in. For the reactive power behavior fixed cosphi is assumed. The power factors set in the config section `reactive_power_factor` and the power factor mode, defining whether components behave inductive or capacitive, given in the config section `reactive_power_mode`, are used. Component specific information is given below: * Generators Worst case feed-in time series are distinguished by technology (PV, wind and all other) and whether it is a load or feed-in case. In case of generator worst case time series it is not distinguished by whether it is used to analyse the MV or LV. However, both options are generated as it is distinguished in the case of loads. Worst case scaling factors for generators are specified in the config section `worst_case_scale_factor` through the parameters: 'feed-in_case_feed-in_pv', 'feed-in_case_feed-in_wind', 'feed-in_case_feed-in_other', 'load_case_feed-in_pv', load_case_feed-in_wind', and 'load_case_feed-in_other'. For reactive power a fixed cosphi is assumed. A different reactive power factor is used for generators in the MV and generators in the LV. The reactive power factors for generators are specified in the config section `reactive_power_factor` through the parameters: 'mv_gen' and 'lv_gen'. * Conventional loads Worst case load time series are distinguished by whether it is a load or feed-in case and whether it used to analyse the MV or LV. Worst case scaling factors for conventional loads are specified in the config section `worst_case_scale_factor` through the parameters: 'mv_feed-in_case_load', 'lv_feed-in_case_load', 'mv_load_case_load', and 'lv_load_case_load'. For reactive power a fixed cosphi is assumed. A different reactive power factor is used for loads in the MV and loads in the LV. The reactive power factors for conventional loads are specified in the config section `reactive_power_factor` through the parameters: 'mv_load' and 'lv_load'. * Charging points Worst case demand time series are distinguished by use case (home charging, work charging, public (slow) charging and HPC), by whether it is a load or feed-in case and by whether it used to analyse the MV or LV. Worst case scaling factors for charging points are specified in the config section `worst_case_scale_factor` through the parameters: 'mv_feed-in_case_cp_home', 'mv_feed-in_case_cp_work', 'mv_feed-in_case_cp_public', and 'mv_feed-in_case_cp_hpc', 'lv_feed-in_case_cp_home', 'lv_feed-in_case_cp_work', 'lv_feed-in_case_cp_public', and 'lv_feed-in_case_cp_hpc', 'mv_load-in_case_cp_home', 'mv_load-in_case_cp_work', 'mv_load-in_case_cp_public', and 'mv_load-in_case_cp_hpc', 'lv_load-in_case_cp_home', 'lv_load-in_case_cp_work', 'lv_load-in_case_cp_public', and 'lv_load-in_case_cp_hpc'. For reactive power a fixed cosphi is assumed. A different reactive power factor is used for charging points in the MV and charging points in the LV. The reactive power factors for charging points are specified in the config section `reactive_power_factor` through the parameters: 'mv_cp' and 'lv_cp'. * Heat pumps Worst case demand time series are distinguished by whether it is a load or feed-in case and by whether it used to analyse the MV or LV. Worst case scaling factors for heat pumps are specified in the config section `worst_case_scale_factor` through the parameters: 'mv_feed-in_case_hp', 'lv_feed-in_case_hp', 'mv_load_case_hp', and 'lv_load_case_hp'. For reactive power a fixed cosphi is assumed. A different reactive power factor is used for heat pumps in the MV and heat pumps in the LV. The reactive power factors for heat pumps are specified in the config section `reactive_power_factor` through the parameters: 'mv_hp' and 'lv_hp'. * Storage units Worst case feed-in time series are distinguished by whether it is a load or feed-in case. In case of storage units worst case time series it is not distinguished by whether it is used to analyse the MV or LV. However, both options are generated as it is distinguished in the case of loads. Worst case scaling factors for storage units are specified in the config section `worst_case_scale_factor` through the parameters: 'feed-in_case_storage' and 'load_case_storage'. For reactive power a fixed cosphi is assumed. A different reactive power factor is used for storage units in the MV and storage units in the LV. The reactive power factors for storage units are specified in the config section `reactive_power_factor` through the parameters: 'mv_storage' and 'lv_storage'. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param cases: List with worst-cases to generate time series for. Can be 'feed-in_case', 'load_case' or both. :type cases: list(str) :param generators_names: Defines for which generators to set worst case time series. If None, time series are set for all generators. Default: None. :type generators_names: list(str) :param loads_names: Defines for which loads to set worst case time series. If None, time series are set for all loads. Default: None. :type loads_names: list(str) :param storage_units_names: Defines for which storage units to set worst case time series. If None, time series are set for all storage units. Default: None. :type storage_units_names: list(str) .. rubric:: Notes Be careful, this function overwrites all previously set time series in the case that these are not worst case time series. If previously set time series are worst case time series is checked using :attr:`is_worst_case`. Further, if this function is called for a component whose worst-case time series are already set, they are overwritten, even if previously set time series were set for a different worst-case. Also be aware that loads for which type information is not set are handled as conventional loads. .. py:method:: predefined_fluctuating_generators_by_technology(edisgo_object, ts_generators, generator_names=None, timeindex=None, engine=None) Set active power feed-in time series for fluctuating generators by technology. In case time series are provided per technology and weather cell ID, active power feed-in time series are also set by technology and weather cell ID. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param ts_generators: Defines which technology-specific or technology and weather cell specific active power time series to use. Possible options are: * 'oedb' Technology and weather cell specific hourly feed-in time series are obtained from the `OpenEnergy DataBase `_. See :func:`edisgo.io.timeseries_import.feedin_oedb` for more information. This option requires that the parameter `engine` is provided in case new ding0 grids with geo-referenced LV grids are used. For further settings, the parameter `timeindex` can also be provided. * :pandas:`pandas.DataFrame` DataFrame with self-provided feed-in time series per technology or per technology and weather cell ID normalized to a nominal capacity of 1. In case time series are provided only by technology, columns of the DataFrame contain the technology type as string. In case time series are provided by technology and weather cell ID columns need to be a :pandas:`pandas.MultiIndex` with the first level containing the technology as string and the second level the weather cell ID as integer. Index needs to be a :pandas:`pandas.DatetimeIndex`. When importing a ding0 grid and/or using predefined scenarios of the future generator park, each generator has an assigned weather cell ID that identifies the weather data cell from the weather data set used in the research project `open_eGo `_ to determine feed-in profiles. The weather cell ID can be retrieved from column `weather_cell_id` in :attr:`~.network.topology.Topology.generators_df` and could be overwritten to use own weather cells. :type ts_generators: str or :pandas:`pandas.DataFrame` :param generator_names: Defines for which fluctuating generators to use technology-specific time series. If None, all generators for which technology- (and weather cell-) specific time series are provided are used. In case the time series are retrieved from the oedb, all solar and wind generators are used. Default: None. :type generator_names: list(str) :param timeindex: Specifies time steps for which to set feed-in time series. This parameter is only used in case `ts_generators` is 'oedb'. See parameter `timeindex` in :func:`edisgo.io.timeseries_import.feedin_oedb` for more information. :type timeindex: :pandas:`pandas.DatetimeIndex` or None :param engine: Database engine. This parameter is only required in case `ts_generators` is 'oedb' and new ding0 grids with geo-referenced LV grids are used. :type engine: :sqlalchemy:`sqlalchemy.Engine` .. py:method:: predefined_dispatchable_generators_by_technology(edisgo_object, ts_generators, generator_names=None) Set active power feed-in time series for dispatchable generators by technology. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param ts_generators: DataFrame with self-provided active power time series of each type of dispatchable generator normalized to a nominal capacity of 1. Columns contain the technology type as string, e.g. 'gas', 'coal'. Use 'other' if you don't want to explicitly provide a time series for every possible technology. In the current grid existing generator technologies can be retrieved from column `type` in :attr:`~.network.topology.Topology.generators_df`. Index needs to be a :pandas:`pandas.DatetimeIndex`. :type ts_generators: :pandas:`pandas.DataFrame` :param generator_names: Defines for which dispatchable generators to use technology-specific time series. If None, all dispatchable generators technology-specific time series are provided for are used. In case `ts_generators` contains a column 'other', all dispatchable generators in the network (i.e. all but solar and wind generators) are used. :type generator_names: list(str) .. py:method:: predefined_conventional_loads_by_sector(edisgo_object, ts_loads, load_names=None, timeindex=None) Set active power demand time series for conventional loads by sector. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param ts_loads: Defines which sector-specific active power time series to use. Possible options are: * 'demandlib' See parameter `conventional_loads_ts` in :func:`~.edisgo.EDisGo.set_time_series_active_power_predefined` for more information. * :pandas:`pandas.DataFrame` See parameter `conventional_loads_ts` in :func:`~.edisgo.EDisGo.set_time_series_active_power_predefined` for more information. :type ts_loads: str or :pandas:`pandas.DataFrame` :param load_names: Defines for which conventional loads to use sector-specific time series. If None, all loads of sectors for which sector-specific time series are provided are used. In case the demandlib is used, all loads of sectors 'residential', 'cts', 'industrial', and 'agricultural' are used. :type load_names: list(str) :param timeindex: Specifies time steps for which to set time series. This parameter is only used in case `ts_loads` is 'demandlib'. See parameter `timeindex` in :func:`edisgo.io.timeseries_import.load_time_series_demandlib` for more information. :type timeindex: :pandas:`pandas.DatetimeIndex` or None .. py:method:: predefined_charging_points_by_use_case(edisgo_object, ts_loads, load_names=None) Set active power demand time series for charging points by their use case. :param edisgo_object: :type edisgo_object: :class:`~.EDisGo` :param ts_loads: DataFrame with self-provided load time series per use case normalized to a nominal power of the charging point of 1. Index needs to be a :pandas:`pandas.DatetimeIndex`. Columns contain the use case as string. In the current grid existing use case types can be retrieved from column `sector` in :attr:`~.network.topology.Topology.loads_df` (make sure to select `type` 'charging_point'). When using charging point input from SimBEV the differentiated use cases are 'home', 'work', 'public' and 'hpc'. :type ts_loads: :pandas:`pandas.DataFrame` :param load_names: Defines for which charging points to use use-case-specific time series. If None, all charging points of use cases for which use-case-specific time series are provided are used. :type load_names: list(str) .. py:method:: fixed_cosphi(edisgo_object, generators_parametrisation=None, loads_parametrisation=None, storage_units_parametrisation=None) Sets reactive power of specified components assuming a fixed power factor. Overwrites reactive power time series in case they already exist. :param generators_parametrisation: Sets fixed cosphi parameters for generators. Possible options are: * 'default' Default configuration is used for all generators in the grid. To this end, the power factors set in the config section `reactive_power_factor` and the power factor mode, defining whether components behave inductive or capacitive, given in the config section `reactive_power_mode`, are used. * :pandas:`pandas.DataFrame` DataFrame with fix cosphi parametrisation for specified generators. Columns are: * 'components' : list(str) List with generators to apply parametrisation for. * 'mode' : str Defines whether generators behave inductive or capacitive. Possible options are 'inductive', 'capacitive' or 'default'. In case of 'default', configuration from config section `reactive_power_mode` is used. * 'power_factor' : float or str Defines the fixed cosphi power factor. The power factor can either be directly provided as float or it can be set to 'default', in which case configuration from config section `reactive_power_factor` is used. Index of the dataframe is ignored. * None No reactive power time series are set. Default: None. :type generators_parametrisation: str or :pandas:`pandas.DataFrame` or None :param loads_parametrisation: Sets fixed cosphi parameters for loads. The same options as for parameter `generators_parametrisation` apply. :type loads_parametrisation: str or :pandas:`pandas.DataFrame` or None :param storage_units_parametrisation: Sets fixed cosphi parameters for storage units. The same options as for parameter `generators_parametrisation` apply. :type storage_units_parametrisation: str or :pandas:`pandas.DataFrame` or None .. rubric:: Notes This function requires active power time series to be previously set. .. py:property:: residual_load Returns residual load in network. Residual load for each time step is calculated from total load minus total generation minus storage active power (discharge is positive). A positive residual load represents a load case while a negative residual load here represents a feed-in case. Grid losses are not considered. :returns: Series with residual load in MW. :rtype: :pandas:`pandas.Series` .. py:property:: timesteps_load_feedin_case Contains residual load and information on feed-in and load case. Residual load is calculated from total (load - generation) in the network. Grid losses are not considered. Feed-in and load case are identified based on the generation, load and storage time series and defined as follows: 1. Load case: positive (load - generation - storage) at HV/MV substation 2. Feed-in case: negative (load - generation - storage) at HV/MV substation :returns: Series with information on whether time step is handled as load case ('load_case') or feed-in case ('feed-in_case') for each time step in :py:attr:`~timeindex`. :rtype: :pandas:`pandas.Series` .. py:method:: reduce_memory(attr_to_reduce=None, to_type='float32', time_series_raw=True, **kwargs) Reduces size of dataframes to save memory. See :attr:`~.edisgo.EDisGo.reduce_memory` for more information. :param attr_to_reduce: List of attributes to reduce size for. Per default, all active and reactive power time series of generators, loads, and storage units are reduced. :type attr_to_reduce: list(str), optional :param to_type: Data type to convert time series data to. This is a tradeoff between precision and memory. Default: "float32". :type to_type: str, optional :param time_series_raw: If True raw time series data in :py:attr:`~time_series_raw` is reduced as well. Default: True. :type time_series_raw: bool, optional :param attr_to_reduce_raw: List of attributes in :class:`~.network.timeseries.TimeSeriesRaw` to reduce size for. See :attr:`~.network.timeseries.TimeSeriesRaw.reduce_memory` for default. :type attr_to_reduce_raw: list(str), optional .. py:method:: to_csv(directory, reduce_memory=False, time_series_raw=False, **kwargs) Saves component time series to csv. Saves the following time series to csv files with the same file name (if the time series dataframe is not empty): * loads_active_power and loads_reactive_power * generators_active_power and generators_reactive_power * storage_units_active_power and storage_units_reactive_power If parameter `time_series_raw` is set to True, raw time series data is saved to csv as well. See :attr:`~.network.timeseries.TimeSeriesRaw.to_csv` for more information. :param directory: Directory to save time series in. :type directory: str :param reduce_memory: If True, size of dataframes is reduced using :attr:`~.network.timeseries.TimeSeries.reduce_memory`. Optional parameters of :attr:`~.network.timeseries.TimeSeries.reduce_memory` can be passed as kwargs to this function. Default: False. :type reduce_memory: bool, optional :param time_series_raw: If True raw time series data in :py:attr:`~time_series_raw` is saved to csv as well. Per default all raw time series data is then stored in a subdirectory of the specified `directory` called "time_series_raw". Further, if `reduce_memory` is set to True, raw time series data is reduced as well. To change this default behavior please call :attr:`~.network.timeseries.TimeSeriesRaw.to_csv` separately. Default: False. :type time_series_raw: bool, optional :param kwargs: Kwargs may contain arguments of :attr:`~.network.timeseries.TimeSeries.reduce_memory`. .. py:method:: from_csv(data_path, dtype=None, time_series_raw=False, from_zip_archive=False, **kwargs) Restores time series from csv files. See :func:`~to_csv` for more information on which time series can be saved and thus restored. :param data_path: Data path time series are saved in. Must be a directory or zip archive. :type data_path: str :param dtype: Numerical data type for data to be loaded from csv. E.g. "float32". Default: None. :type dtype: str, optional :param time_series_raw: If True raw time series data is as well read in (see :attr:`~.network.timeseries.TimeSeriesRaw.from_csv` for further information). Directory data is restored from can be specified through kwargs. Default: False. :type time_series_raw: bool, optional :param from_zip_archive: Set True if data is archived in a zip archive. Default: False. :type from_zip_archive: bool, optional :param directory_raw: Directory to read raw time series data from. Per default this is a subdirectory of the specified `directory` called "time_series_raw". :type directory_raw: str, optional .. py:method:: check_integrity() Check for NaN, duplicated indices or columns and if time series is empty. .. py:method:: drop_component_time_series(df_name, comp_names) Drops component time series if they exist. :param df_name: Name of attribute of given object holding the dataframe to remove columns from. Can e.g. be "generators_active_power" if time series should be removed from :attr:`~.network.timeseries.TimeSeries.generators_active_power`. :type df_name: str :param comp_names: Names of components to drop. :type comp_names: str or list(str) .. py:method:: add_component_time_series(df_name, ts_new) Add component time series by concatenating existing and provided dataframe. Possibly already component time series are dropped before appending newly provided time series using :attr:`~.network.timeseries.TimeSeries.drop_component_time_series`. :param df_name: Name of attribute of given object holding the dataframe to add columns to. Can e.g. be "generators_active_power" if time series should be added to :attr:`~.network.timeseries.TimeSeries.generators_active_power`. :type df_name: str :param ts_new: Dataframe with new time series to add to existing time series dataframe. :type ts_new: :pandas:`pandas.DataFrame` .. py:method:: resample(method = 'ffill', freq = '15min') Resamples all generator, load and storage time series to a desired resolution. See :attr:`~.EDisGo.resample_timeseries` for more information. :param method: See :attr:`~.EDisGo.resample_timeseries` for more information. :type method: str, optional :param freq: See :attr:`~.EDisGo.resample_timeseries` for more information. :type freq: str, optional .. py:method:: scale_timeseries(p_scaling_factor = 1.0, q_scaling_factor = 1.0) Scales component time series by given factors. The changes are directly applied to the TimeSeries object. :param p_scaling_factor: Scaling factor to use for active power time series. Values between 0 and 1 will scale down the time series and values above 1 will scale the timeseries up. Default: 1. :type p_scaling_factor: float :param q_scaling_factor: Scaling factor to use for reactive power time series. Values between 0 and 1 will scale down the time series and values above 1 will scale the timeseries up. Default: 1. :type q_scaling_factor: float