{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Time-explicit LCA of an electric vehicle\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook shows how to use `bw_timex` with a cradle-to-grave case study of an electric vehicle. The case study is simplified, not meant to reflect the complexity of electric mobility but to demonstrate hot to use `bw_timex`.\n", "\n", "More information on the inner workings of `bw_timex` can be found [here](https://timex.readthedocs.io/en/latest/content/theory.html)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Brightway2 projects manager with 34 objects, including:\n", "\tAB_test_exploring_EI39\n", "\tCCL dev\n", "\tCCL_ch_hh_ei39_no_hybrid\n", "\t__test_abc_loopA__\n", "\t__test_abc_loopA_with_biosphere__\n", "\t__test_abc_loopA_with_biosphere_advanced__\n", "\t__test_abc_loopA_with_biosphere_extra__\n", "\t__test_medusa__\n", "\t__test_tds__\n", "\tbiosphere_advanced\n", "Use `sorted(projects)` to get full list, `projects.report()` to get\n", "\ta report on all projects." ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import bw2data as bd\n", "bd.projects\n", "\n", "# bd.projects.set_current(\"timex_example_electric_vehicle\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "if 'bw25_premise_background_v2' not in bd.projects:\n", " import bw2io as bi\n", " bi.backup.restore_project_directory(fp= '/Users/ajakobs/Documents/prospective_dynamic_lca/brightway2-project-bw25_premise_background_v2-backup.26-March-2024-01-40PM.tar.gz',\n", " overwrite_existing=True)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "bd.projects.set_current('bw25_premise_background_v2')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prospective databases\n", "\n", "Using [Ecoinvent v3.9](https://ecoinvent.org/) and [`premise`](https://github.com/polca/premise), we created a set of prospective databases with projections for the future electricity sectors using the SSP2-RCP19 pathway from the IAM IMAGE. We selected this pathway to simply demonstrate some future development in this case study, and many other models and pathways are available. \n", "In the [documentation](https://premise.readthedocs.io/en/latest/) of `premise`, you can find instructions for the creation of prospective background databases. \n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "db_2020 = bd.Database(\"db_2020\")\n", "db_2030 = bd.Database(\"db_2030\")\n", "db_2040 = bd.Database(\"db_2040\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Case study setup\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a new foreground database to store the EV process:\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "del bd.databases[\"foreground\"] # to make sure we create the foreground from scratch\n", "foreground = bd.Database(\"foreground\")\n", "foreground.write({}) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Getting the input processes of the EV from the background database:\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "glider_production = bd.get_activity((\"db_2020\", \"133b33cc867081af144475d62179286b\"))\n", "powertrain_production = bd.get_activity(\n", " (\"db_2020\", \"f6d3f0b01e4a38c055e3c5c1356a4bba\")\n", ") # eol included\n", "battery_production = bd.get_activity((\"db_2020\", \"ba87aff6361d99be2636e8c59e55a5b2\"))\n", "electricity_production = bd.get_activity(\n", " (\"db_2020\", \"fec93a95a9a84d7fa0ede9c3082bb79f\")\n", ")\n", "glider_eol = bd.get_activity((\"db_2020\", \"f8114e0ff375b3c6d72ccfa49f79e44d\"))\n", "battery_eol = bd.get_activity((\"db_2020\", \"82ebcdf42e8512cbe00151dda6210d29\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Creating the EV activity:\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "fg = bd.Database(\"foreground\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "fg.new_node(\"EV_lifecycle\", name=\"Electric vehicle, lifecycle\", unit=\"unit\").save()\n", "ev_lifecycle = fg.get(\"EV_lifecycle\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are some parameter assumptions for the EV:\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "ELECTRICITY_CONSUMPTION = 0.2 # kWh/km\n", "MILEAGE = 150_000 # km\n", "LIFETIME = 16 # years\n", "\n", "# Overall mass: 1200 kg\n", "MASS_GLIDER = 840 # kg\n", "MASS_POWERTRAIN = 80 # kg\n", "MASS_BATTERY = 280 # kg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on these parameters, we create the following exchanges:\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "ev_lifecycle.new_edge(input=ev_lifecycle, amount=1, type=\"production\").save() # production exchange" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "glider_production_exchange = ev_lifecycle.new_edge(\n", " input=glider_production, \n", " amount=MASS_GLIDER, \n", " type=\"technosphere\"\n", ")\n", "\n", "powertrain_production_exchange = ev_lifecycle.new_edge(\n", " input=powertrain_production, \n", " amount=MASS_POWERTRAIN, \n", " type=\"technosphere\"\n", ")\n", "\n", "battery_production_exchange = ev_lifecycle.new_edge(\n", " input=battery_production, \n", " amount=MASS_BATTERY, \n", " type=\"technosphere\"\n", ")\n", "\n", "electricity_production_exchange = ev_lifecycle.new_edge(\n", " input=electricity_production,\n", " amount=ELECTRICITY_CONSUMPTION * MILEAGE,\n", " type=\"technosphere\",\n", ")\n", "\n", "glider_eol_exchange = ev_lifecycle.new_edge(\n", " input=glider_eol,\n", " amount=MASS_GLIDER, # amount not negative as its not modeled as a \"true\" waste process\n", " type=\"technosphere\",\n", ")\n", "\n", "battery_eol_exchange = ev_lifecycle.new_edge(\n", " input=battery_eol, \n", " amount=-MASS_BATTERY, \n", " type=\"technosphere\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to add the temporal distributions at the exchanges level. \n", "See [bw_temporalis documentation](https://github.com/brightway-lca/bw_temporalis) for more information on `TemporalDistribution`. Timedelta, which we use below, describes relative temporal relations, e.g. 2 years earlier. \n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from bw_temporalis import TemporalDistribution, easy_timedelta_distribution\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "td_production = easy_timedelta_distribution(\n", " start=-4,\n", " end=0,\n", " resolution=\"Y\", # \"Y\": \"Years\", \"M\": \"Months\", \"D\": \"Days\", \"h\": \"Hours\" etc.\n", " steps=5,\n", " kind=\"triangular\", # available kinds: \"triangular\", \"uniform\", \"normal\"\n", " param=-1,\n", ")\n", "\n", "td_use_phase = easy_timedelta_distribution(\n", " start=0, # (inclusive)\n", " end=LIFETIME, # (inclusive)\n", " resolution=\"Y\",\n", " steps=(LIFETIME + 1), # Includes both start and end\n", " kind=\"uniform\", \n", ")\n", "\n", "td_eol = TemporalDistribution(\n", " date=np.array([LIFETIME + 1], dtype=\"timedelta64[Y]\"), amount=np.array([1]) # if you build a TD manually, make sure that length of date array == length of amount array, and the sum of elements in the amount array == 1\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's explore what a `TemporalDistribution` looks like:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "td_production.date [s]: [-126227808 -94670856 -63113904 -31556952 0]\n", "td_production.amount [-]: [0. 0.16666667 0.33333333 0.5 0. ]\n" ] }, { "data": { "text/plain": [ "bw_temporalis.temporal_distribution.TemporalDistribution" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"td_production.date [s]: \", td_production.date)\n", "print(\"td_production.amount [-]:\", td_production.amount)\n", "type(td_production)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now add the temporal information to the inputs of our EV. We add temporal distributions to all exchanges, but you don't have to.\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "glider_production_exchange[\"temporal_distribution\"] = td_production\n", "glider_production_exchange.save()\n", "\n", "powertrain_production_exchange[\"temporal_distribution\"] = td_production\n", "powertrain_production_exchange.save()\n", "\n", "battery_production_exchange[\"temporal_distribution\"] = td_production\n", "battery_production_exchange.save()\n", "\n", "electricity_production_exchange[\"temporal_distribution\"] = td_use_phase\n", "electricity_production_exchange.save()\n", "\n", "glider_eol_exchange[\"temporal_distribution\"] = td_eol\n", "glider_eol_exchange.save()\n", "\n", "battery_eol_exchange[\"temporal_distribution\"] = td_eol\n", "battery_eol_exchange.save()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## LCA using `bw_timex`\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, we need to select a method:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "method = (\"EF v3.1\", \"climate change\", \"global warming potential (GWP100)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`bw_timex` needs to know the representative time of the databases:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "from datetime import datetime\n", "\n", "database_date_dict = {\n", " \"db_2020\": datetime.strptime(\"2020\", \"%Y\"),\n", " \"db_2030\": datetime.strptime(\"2030\", \"%Y\"),\n", " \"db_2040\": datetime.strptime(\"2040\", \"%Y\"),\n", " \"foreground\": \"dynamic\", # flag databases that should be temporally distributed with \"dynamic\"\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can instantiate a `TimexLCA`. It has a similar structure as `bw2calc.LCA`, but with the additional argument `database_date_dict`.\n", "\n", "Not sure about the required inputs? Check the documentation using `?`" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;31mInit signature:\u001b[0m \u001b[0mTimexLCA\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdemand\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdatabase_date_dict\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "Class to perform time-explicit LCA calculations.\n", "\n", "A TimexLCA retrieves the LCI of processes occuring at explicit points in time and relinks their technosphere\n", "exchanges to match the technology landscape at that point in time, while keeping track of the timing of the\n", "resulting emissions. As such, it combines prospective and dynamic LCA approaches.\n", "\n", "TimexLCA first calculates a static LCA, which informs a priority-first graph traversal. From the graph traversal,\n", "temporal relationships between exchanges and processes are derived. Based on the timing of the processes, bw_timex\n", "matches the processes at the intersection between foreground and background to the best available background\n", "databases. This temporal relinking is achieved by using datapackages to add new time-specific processes. The new\n", "processes and their exchanges to other technosphere processes or biosphere flows extent the technopshere and\n", "biosphere matrices.\n", "\n", "Temporal information of both processes and biosphere flows are retained, allowing for dynamic LCIA.\n", "\n", "TimexLCA calculates:\n", " 1) a static LCA score (`TimexLCA.base_lca.score`, same as `bw2calc.lca.score`),\n", " 2) a static time-explicit LCA score (`TimexLCA.static_score`), which links LCIs to the respective background databases but without additional temporal dynamics of the biosphere flows,\n", " 3) a dynamic time-explicit LCA score (`TimexLCA.dynamic_score`), with dynamic inventory and dynamic charaterization factors. These are provided for radiative forcing and GWP but can also be user-defined.\n", "\n", "Example\n", "-------\n", ">>> demand = {('my_foreground_database', 'my_process'): 1}\n", ">>> method = (\"some_method_family\", \"some_category\", \"some_method\")\n", ">>> database_date_dict = {\n", " 'my_background_database_one': datetime.strptime(\"2020\", \"%Y\"),\n", " 'my_background_database_two': datetime.strptime(\"2030\", \"%Y\"),\n", " 'my_foreground_database':'dynamic'\n", " }\n", ">>> bw_timex = TimexLCA(demand, method, database_date_dict)\n", ">>> bw_timex.build_timeline() # you can pass many optional arguments here, also for the graph traversal\n", ">>> bw_timex.lci()\n", ">>> bw_timex.static_lcia()\n", ">>> print(bw_timex.static_score)\n", ">>> bw_timex.dynamic_lcia(metric=\"radiative_forcing\") # different metrics can be used, e.g. \"GWP\", \"radiative_forcing\"\n", ">>> print(bw_timex.dynamic_score)\n", "\u001b[0;31mInit docstring:\u001b[0m\n", "Instantiating a `TimexLCA` object calculates a static LCA, initializes time mapping dicts for activities and biosphere flows, and stores useful subsets of ids in the node_id_collection_dict.\n", "\n", "Parameters\n", "----------\n", "demand : dict[object: float]\n", " The demand for which the LCA will be calculated. The keys can be Brightway `Node`\n", " instances, `(database, code)` tuples, or integer ids.\n", "method : tuple\n", " Tuple defining the LCIA method, such as `('foo', 'bar')` or default methods, such as `(\"EF v3.1\", \"climate change\", \"global warming potential (GWP100)\")`\n", "database_date_dict : dict, optional\n", " Dictionary mapping database names to dates.\n", "\u001b[0;31mFile:\u001b[0m ~/Documents/prospective_dynamic_lca/bw_timex/bw_timex/timex_lca.py\n", "\u001b[0;31mType:\u001b[0m type\n", "\u001b[0;31mSubclasses:\u001b[0m " ] } ], "source": [ "from bw_timex import TimexLCA\n", "TimexLCA?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a `TimexLCA` object for our EV life cycle:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "tlca = TimexLCA({ev_lifecycle.key: 1}, method, database_date_dict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we build a timeline of the exchanges. To do this, we can call the `build_timeline()` method, which does the graph traversal and creates a timeline dataframe from the results. The exchanges (rows of the dataframe) are aggregated to the resolution specified in the argument `temporal_grouping`. There are also many more options to specify the timeline creation and graph traversal process. Here are the most important ones:\n", "- `temporal_grouping`: temporal resolution to which processes will be aggregated,\"year\" (default), \"month\", \"day\" or \"hour\"\n", "- `interpolation_type`: How the best fitting background database is selected: \"linear\"(default), \"closest\"\n", "- `edge_filter_function`: Custom filter function specifying when to stop the graph traversal.\n", "- `cutoff`: stops graph traversal for nodes below this contribution to the static impact score.\n", "- `max_calc`: stops graph traversal if this number of nodes has been traversed\n", "\n", "For all these options, we provide sensible default values. Of course you can always just check the docstrings to see all your options and our assumptions for default values. \n", "\n", "So, let's build the timeline:\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/ajakobs/Documents/prospective_dynamic_lca/bw_timex/bw_timex/timex_lca.py:186: UserWarning: No edge filter function provided. Skipping all edges within background databases.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Starting graph traversal\n", "Calculation count: 7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/ajakobs/Documents/prospective_dynamic_lca/bw_timex/bw_timex/timeline_builder.py:482: Warning: Reference date 2041-01-01 00:00:00 is higher than all provided dates. Data will be taken from the closest lower year.\n", " warnings.warn(\n" ] }, { "data": { "text/html": [ "
| \n", " | date_producer | \n", "producer_name | \n", "date_consumer | \n", "consumer_name | \n", "amount | \n", "interpolation_weights | \n", "
|---|---|---|---|---|---|---|
| 0 | \n", "2021-01-01 | \n", "market for glider, passenger car | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "140.0 | \n", "{'db_2020': 0.8998083766767041, 'db_2030': 0.1... | \n", "
| 1 | \n", "2021-01-01 | \n", "battery production, Li-ion, LiMn2O4, rechargea... | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "46.666667 | \n", "{'db_2020': 0.8998083766767041, 'db_2030': 0.1... | \n", "
| 2 | \n", "2021-01-01 | \n", "market for powertrain, for electric passenger car | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "13.333333 | \n", "{'db_2020': 0.8998083766767041, 'db_2030': 0.1... | \n", "
| 3 | \n", "2022-01-01 | \n", "market for glider, passenger car | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "280.0 | \n", "{'db_2020': 0.7998905009581166, 'db_2030': 0.2... | \n", "
| 4 | \n", "2022-01-01 | \n", "battery production, Li-ion, LiMn2O4, rechargea... | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "93.333333 | \n", "{'db_2020': 0.7998905009581166, 'db_2030': 0.2... | \n", "
| 5 | \n", "2022-01-01 | \n", "market for powertrain, for electric passenger car | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "26.666667 | \n", "{'db_2020': 0.7998905009581166, 'db_2030': 0.2... | \n", "
| 6 | \n", "2023-01-01 | \n", "market for glider, passenger car | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "420.0 | \n", "{'db_2020': 0.6999726252395291, 'db_2030': 0.3... | \n", "
| 7 | \n", "2023-01-01 | \n", "battery production, Li-ion, LiMn2O4, rechargea... | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "140.0 | \n", "{'db_2020': 0.6999726252395291, 'db_2030': 0.3... | \n", "
| 8 | \n", "2023-01-01 | \n", "market for powertrain, for electric passenger car | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "40.0 | \n", "{'db_2020': 0.6999726252395291, 'db_2030': 0.3... | \n", "
| 9 | \n", "2024-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2020': 0.6000547495209416, 'db_2030': 0.3... | \n", "
| 10 | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "2024-01-01 | \n", "-1 | \n", "1.0 | \n", "None | \n", "
| 11 | \n", "2025-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2020': 0.4998631261976457, 'db_2030': 0.5... | \n", "
| 12 | \n", "2026-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2020': 0.39994525047905827, 'db_2030': 0.... | \n", "
| 13 | \n", "2027-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2020': 0.3000273747604708, 'db_2030': 0.6... | \n", "
| 14 | \n", "2028-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2020': 0.20010949904188335, 'db_2030': 0.... | \n", "
| 15 | \n", "2029-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2020': 0.09991787571858746, 'db_2030': 0.... | \n", "
| 16 | \n", "2030-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 1} | \n", "
| 17 | \n", "2031-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.9000547645125958, 'db_2040': 0.0... | \n", "
| 18 | \n", "2032-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.8001095290251916, 'db_2040': 0.1... | \n", "
| 19 | \n", "2033-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.6998904709748084, 'db_2040': 0.3... | \n", "
| 20 | \n", "2034-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.5999452354874042, 'db_2040': 0.4... | \n", "
| 21 | \n", "2035-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.5, 'db_2040': 0.5} | \n", "
| 22 | \n", "2036-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.4000547645125958, 'db_2040': 0.5... | \n", "
| 23 | \n", "2037-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.29983570646221247, 'db_2040': 0.... | \n", "
| 24 | \n", "2038-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.19989047097480828, 'db_2040': 0.... | \n", "
| 25 | \n", "2039-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2030': 0.0999452354874042, 'db_2040': 0.9... | \n", "
| 26 | \n", "2040-01-01 | \n", "market group for electricity, low voltage | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "1764.705882 | \n", "{'db_2040': 1} | \n", "
| 27 | \n", "2041-01-01 | \n", "market for used Li-ion battery | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "-280.0 | \n", "{'db_2040': 1} | \n", "
| 28 | \n", "2041-01-01 | \n", "market for manual dismantling of used electric... | \n", "2024-01-01 | \n", "Electric vehicle, lifecycle | \n", "840.0 | \n", "{'db_2040': 1} | \n", "
| \n", " | date | \n", "amount | \n", "flow | \n", "activity | \n", "
|---|---|---|---|---|
| 2627 | \n", "2021-01-01 | \n", "3.474853e+04 | \n", "1909 | \n", "25965 | \n", "
| 2626 | \n", "2021-01-01 | \n", "1.836769e+04 | \n", "1909 | \n", "25966 | \n", "
| 2625 | \n", "2021-01-01 | \n", "1.035863e+04 | \n", "1909 | \n", "25967 | \n", "
| 2474 | \n", "2021-01-01 | \n", "9.263883e+03 | \n", "1756 | \n", "25965 | \n", "
| 2473 | \n", "2021-01-01 | \n", "4.497189e+03 | \n", "1756 | \n", "25966 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 59143 | \n", "2041-01-01 | \n", "-1.852944e-08 | \n", "2310 | \n", "25993 | \n", "
| 58986 | \n", "2041-01-01 | \n", "-3.563290e-08 | \n", "2202 | \n", "25992 | \n", "
| 59144 | \n", "2041-01-01 | \n", "-1.161550e-07 | \n", "2310 | \n", "25992 | \n", "
| 60715 | \n", "2041-01-01 | \n", "-4.034863e-01 | \n", "4189 | \n", "25993 | \n", "
| 58304 | \n", "2041-01-01 | \n", "-3.801100e+00 | \n", "1167 | \n", "25992 | \n", "
61373 rows × 4 columns
\n", "| \n", " | date | \n", "amount | \n", "flow | \n", "activity | \n", "
|---|---|---|---|---|
| 2621 | \n", "2021-01-01 | \n", "3.474853e+04 | \n", "1909 | \n", "98281 | \n", "
| 2620 | \n", "2021-01-01 | \n", "1.836769e+04 | \n", "1909 | \n", "98282 | \n", "
| 2619 | \n", "2021-01-01 | \n", "1.035863e+04 | \n", "1909 | \n", "98283 | \n", "
| 2468 | \n", "2021-01-01 | \n", "9.263883e+03 | \n", "1756 | \n", "98281 | \n", "
| 2467 | \n", "2021-01-01 | \n", "4.497189e+03 | \n", "1756 | \n", "98282 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 59008 | \n", "2041-01-01 | \n", "-1.852944e-08 | \n", "2310 | \n", "98309 | \n", "
| 58851 | \n", "2041-01-01 | \n", "-3.563290e-08 | \n", "2202 | \n", "98308 | \n", "
| 59009 | \n", "2041-01-01 | \n", "-1.161550e-07 | \n", "2310 | \n", "98308 | \n", "
| 60578 | \n", "2041-01-01 | \n", "-4.034863e-01 | \n", "4189 | \n", "98309 | \n", "
| 58169 | \n", "2041-01-01 | \n", "-3.801100e+00 | \n", "1167 | \n", "98308 | \n", "
61236 rows × 4 columns
\n", "| \n", " | date | \n", "amount | \n", "flow | \n", "flow_name | \n", "activity | \n", "activity_name | \n", "amount_sum | \n", "
|---|---|---|---|---|---|---|---|
| 0 | \n", "2022-01-01 05:49:12 | \n", "4.281176e-43 | \n", "1332 | \n", "Ethane, 1,1,1-trifluoro-, HFC-143a | \n", "98282 | \n", "(db_2020, ba87aff6361d99be2636e8c59e55a5b2) | \n", "4.281176e-43 | \n", "
| 149 | \n", "2022-01-01 05:49:12 | \n", "1.528897e-19 | \n", "260 | \n", "Tetrachloroethylene | \n", "98282 | \n", "(db_2020, ba87aff6361d99be2636e8c59e55a5b2) | \n", "2.138694e-12 | \n", "
| 150 | \n", "2022-01-01 05:49:12 | \n", "-6.357518e-19 | \n", "3636 | \n", "Carbon dioxide, to soil or biomass stock | \n", "98281 | \n", "(db_2020, 133b33cc867081af144475d62179286b) | \n", "2.138693e-12 | \n", "
| 151 | \n", "2022-01-01 05:49:12 | \n", "2.461282e-22 | \n", "1656 | \n", "Methane, monochloro-, R-40 | \n", "98283 | \n", "(db_2020, f6d3f0b01e4a38c055e3c5c1356a4bba) | \n", "2.138693e-12 | \n", "
| 152 | \n", "2022-01-01 05:49:12 | \n", "1.754148e-19 | \n", "1170 | \n", "Carbon dioxide, fossil | \n", "98281 | \n", "(db_2020, 133b33cc867081af144475d62179286b) | \n", "2.138693e-12 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 140225 | \n", "2123-01-01 21:14:24 | \n", "1.005114e-17 | \n", "444 | \n", "Methane, trifluoro-, HFC-23 | \n", "98308 | \n", "(db_2020, 82ebcdf42e8512cbe00151dda6210d29) | \n", "1.351929e-09 | \n", "
| 140224 | \n", "2123-01-01 21:14:24 | \n", "3.203941e-21 | \n", "4261 | \n", "Ethane, 1,1,2-trichloro-1,2,2-trifluoro-, CFC-113 | \n", "98309 | \n", "(db_2020, f8114e0ff375b3c6d72ccfa49f79e44d) | \n", "1.351929e-09 | \n", "
| 140223 | \n", "2123-01-01 21:14:24 | \n", "3.410371e-21 | \n", "4686 | \n", "Dinitrogen monoxide | \n", "98309 | \n", "(db_2020, f8114e0ff375b3c6d72ccfa49f79e44d) | \n", "1.351929e-09 | \n", "
| 140246 | \n", "2123-01-01 21:14:24 | \n", "5.082378e-18 | \n", "438 | \n", "Methane, fossil | \n", "98308 | \n", "(db_2020, 82ebcdf42e8512cbe00151dda6210d29) | \n", "1.351929e-09 | \n", "
| 140295 | \n", "2123-01-01 21:14:24 | \n", "2.810623e-47 | \n", "1332 | \n", "Ethane, 1,1,1-trifluoro-, HFC-143a | \n", "98309 | \n", "(db_2020, f8114e0ff375b3c6d72ccfa49f79e44d) | \n", "1.351996e-09 | \n", "
140296 rows × 7 columns
\n", "