Exploring data of belkhirAssessingICTGlobal2018#
%matplotlib ipympl
import pandas as pd
In [BE18] table 9 we find data regarding equipment lifetime and emissions estimates for production and usage per year. The emission numbers are in kg CO2eq. The table below excludes the lifecycle annual footprint from the original table. This can be calculated easily: \(f_{min} = u_{min} + p_{min}*l_{max}\) and \(f_{max} = u_{max} + p_{max}*l_{min}\).
It must be said that min and max are a bit of a misnomer here. We will use optimistic and pessimistic.
eqem = pd.read_csv("belkhirAssessingICTGlobal2018/table9.csv")
eqem
equipment | useful life min | useful life max | prod E min | prod E max | yearly use E min | yearly use E max | |
---|---|---|---|---|---|---|---|
0 | Home desktop | 5 | 7 | 218 | 628 | 93.0 | 116.00 |
1 | Office desktop | 5 | 7 | 218 | 628 | 69.0 | 75.00 |
2 | Home notebook | 5 | 7 | 281 | 468 | 27.0 | 35.00 |
3 | Office notebook | 5 | 7 | 281 | 468 | 20.0 | 23.00 |
4 | CRT display | 5 | 7 | 200 | 200 | 51.0 | 95.00 |
5 | LCD display | 5 | 7 | 95 | 95 | 23.0 | 43.00 |
6 | Tablet | 3 | 8 | 80 | 116 | 4.5 | 5.25 |
7 | Smart phones | 2 | 2 | 40 | 80 | 4.5 | 5.25 |
8 | Datacenter server | 3 | 5 | 328 | 328 | 1314.0 | 3743.00 |
Using the formulas above we compute the yearly production emissions and total footprint:
eqem["yearly prod E opt"] = eqem["prod E min"]/eqem["useful life max"]
eqem["yearly total E opt"] = eqem["yearly prod E opt"]+eqem["yearly use E min"]
eqem[["equipment","yearly total E opt"]]
equipment | yearly total E opt | |
---|---|---|
0 | Home desktop | 124.142857 |
1 | Office desktop | 100.142857 |
2 | Home notebook | 67.142857 |
3 | Office notebook | 60.142857 |
4 | CRT display | 79.571429 |
5 | LCD display | 36.571429 |
6 | Tablet | 14.500000 |
7 | Smart phones | 24.500000 |
8 | Datacenter server | 1379.600000 |
Take equipment quantity data of 2020 from [BE18] table 10:
qtn = pd.read_csv("belkhirAssessingICTGlobal2018/table10.csv", index_col="Year")
qtn2020 = qtn.loc[[2020]]
qtn
Home desktop | Office desktop | Office notebook | Home notebook | CRT display | LCD display | Tablet | Smart phones | |
---|---|---|---|---|---|---|---|---|
Year | ||||||||
2007 | 276 | 414 | 130 | 195 | 459 | 594 | NaN | 200 |
2008 | 291 | 437 | 167 | 250 | 250 | 512 | NaN | 271 |
2009 | 301 | 451 | 207 | 311 | 233 | 631 | NaN | 342 |
2010 | 312 | 468 | 258 | 386 | 216 | 750 | NaN | 485 |
2011 | 315 | 472 | 310 | 464 | 199 | 870 | NaN | 771 |
2012 | 305 | 458 | 359 | 538 | 168 | 1482 | NaN | 1136 |
2013 | 308 | 462 | 376 | 564 | 166 | 1108 | 660.0 | 1580 |
2014 | 307 | 460 | 391 | 586 | 149 | 1227 | 860.0 | 1833 |
2015 | 300 | 449 | 397 | 596 | 132 | 1346 | 1000.0 | 2246 |
2016 | 289 | 434 | 399 | 599 | 115 | 1465 | 1120.0 | 2594 |
2017 | 280 | 420 | 403 | 605 | 98 | 1584 | 1230.0 | 2807 |
2018 | 273 | 409 | 409 | 613 | 82 | 1704 | 1320.0 | 2981 |
2019 | 266 | 399 | 416 | 623 | 65 | 1823 | 1400.0 | 3409 |
2020 | 255 | 383 | 417 | 625 | 48 | 1942 | 1460.0 | 3619 |
Compute the optimistic total emissions for 2020 using the quantity and equipment energy data
eqem2020 = eqem[["equipment", "yearly total E opt", "yearly use E min", "yearly prod E opt"]].join(qtn2020.T.rename(columns={2020: "quantity"}),on="equipment")
eqem2020
equipment | yearly total E opt | yearly use E min | yearly prod E opt | quantity | |
---|---|---|---|---|---|
0 | Home desktop | 124.142857 | 93.0 | 31.142857 | 255.0 |
1 | Office desktop | 100.142857 | 69.0 | 31.142857 | 383.0 |
2 | Home notebook | 67.142857 | 27.0 | 40.142857 | 625.0 |
3 | Office notebook | 60.142857 | 20.0 | 40.142857 | 417.0 |
4 | CRT display | 79.571429 | 51.0 | 28.571429 | 48.0 |
5 | LCD display | 36.571429 | 23.0 | 13.571429 | 1942.0 |
6 | Tablet | 14.500000 | 4.5 | 10.000000 | 1460.0 |
7 | Smart phones | 24.500000 | 4.5 | 20.000000 | 3619.0 |
8 | Datacenter server | 1379.600000 | 1314.0 | 65.600000 | NaN |
eqem2020["total opt"] = eqem2020["quantity"]*eqem2020["yearly total E opt"]/1000
eqem2020["total opt %"] = eqem2020["total opt"]/eqem2020["total opt"].sum()
eqem2020["use opt"] = eqem2020["quantity"]*eqem2020["yearly use E min"]/1000
eqem2020["use opt %"] = eqem2020["use opt"]/eqem2020["use opt"].sum()
eqem2020["prod opt"] = eqem2020["quantity"]*eqem2020["yearly prod E opt"]/1000
eqem2020["prod opt %"] = eqem2020["prod opt"]/eqem2020["prod opt"].sum()
eqem2020
equipment | yearly total E opt | yearly use E min | yearly prod E opt | quantity | total opt | total opt % | use opt | use opt % | prod opt | prod opt % | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | Home desktop | 124.142857 | 93.0 | 31.142857 | 255.0 | 31.656429 | 0.098394 | 23.7150 | 0.163184 | 7.941429 | 0.045018 |
1 | Office desktop | 100.142857 | 69.0 | 31.142857 | 383.0 | 38.354714 | 0.119213 | 26.4270 | 0.181846 | 11.927714 | 0.067615 |
2 | Home notebook | 67.142857 | 27.0 | 40.142857 | 625.0 | 41.964286 | 0.130433 | 16.8750 | 0.116118 | 25.089286 | 0.142225 |
3 | Office notebook | 60.142857 | 20.0 | 40.142857 | 417.0 | 25.079571 | 0.077952 | 8.3400 | 0.057388 | 16.739571 | 0.094893 |
4 | CRT display | 79.571429 | 51.0 | 28.571429 | 48.0 | 3.819429 | 0.011871 | 2.4480 | 0.016845 | 1.371429 | 0.007774 |
5 | LCD display | 36.571429 | 23.0 | 13.571429 | 1942.0 | 71.021714 | 0.220748 | 44.6660 | 0.307349 | 26.355714 | 0.149404 |
6 | Tablet | 14.500000 | 4.5 | 10.000000 | 1460.0 | 21.170000 | 0.065800 | 6.5700 | 0.045209 | 14.600000 | 0.082764 |
7 | Smart phones | 24.500000 | 4.5 | 20.000000 | 3619.0 | 88.665500 | 0.275588 | 16.2855 | 0.112061 | 72.380000 | 0.410305 |
8 | Datacenter server | 1379.600000 | 1314.0 | 65.600000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
To get a complete picture of the emissions in ICT Belkhir and Elmeligi provide historical and projected emissions data for data center and networks in Mt-CO2eq in table 11 [BE18]. The numbers lack production emissions, but the usage provides a better estimate than using the data for datacenter server. Belkhir and Elmeligi argue that the emissions of production of datacenter equipment is negligible compared to its usage, which might be true, but given production emissions for the other equipment is not that high, so in total the emissions contribution of datacenter equipment production might be higher than of some office equipment.
clem = pd.read_csv("belkhirAssessingICTGlobal2018/table11.csv", index_col="Year")
clem
data center | networks | |
---|---|---|
Year | ||
2007 | 113.4 | 101.5 |
2008 | 127.0 | 114.0 |
2009 | 142.3 | 127.0 |
2010 | 159.3 | 138.0 |
2011 | 178.5 | 152.0 |
2012 | 199.9 | 167.0 |
2013 | 223.9 | 178.6 |
2014 | 250.7 | 191.5 |
2015 | 280.8 | 204.4 |
2016 | 314.5 | 217.4 |
2017 | 352.2 | 230.3 |
2018 | 394.5 | 243.2 |
2019 | 441.8 | 256.1 |
2020 | 494.9 | 269.1 |
We will construct a table with optimistic emission data on 2020 per equipment and life cycle stage (use or prod). This will give an indication on emission per equipment type and per life cycle stage.
el2020 = (eqem2020[["equipment","use opt","prod opt"]]
.dropna()
.set_index("equipment")
.rename(columns={
"use opt": "use",
"prod opt": "prod"
})
)
el2020 = el2020.stack().rename(2020).rename_axis(index={None:"life cycle"})
el2020 = el2020.to_frame().reset_index()
el2020
equipment | life cycle | 2020 | |
---|---|---|---|
0 | Home desktop | use | 23.715000 |
1 | Home desktop | prod | 7.941429 |
2 | Office desktop | use | 26.427000 |
3 | Office desktop | prod | 11.927714 |
4 | Home notebook | use | 16.875000 |
5 | Home notebook | prod | 25.089286 |
6 | Office notebook | use | 8.340000 |
7 | Office notebook | prod | 16.739571 |
8 | CRT display | use | 2.448000 |
9 | CRT display | prod | 1.371429 |
10 | LCD display | use | 44.666000 |
11 | LCD display | prod | 26.355714 |
12 | Tablet | use | 6.570000 |
13 | Tablet | prod | 14.600000 |
14 | Smart phones | use | 16.285500 |
15 | Smart phones | prod | 72.380000 |
This table lacks datacenter and network data, so let’s add those, giving us a table with optimistic emission data for 2020 in Mt CO2eq:
cl2020 = clem.T[[2020]]
cl2020["life cycle"]="use"
cl2020.index.name = "equipment"
cl2020 = cl2020.reset_index()
emissions2020 = el2020.merge(cl2020,how="outer")
emissions2020
equipment | life cycle | 2020 | |
---|---|---|---|
0 | Home desktop | use | 23.715000 |
1 | Home desktop | prod | 7.941429 |
2 | Office desktop | use | 26.427000 |
3 | Office desktop | prod | 11.927714 |
4 | Home notebook | use | 16.875000 |
5 | Home notebook | prod | 25.089286 |
6 | Office notebook | use | 8.340000 |
7 | Office notebook | prod | 16.739571 |
8 | CRT display | use | 2.448000 |
9 | CRT display | prod | 1.371429 |
10 | LCD display | use | 44.666000 |
11 | LCD display | prod | 26.355714 |
12 | Tablet | use | 6.570000 |
13 | Tablet | prod | 14.600000 |
14 | Smart phones | use | 16.285500 |
15 | Smart phones | prod | 72.380000 |
16 | data center | use | 494.900000 |
17 | networks | use | 269.100000 |
Even lacking numbers for manufacturing emissions of data centers and networks, they clearly dominate the emissions landscape. The second figure better depicts the ration between emissions caused by manufacturing and usage. These numbers are a stark contradiction to those presented in [WeN21].
import plotly.express as px
fig = px.sunburst(emissions2020, path=["equipment", "life cycle"], values=2020)
fig.update_traces(textinfo="label+percent root")
fig.show()
fig2 = px.sunburst(emissions2020, path=["life cycle", "equipment"], values=2020)
fig2.update_traces(textinfo="label+percent root")
fig2.show()