CONTEXTO

##El conjunto de datos ofrece estadísticas mensuales de electricidad recopiladas por la Agencia Internacional de Energía (AIE) para diversos países y territorios alrededor del mundo. Cubre la generación de electricidad mensual desde 2010 hasta 2022 y reporta la producción en gigavatios-hora (GWh). Incluye una amplia gama de fuentes de energía, como hidroeléctrica, eólica, solar, geotérmica, nuclear, combustibles fósiles, entre otras. Estos datos son valiosos para analizar las tendencias globales y regionales en el consumo y producción de electricidad, así como para evaluar el impacto ambiental del sector eléctrico.

#VARIABLES

##COUNTRY: Nombre del país

##CODE_TIME: Un código que representa el mes y año (por ejemplo, JAN2010 para enero de 2010)

##TIME: El mes y año en un formato más legible para los humanos (por ejemplo, enero de 2010)

##YEAR: El año del dato

##MONTH: El mes del dato como un número (1-12)

##MONTH_NAME: El mes del dato como una cadena (por ejemplo, enero)

##PRODUCT: El tipo de producto energético (por ejemplo, Hidroeléctrica, Eólica, Solar)

##VALUE: La cantidad de electricidad generada en gigavatios-hora (GWh)

##DISPLAY_ORDER: El orden en el que se deben mostrar los productos

##yearToDate: La cantidad de electricidad generada para el año actual hasta el mes actual en GWh

##previousYearToDate: La cantidad de electricidad generada para el año anterior hasta el mes actual en GWh

##share: La participación del producto en la generación total de electricidad para el país en formato decimal.

library(readr)
df <- read_csv("dataset_energy.csv")
## Rows: 47159 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): COUNTRY, CODE_TIME, TIME, MONTH_NAME, PRODUCT
## dbl (7): YEAR, MONTH, VALUE, DISPLAY_ORDER, yearToDate, previousYearToDate, ...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
df
## # A tibble: 47,159 × 12
##    COUNTRY   CODE_TIME TIME   YEAR MONTH MONTH_NAME PRODUCT  VALUE DISPLAY_ORDER
##    <chr>     <chr>     <chr> <dbl> <dbl> <chr>      <chr>    <dbl>         <dbl>
##  1 Argentina JAN2020   Janu…  2020     1 January    Hydro   2393.              1
##  2 Argentina JAN2020   Janu…  2020     1 January    Wind     677.              2
##  3 Argentina JAN2020   Janu…  2020     1 January    Solar    106.              3
##  4 Argentina JAN2020   Janu…  2020     1 January    Geothe…    0               4
##  5 Argentina JAN2020   Janu…  2020     1 January    Other …    0               5
##  6 Argentina JAN2020   Janu…  2020     1 January    Nuclear  795.              6
##  7 Argentina JAN2020   Janu…  2020     1 January    Total … 8492.              7
##  8 Argentina JAN2020   Janu…  2020     1 January    Coal      61.3             8
##  9 Argentina JAN2020   Janu…  2020     1 January    Oil      901.              9
## 10 Argentina JAN2020   Janu…  2020     1 January    Natura… 7415.             10
## # ℹ 47,149 more rows
## # ℹ 3 more variables: yearToDate <dbl>, previousYearToDate <dbl>, share <dbl>
dim(df)
## [1] 47159    12
head(df)
## # A tibble: 6 × 12
##   COUNTRY   CODE_TIME TIME     YEAR MONTH MONTH_NAME PRODUCT VALUE DISPLAY_ORDER
##   <chr>     <chr>     <chr>   <dbl> <dbl> <chr>      <chr>   <dbl>         <dbl>
## 1 Argentina JAN2020   Januar…  2020     1 January    Hydro   2393.             1
## 2 Argentina JAN2020   Januar…  2020     1 January    Wind     677.             2
## 3 Argentina JAN2020   Januar…  2020     1 January    Solar    106.             3
## 4 Argentina JAN2020   Januar…  2020     1 January    Geothe…    0              4
## 5 Argentina JAN2020   Januar…  2020     1 January    Other …    0              5
## 6 Argentina JAN2020   Januar…  2020     1 January    Nuclear  795.             6
## # ℹ 3 more variables: yearToDate <dbl>, previousYearToDate <dbl>, share <dbl>
# Número de filas y columnas
dim(df)
## [1] 47159    12
# Solo número de filas
nrow(df)
## [1] 47159
# Solo número de columnas
ncol(df)
## [1] 12
# Número de valores nulos por columna
colSums(is.na(df))
##            COUNTRY          CODE_TIME               TIME               YEAR 
##                  0                  0                  0                  0 
##              MONTH         MONTH_NAME            PRODUCT              VALUE 
##                  0                  0                  0                  0 
##      DISPLAY_ORDER         yearToDate previousYearToDate              share 
##                  0                  0                230                  0
# Para obtener un resumen estadístico de cada columna
summary(df)
##    COUNTRY           CODE_TIME             TIME                YEAR     
##  Length:47159       Length:47159       Length:47159       Min.   :2020  
##  Class :character   Class :character   Class :character   1st Qu.:2020  
##  Mode  :character   Mode  :character   Mode  :character   Median :2021  
##                                                           Mean   :2021  
##                                                           3rd Qu.:2022  
##                                                           Max.   :2022  
##                                                                         
##      MONTH         MONTH_NAME          PRODUCT              VALUE          
##  Min.   : 1.000   Length:47159       Length:47159       Min.   :  -4745.4  
##  1st Qu.: 3.000   Class :character   Class :character   1st Qu.:     41.6  
##  Median : 6.000   Mode  :character   Mode  :character   Median :    653.4  
##  Mean   : 6.494                                         Mean   :  19007.5  
##  3rd Qu.: 9.000                                         3rd Qu.:   4399.8  
##  Max.   :12.000                                         Max.   :1001528.9  
##                                                                            
##  DISPLAY_ORDER    yearToDate       previousYearToDate     share         
##  Min.   : 1.0   Min.   :  -43970   Min.   :  -43970   Min.   :-3.07008  
##  1st Qu.: 8.0   1st Qu.:     522   1st Qu.:     225   1st Qu.: 0.00759  
##  Median :14.0   Median :    8150   Median :    3602   Median : 0.07696  
##  Mean   :14.2   Mean   :  228090   Mean   :  123652   Mean   : 0.27777  
##  3rd Qu.:21.0   3rd Qu.:   52784   3rd Qu.:   25793   3rd Qu.: 0.47476  
##  Max.   :27.0   Max.   :10799491   Max.   :10719428   Max.   : 4.07008  
##                                    NA's   :230
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(viridis)
## Loading required package: viridisLite
# Ordenar los productos según el valor promedio
order <- df %>%
  group_by(PRODUCT) %>%
  summarise(mean_value = mean(VALUE, na.rm = TRUE)) %>%
  arrange(desc(mean_value)) %>%
  pull(PRODUCT)

# Crear el gráfico
ggplot(df, aes(x = VALUE, y = factor(PRODUCT, levels = order))) +
  geom_bar(stat = "summary", fun = "mean", aes(fill = PRODUCT), color = "black") +
  labs(
    title = "Cantidad de energía clasificada según tipo",
    x = "Cantidad de Energía [GWh]",
    y = "Tipo de energía"
  ) +
  scale_fill_viridis_d(option = "C") +  # Paleta de colores adecuada
  theme_minimal(base_size = 10) +
  theme(plot.title = element_text(hjust = 0.5))

##El análisis visualiza la cantidad promedio de energía generada por diferentes tipos de productos energéticos. Los productos se ordenan de mayor a menor según su valor promedio de generación, representados mediante un gráfico de barras. La paleta de colores viridis mejora la distinción entre categorías, y el estilo minimalista del gráfico facilita su interpretación. Esta visualización permite identificar qué tipos de energía tienen mayor relevancia en términos de generación promedio.

library(ggplot2)
library(dplyr)

# Filtrar el DataFrame para obtener solo 'Net electricity production'
df_net <- df %>% 
  filter(PRODUCT == 'Net electricity production') %>%
  na.omit()  # Eliminar filas con NA

# Crear el gráfico de puntos y líneas
ggplot(df_net, aes(x = YEAR, y = VALUE)) +
  stat_summary(fun = mean, geom = "point", color = "blue", size = 3) +
  stat_summary(fun = mean, geom = "line", color = "blue", size = 1) +  # Línea para unir los puntos
  labs(
    title = "Evolución de la Producción Neta de Energía en Colombia (Resolución Anual)",
    x = "Año",
    y = "Energía Promedio [GWh]"
  ) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_x_continuous(breaks = seq(min(df_net$YEAR, na.rm = TRUE), 
                                   max(df_net$YEAR, na.rm = TRUE), 
                                   by = 1))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

##El gráfico presenta la tendencia de la producción neta de electricidad a lo largo de los años, utilizando puntos para representar el valor promedio anual de producción en gigavatios-hora (GWh). Los puntos están conectados por una línea azul que ilustra el cambio continuo en la producción neta de electricidad, ayudando a destacar tendencias o fluctuaciones a lo largo del tiempo. El eje X muestra los años de manera continua, con intervalos de un año para facilitar la interpretación. El eje Y muestra la energía promedio producida en gigavatios-hora (GWh) para la producción neta de electricidad en Colombia.

library(ggplot2)
library(dplyr)

# Filtrar el DataFrame para obtener solo 'Net electricity production'
df_net <- df %>%
  filter(PRODUCT == 'Net electricity production') %>%
  na.omit()  # Eliminar filas con NA

# Asegúrate de que 'MONTH_NAME' sea un factor con el orden correcto
df_net <- df_net %>%
  mutate(MONTH_NAME = factor(MONTH_NAME, levels = month.name))

# Crear el gráfico con puntos y líneas que los unen
ggplot(df_net, aes(x = MONTH_NAME, y = VALUE, group = 1)) +  
  geom_point(stat = "summary", fun = mean, size = 3, color = "blue") +
  geom_line(stat = "summary", fun = mean, size = 1, color = "blue") + 
  labs(
    title = "Producción Neta Mensual de Energía en Colombia",
    x = "Mes",
    y = "Energía Promedio [GWh]"
  ) +
  ylim(5000, 10000) +  # Ajustar el límite del eje y
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(hjust = 0.9))
## Warning: Removed 1585 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Removed 1585 rows containing non-finite outside the scale range
## (`stat_summary()`).

##El gráfico muestra la producción neta mensual de electricidad en Colombia, destacando la evolución promedio por mes. Los datos se filtran para incluir únicamente la producción neta de electricidad, eliminando valores faltantes. Los meses se ordenan de enero a diciembre en el eje X, mientras que el eje Y se limita entre 5,000 y 10,000 GWh. Puntos y líneas azules representan los valores promedio, facilitando la identificación de fluctuaciones a lo largo del año. El diseño minimalista y limpio mejora la claridad y permite un análisis sencillo de las tendencias mensuales en la producción de energía.

library(dplyr)

# Agrupar por 'PRODUCT' y sumar los valores
matrix <- df %>%
  group_by(PRODUCT) %>%
  summarise(total_value = sum(VALUE, na.rm = TRUE)) %>%  # Asegúrate de que 'VALUE' está correctamente escrito
  arrange(desc(total_value))

# Mostrar el resultado
print(matrix)
## # A tibble: 27 × 2
##    PRODUCT                    total_value
##    <chr>                            <dbl>
##  1 Net electricity production  134484902.
##  2 Electricity supplied        134456775.
##  3 Final consumption           121391585.
##  4 Non-renewables               91440198.
##  5 Total combustible fuels      73564745.
##  6 Fossil fuels                 69989694.
##  7 Low carbon                   64980414.
##  8 Renewables                   43044826.
##  9 Natural gas                  38366848.
## 10 Coal                         28232284.
## # ℹ 17 more rows
library(ggplot2)
library(dplyr)

# Calcular el total por producto
matrix <- df %>%
  group_by(PRODUCT) %>%
  summarise(total_value = sum(VALUE, na.rm = TRUE)) %>%
  arrange(desc(total_value))

# Crear el gráfico de barras
ggplot(matrix, aes(x = reorder(PRODUCT, total_value), y = total_value, fill = PRODUCT)) +
  geom_bar(stat = "identity") +
  labs(
    title = "Matriz energética de Colombia",
    x = "Producto",
    y = "Cantidad de Energía [GWh]"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",  # Ocultar la leyenda si es necesario
    axis.text.x = element_text(angle = 45, hjust = 1)  # Inclinar las etiquetas del eje x
  ) +
  geom_text(aes(label = sprintf("%.0f", total_value)), 
            position = position_stack(vjust = 0.5), 
            color = "white", size = 1)

##El gráfico presenta la matriz energética de Colombia, mostrando el total de energía generada por cada tipo de producto. Los datos se agrupan y se calculan los valores totales para cada producto energético. Las barras, ordenadas de mayor a menor, representan la cantidad de energía en gigavatios-hora (GWh) por producto, con etiquetas que indican los valores exactos. Las etiquetas del eje X se inclinan para facilitar la lectura, y el gráfico emplea un diseño minimalista sin leyenda para enfocarse en los datos. Este análisis permite identificar los productos energéticos más importantes en términos de generación total.

library(dplyr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
# Agrupar por 'PRODUCT' y sumar los valores
matrix <- df %>%
  group_by(PRODUCT) %>%
  summarise(total_value = sum(VALUE, na.rm = TRUE)) %>%
  arrange(desc(total_value))

# Calcular el porcentaje
total_sum <- sum(matrix$total_value)
matrix <- matrix %>%
  mutate(percentage = (total_value / total_sum) * 100)

print(matrix)
## # A tibble: 27 × 3
##    PRODUCT                    total_value percentage
##    <chr>                            <dbl>      <dbl>
##  1 Net electricity production  134484902.      15.0 
##  2 Electricity supplied        134456775.      15.0 
##  3 Final consumption           121391585.      13.5 
##  4 Non-renewables               91440198.      10.2 
##  5 Total combustible fuels      73564745.       8.21
##  6 Fossil fuels                 69989694.       7.81
##  7 Low carbon                   64980414.       7.25
##  8 Renewables                   43044826.       4.80
##  9 Natural gas                  38366848.       4.28
## 10 Coal                         28232284.       3.15
## # ℹ 17 more rows

##La producción neta de electricidad y la electricidad suministrada son las más significativas, con aproximadamente 134.48 millones GWh cada una, representando el 15.0% del total. El consumo final ocupa el tercer lugar con 121.39 millones GWh, equivalente al 13.54% del total. Las categorías de no renovables y combustibles fósiles también son relevantes, con 91.44 millones GWh (10.20%) y 69.99 millones GWh (7.81%), respectivamente. En contraste, las renovables tienen una participación menor, con 43.04 millones GWh, que representan solo el 4.80% del total. Este desglose resalta la importancia de las fuentes no renovables en la matriz energética de Colombia, en comparación con las fuentes renovables, que tienen una menor contribución.

library(ggplot2)
library(dplyr)

# Crear el data frame a partir de los datos proporcionados
suma <- data.frame(
  product = c("Renewables", "Non-renewables"),
  total_value = c(501011.136768, 194898.130874)
)

# Crear el gráfico de pastel
ggplot(suma, aes(x = "", y = total_value, fill = product)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar(theta = "y") +
  labs(
    title = "Proporción de producción de energía en Colombia\nRenovables vs No renovables",
    fill = "Tipo de Generación"
  ) +
  theme_void() +
  theme(
    plot.title = element_text(hjust = 0.5),
    legend.position = "right"
  ) +
  geom_text(aes(label = sprintf("%.1f%%", (total_value / sum(total_value)) * 100)),
            position = position_stack(vjust = 0.5))

##Se crea un gráfico de pastel utilizando los valores totales de energía generada por fuentes renovables y no renovables. Las fuentes renovables tienen un valor total de 501,011 GWh, mientras que las no renovables generan 194,898 GWh. Cada segmento del gráfico representa un tipo de energía, mostrando su proporción respecto al total. Las etiquetas dentro del gráfico indican el porcentaje de cada tipo de generación, calculado en función de la proporción que cada valor total representa sobre el total general. El gráfico tiene un diseño limpio con un título centrado y una leyenda situada a la derecha para indicar los tipos de generación. Este gráfico facilita la comparación visual entre la producción de energía renovable y no renovable en Colombia, destacando la mayor participación de las fuentes renovables en el total energético.

library(ggplot2)
library(dplyr)

# Crear el data frame con los datos proporcionados
df_ren <- data.frame(
  product = c("Hydro", "Combustible renewables", "Solar", "Wind", "Geothermal", "Other renewables"),
  value = c(484841.379477, 14550.226834, 1187.545802, 431.984655, 0, 0)
)

# Agrupar por 'product' y calcular la suma y media
suma <- df_ren %>%
  group_by(product) %>%
  summarise(total_value = sum(value, na.rm = TRUE))

order <- df_ren %>%
  group_by(product) %>%
  summarise(mean_value = mean(value, na.rm = TRUE)) %>%
  arrange(desc(mean_value)) %>%
  pull(product)

# Crear el gráfico de barras
ggplot(df_ren, aes(x = reorder(product, value), y = value)) +
  geom_bar(stat = "summary", fun = "mean", fill = "steelblue", color = "black") +
  labs(
    title = "Producción de energía. Fuentes Renovables",
    x = "Tipo de generación",
    y = "Energía promedio [GWh]"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(hjust = 0.5),
    axis.text.x = element_text(angle = 45, hjust = 1)
  ) +
  scale_x_discrete(limits = order)  # Ordenar las barras según 'order'

##Este gráfico muestra la producción de energía promedio en gigavatios-hora (GWh) por tipo de fuente renovable, como hidroeléctrica, renovables combustibles, solar, eólica, geotérmica, y otras. Las fuentes se agrupan por tipo y se ordenan según su valor promedio de producción, con la hidroeléctrica claramente dominando con más de 484,000 GWh. Las barras están ordenadas de mayor a menor, lo que facilita la comparación visual de la contribución de cada tipo de energía.

library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
# Crear un gráfico interactivo de series temporales
fig <- df %>%
  plot_ly(x = ~YEAR, y = ~VALUE, color = ~PRODUCT, type = 'scatter', mode = 'lines+markers') %>%
  layout(title = "Evolución de la Producción de Energía",
         xaxis = list(title = "Año"),
         yaxis = list(title = "Producción de Energía [GWh]"))

fig
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors

##El gráfico muestra cómo ha cambiado la producción de energía en gigavatios-hora (GWh) para distintos productos energéticos a lo largo del tiempo. Cada línea representa un producto energético diferente, con puntos marcados en cada año para destacar los valores de producción. El gráfico es interactivo, permitiendo a los usuarios explorar los datos de forma dinámica, resaltando o eliminando productos específicos para un análisis más detallado.

##Estos gráficos y análisis de datos energéticos pueden ser útiles en geología para evaluar los recursos energéticos de un país, especialmente en términos de su origen geológico. Al estudiar la producción de energías renovables (como hidroeléctrica, geotérmica, eólica) y no renovables (como combustibles fósiles), los geólogos pueden identificar las fuentes naturales subyacentes, como formaciones rocosas ricas en combustibles fósiles o áreas con alto potencial geotérmico. Además, permite monitorear cómo los recursos geológicos están siendo explotados y su impacto en el entorno natural.