Cvičenie 4 – Čistenie a analýza údajov o udržateľnej energetike
Autor
Branislav Stríž
Publikované
19. októbra 2026
Kód
knitr::opts_chunk$set(echo =TRUE,warning =FALSE,message =FALSE)# Vyhľadanie skutočnej CSV databázypriecinky <-unique(c(getwd(),".","..",file.path(path.expand("~"), "Downloads"),file.path(path.expand("~"), "Desktop"),file.path(path.expand("~"), "Documents")))subory <-unlist(lapply(priecinky, function(p) {if (dir.exists(p)) {list.files( p,pattern ="\\.csv$",full.names =TRUE,ignore.case =TRUE ) } else {character(0) }}), use.names =FALSE)subory <-unique(subory)kandidati <- subory[grepl("global.data.on.sustainable.energy",basename(subory),ignore.case =TRUE )]# Overenie, či nájdený súbor obsahuje správne údajepovinne <-c("Entity","Year","Electricity from renewables (TWh)","Electricity from fossil fuels (TWh)","Electricity from nuclear (TWh)","Renewable energy share in the total final energy consumption (%)","Value_co2_emissions_kt_by_country","gdp_per_capita")energia <-NULLfor (subor in kandidati) { pokus <-tryCatch(read.csv( subor,check.names =FALSE,stringsAsFactors =FALSE,na.strings =c("", "NA", "N/A") ),error =function(e) NULL )if (!is.null(pokus) &&all(povinne %in%names(pokus))) { energia <- pokusbreak }}if (is.null(energia)) {stop("Databáza sa nenašla. Vlož súbor ","'global-data-on-sustainable-energy (1).csv' ","do rovnakého priečinka ako QMD súbor." )}# Výber premenných z pôvodnej databázyudaje1 <- energia[, povinne]names(udaje1) <-c("Krajina","Rok","Obnovitelna","Fosilna","Jadrova","Podiel","EmisieCO2","HDP")# Prevod numerických údajovfor (p innames(udaje1)[-1]) { udaje1[[p]] <-suppressWarnings(as.numeric(as.character(udaje1[[p]])) )}# Výber Slovenskaslovensko <-subset( udaje1, Krajina =="Slovakia")slovensko <- slovensko[order(slovensko$Rok),]rownames(slovensko) <-NULLif (nrow(slovensko) <5) {stop("Nedostatok údajov o Slovensku.")}cat("Databáza úspešne načítaná:",nrow(energia),"riadkov.")
Databáza úspešne načítaná: 3649 riadkov.
Úvod
V tomto cvičení sa venujem čisteniu a analýze údajov v programovacom jazyku R. Pokračujem vo svojej téme Dátová analýza pre udržateľnú energetiku.
Cieľom je pracovať so skutočnou databázou, upravovať názvy premenných, identifikovať chýbajúce hodnoty, dopĺňať ich a následne vytvárať grafy, tabuľky a štatistické modely.
Používam databázu Global Data on Sustainable Energy (2000–2020) z platformy Kaggle.
Na rozdiel od ilustračných príkladov pracujem so skutočnými historickými údajmi o výrobe elektriny a ďalších energetických ukazovateľoch.
Entity Year Access to electricity (% of population)
1 Afghanistan 2000 1.613591
2 Afghanistan 2001 4.074574
3 Afghanistan 2002 9.409158
4 Afghanistan 2003 14.738506
5 Afghanistan 2004 20.064968
6 Afghanistan 2005 25.390894
Access to clean fuels for cooking
1 6.2
2 7.2
3 8.2
4 9.5
5 10.9
6 12.2
Renewable-electricity-generating-capacity-per-capita
1 9.22
2 8.86
3 8.47
4 8.09
5 7.75
6 7.51
Financial flows to developing countries (US $)
1 20000
2 130000
3 3950000
4 25970000
5 NA
6 9830000
Renewable energy share in the total final energy consumption (%)
1 44.99
2 45.60
3 37.83
4 36.66
5 44.24
6 33.88
Electricity from fossil fuels (TWh) Electricity from nuclear (TWh)
1 0.16 0
2 0.09 0
3 0.13 0
4 0.31 0
5 0.33 0
6 0.34 0
Electricity from renewables (TWh) Low-carbon electricity (% electricity)
1 0.31 65.95744
2 0.50 84.74577
3 0.56 81.15942
4 0.63 67.02128
5 0.56 62.92135
6 0.59 63.44086
Primary energy consumption per capita (kWh/person)
1 302.5948
2 236.8919
3 210.8622
4 229.9682
5 204.2312
6 252.0691
Energy intensity level of primary energy (MJ/$2017 PPP GDP)
1 1.64
2 1.74
3 1.40
4 1.40
5 1.20
6 1.41
Value_co2_emissions_kt_by_country Renewables (% equivalent primary energy)
1 760 NA
2 730 NA
3 1030 NA
4 1220 NA
5 1030 NA
6 1550 NA
gdp_growth gdp_per_capita Density\\n(P/Km2) Land Area(Km2) Latitude Longitude
1 NA NA 60 652230 33.93911 67.70995
2 NA NA 60 652230 33.93911 67.70995
3 NA 179.4266 60 652230 33.93911 67.70995
4 8.832278 190.6838 60 652230 33.93911 67.70995
5 1.414118 211.3821 60 652230 33.93911 67.70995
6 11.229715 242.0313 60 652230 33.93911 67.70995
Výber energetických údajov
Z databázy vyberiem údaje o Slovensku za roky 2000 až 2020.
Kód
head(slovensko)
Krajina Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2 HDP
1 Slovakia 2000 4.61 9.68 16.49 3.73 NA NA
2 Slovakia 2001 5.08 9.65 17.10 6.00 NA NA
3 Slovakia 2002 5.42 8.81 17.95 5.48 NA NA
4 Slovakia 2003 3.58 9.52 17.86 5.35 NA NA
5 Slovakia 2004 4.13 9.29 17.03 6.25 NA NA
6 Slovakia 2005 4.68 8.93 17.73 6.31 NA NA
Zobrazím rozmery databázy.
Kód
dim(slovensko)
[1] 21 8
Import údajov
Pri práci so skutočnými databázami sa údaje často načítavajú zo súborov CSV.
V tomto prípade bola databáza načítaná v úvodnom bloku setup.
Skontrolujem jej štruktúru.
Kód
str(energia)
'data.frame': 3649 obs. of 21 variables:
$ Entity : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
$ Year : int 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 ...
$ Access to electricity (% of population) : num 1.61 4.07 9.41 14.74 20.06 ...
$ Access to clean fuels for cooking : num 6.2 7.2 8.2 9.5 10.9 ...
$ Renewable-electricity-generating-capacity-per-capita : num 9.22 8.86 8.47 8.09 7.75 7.51 7.4 7.25 7.49 7.5 ...
$ Financial flows to developing countries (US $) : num 20000 130000 3950000 25970000 NA ...
$ Renewable energy share in the total final energy consumption (%): num 45 45.6 37.8 36.7 44.2 ...
$ Electricity from fossil fuels (TWh) : num 0.16 0.09 0.13 0.31 0.33 0.34 0.2 0.2 0.19 0.16 ...
$ Electricity from nuclear (TWh) : num 0 0 0 0 0 0 0 0 0 0 ...
$ Electricity from renewables (TWh) : num 0.31 0.5 0.56 0.63 0.56 0.59 0.64 0.75 0.54 0.78 ...
$ Low-carbon electricity (% electricity) : num 66 84.7 81.2 67 62.9 ...
$ Primary energy consumption per capita (kWh/person) : num 303 237 211 230 204 ...
$ Energy intensity level of primary energy (MJ/$2017 PPP GDP) : num 1.64 1.74 1.4 1.4 1.2 1.41 1.5 1.53 1.94 2.25 ...
$ Value_co2_emissions_kt_by_country : num 760 730 1030 1220 1030 ...
$ Renewables (% equivalent primary energy) : num NA NA NA NA NA NA NA NA NA NA ...
$ gdp_growth : num NA NA NA 8.83 1.41 ...
$ gdp_per_capita : num NA NA 179 191 211 ...
$ Density\n(P/Km2) : chr "60" "60" "60" "60" ...
$ Land Area(Km2) : int 652230 652230 652230 652230 652230 652230 652230 652230 652230 652230 ...
$ Latitude : num 33.9 33.9 33.9 33.9 33.9 ...
$ Longitude : num 67.7 67.7 67.7 67.7 67.7 ...
Zobrazím základné štatistiky.
Kód
summary(slovensko)
Krajina Rok Obnovitelna Fosilna Jadrova
Length :21 Min. :2000 Min. :3.580 Min. :5.280 Min. :14.08
N.unique : 1 1st Qu.:2005 1st Qu.:4.810 1st Qu.:6.220 1st Qu.:15.15
N.blank : 0 Median :2010 Median :5.420 Median :7.280 Median :15.49
Min.nchar: 8 Mean :2010 Mean :5.442 Mean :7.358 Mean :15.98
Max.nchar: 8 3rd Qu.:2015 3rd Qu.:6.240 3rd Qu.:8.810 3rd Qu.:17.03
Max. :2020 Max. :6.850 Max. :9.680 Max. :18.01
Podiel EmisieCO2 HDP
Min. : 3.730 Min. : NA Min. : NA
1st Qu.: 6.295 1st Qu.: NA 1st Qu.: NA
Median :10.140 Median : NA Median : NA
Mean : 9.429 Mean :NaN Mean :NaN
3rd Qu.:12.287 3rd Qu.: NA 3rd Qu.: NA
Max. :17.640 Max. : NA Max. : NA
NAs :1 NAs :21 NAs :21
2. Upravovanie názvov premenných
Pôvodné názvy
Najskôr si uložím pôvodné názvy stĺpcov vybraných z CSV.
Kód
old_names <- povinneold_names
[1] "Entity"
[2] "Year"
[3] "Electricity from renewables (TWh)"
[4] "Electricity from fossil fuels (TWh)"
[5] "Electricity from nuclear (TWh)"
[6] "Renewable energy share in the total final energy consumption (%)"
[7] "Value_co2_emissions_kt_by_country"
[8] "gdp_per_capita"
Úprava názvov
Názvy premenných upravím pomocou funkcie make.names(), aby boli použiteľné v programovacom jazyku R.
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2 HDP
1 2000 4.61 9.68 16.49 3.73 NA NA
2 2001 5.08 9.65 17.10 6.00 NA NA
3 2002 5.42 8.81 17.95 5.48 NA NA
4 2003 3.58 9.52 17.86 5.35 NA NA
5 2004 4.13 9.29 17.03 6.25 NA NA
6 2005 4.68 8.93 17.73 6.31 NA NA
Nahradenie chýbajúcich hodnôt priemerom
Vytvorím kópiu databázy a chýbajúce numerické hodnoty nahradím priemerom danej premennej.
Kód
udaje_priemer <- udaje_slovenskonumericke_stlpce <-setdiff(names(udaje_priemer),"Rok")for (stlpec in numericke_stlpce) { hodnoty <- udaje_priemer[[stlpec]]if (any(!is.na(hodnoty))) { priemer <-mean( hodnoty,na.rm =TRUE ) hodnoty[is.na(hodnoty)] <- priemer } udaje_priemer[[stlpec]] <- hodnoty}head(udaje_priemer)
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2 HDP
1 2000 4.61 9.68 16.49 3.73 NA NA
2 2001 5.08 9.65 17.10 6.00 NA NA
3 2002 5.42 8.81 17.95 5.48 NA NA
4 2003 3.58 9.52 17.86 5.35 NA NA
5 2004 4.13 9.29 17.03 6.25 NA NA
6 2005 4.68 8.93 17.73 6.31 NA NA
Kontrola po doplnení priemerom
Kód
colSums(is.na(udaje_priemer))
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2
0 0 0 0 0 21
HDP
21
Lineárna interpolácia
Pri časových údajoch môžem použiť interpoláciu medzi známymi hodnotami v susedných rokoch.
Interpoláciu vykonám samostatne pre každú numerickú premennú.
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2 HDP
1 2000 4.61 9.68 16.49 3.73 NA NA
2 2001 5.08 9.65 17.10 6.00 NA NA
3 2002 5.42 8.81 17.95 5.48 NA NA
4 2003 3.58 9.52 17.86 5.35 NA NA
5 2004 4.13 9.29 17.03 6.25 NA NA
6 2005 4.68 8.93 17.73 6.31 NA NA
Kontrola po interpolácii
Kód
colSums(is.na(udaje_interpolacia))
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2
0 0 0 0 0 21
HDP
21
Porovnanie metód
Porovnám pôvodné údaje o výrobe obnoviteľnej elektriny s hodnotami doplnenými priemerom a interpoláciou.
Lineárna interpolácia zohľadňuje časové poradie pozorovaní. Je však potrebné uvedomiť si, že interpolované hodnoty predstavujú odhady, nie skutočné merania.
Ak pôvodná premenná neobsahuje chýbajúce hodnoty, obe metódy ponechajú jej hodnoty nezmenené.
6. Príprava vyčistenej databázy
Na ďalšiu analýzu použijem databázu s interpolovanými hodnotami.
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2 HDP
1 2000 4.61 9.68 16.49 3.73 NA NA
2 2001 5.08 9.65 17.10 6.00 NA NA
3 2002 5.42 8.81 17.95 5.48 NA NA
4 2003 3.58 9.52 17.86 5.35 NA NA
5 2004 4.13 9.29 17.03 6.25 NA NA
6 2005 4.68 8.93 17.73 6.31 NA NA
Vytvorenie novej premennej
Vypočítam celkovú výrobu elektriny zo sledovaných zdrojov.
Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2 HDP CelkovaVyroba
1 2000 4.61 9.68 16.49 3.73 NA NA 30.78
2 2001 5.08 9.65 17.10 6.00 NA NA 31.83
3 2002 5.42 8.81 17.95 5.48 NA NA 32.18
4 2003 3.58 9.52 17.86 5.35 NA NA 30.96
5 2004 4.13 9.29 17.03 6.25 NA NA 30.45
6 2005 4.68 8.93 17.73 6.31 NA NA 31.34
Výpočet podielu obnoviteľnej elektriny
Vypočítam podiel obnoviteľnej elektriny na súčte výroby z obnoviteľných, fosílnych a jadrových zdrojov.
Obnovitelna Fosilna Jadrova Podiel
Min. :3.580 Min. :5.280 Min. :14.08 Min. : 3.73
1st Qu.:4.810 1st Qu.:6.220 1st Qu.:15.15 1st Qu.: 6.31
Median :5.420 Median :7.280 Median :15.49 Median :10.28
Mean :5.442 Mean :7.358 Mean :15.98 Mean : 9.82
3rd Qu.:6.240 3rd Qu.:8.810 3rd Qu.:17.03 3rd Qu.:12.43
Max. :6.850 Max. :9.680 Max. :18.01 Max. :17.64
9. Testovanie hypotéz
T-test: Porovnanie obnoviteľnej výroby v dvoch obdobiach
Pomocou t-testu porovnám priemernú výrobu obnoviteľnej elektriny v rokoch 2000 až 2009 a 2010 až 2020.
Welch Two Sample t-test
data: prve_obdobie and druhe_obdobie
t = -6.272, df = 18.995, p-value = 5.07e-06
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.9577746 -0.9780435
sample estimates:
mean of x mean of y
4.673000 6.140909
Nulová hypotéza predpokladá rovnakú priemernú výrobu obnoviteľnej elektriny v oboch obdobiach.
Pri interpretácii je potrebné zohľadniť, že ide o historické časové údaje, pri ktorých nemusí byť splnená nezávislosť pozorovaní.
ANOVA: Porovnanie zdrojov elektriny
Pomocou analýzy rozptylu porovnám výrobu obnoviteľnej, fosílnej a jadrovej elektriny.
Df Sum Sq Mean Sq F value Pr(>F)
Zdroj 2 1322.8 661.4 427.3 <2e-16 ***
Residuals 60 92.9 1.5
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ANOVA porovnáva priemerné hodnoty viacerých skupín. Keďže jednotlivé roky a zdroje energie môžu byť navzájom závislé, ide o orientačnú didaktickú analýzu.
10. Lineárna regresia
Modelovanie výroby obnoviteľnej elektriny
Pomocou lineárnej regresie preskúmam vzťah medzi výrobou obnoviteľnej elektriny, rokom a výrobou elektriny z ostatných sledovaných zdrojov.
Regresný model umožňuje analyzovať štatistické vzťahy medzi energetickými premennými. Výsledky však nedokazujú príčinnú súvislosť a nemusia predstavovať spoľahlivú predpoveď budúcej výroby.
11. Výber databázy na ďalšie hodiny
Na ďalšie hodiny som si vybral databázu Global Data on Sustainable Energy (2000–2020).
Databáza obsahuje historické údaje o energetike jednotlivých krajín.
Pri ďalšej analýze plánujem pracovať najmä s týmito premennými:
krajina,
rok pozorovania,
výroba elektriny z obnoviteľných zdrojov,
výroba elektriny z fosílnych palív,
výroba jadrovej elektriny,
podiel obnoviteľnej energie,
emisie CO₂,
HDP na obyvateľa.
Chcem skúmať vývoj udržateľnej energetiky na Slovensku a porovnávať ho s ďalšími krajinami.
Údaje budem analyzovať chronologicky a využívať pri tvorbe grafov, štatistických modelov a ďalšom čistení databáz.
V tomto cvičení som sa venoval čisteniu a analýze skutočnej databázy v programovacom jazyku R.
Na historických údajoch o udržateľnej energetike som demonštroval import CSV, úpravu názvov premenných, identifikáciu chýbajúcich hodnôt a ich dopĺňanie pomocou priemeru a lineárnej interpolácie.
Následne som vytvoril grafy, tabuľky základných štatistík a použil t-test, analýzu rozptylu a lineárnu regresiu.
Získané postupy budem môcť využiť pri ďalšom spracovaní a analýze údajov o udržateľnej energetike.