#Introduccion
Este análisis explora datos sobre sesiones de carga de vehículos eléctricos (VE) para responder preguntas clave sobre eficiencia, costos y patrones de uso. Utilizando herramientas de R, se busca comprender factores como la relación entre características del vehículo, costos de carga y comportamientos de los usuarios, proporcionando insights útiles para optimizar la infraestructura y la experiencia de carga.
library(readxl)
data<-read_excel("C:/Users/Usuario/Downloads/Carros elec.xlsx")
# Eficiencia
# Creae una nueva columna
data <- data %>%
mutate(charging_efficiency = `Energy_Consumed_(kWh)` / `Charging_Duration(hours)`)
# Calcular eficiencia
efficiency_by_model <- data %>%
group_by(`Vehicle Model`) %>%
summarise(average_efficiency = mean(charging_efficiency, na.rm = TRUE))
print(efficiency_by_model)
## # A tibble: 5 × 2
## `Vehicle Model` average_efficiency
## <chr> <dbl>
## 1 BMW i3 26.5
## 2 Chevy Bolt 24.3
## 3 Hyundai Kona 24.8
## 4 Nissan Leaf 27.6
## 5 Tesla Model 3 28.6
# grafica
ggplot(efficiency_by_model, aes(x = `Vehicle Model`, y = average_efficiency)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Eficiencia de carga", x = "modelo de vehiculo", y = "Eficiencia (kWh/horas)")
# Costo y distncia
ggplot(data, aes(x = `Distance Driven (since last charge) (km)`, y = `Charging_Cost(USD)`)) +
geom_point() +
geom_smooth(method = "lm", color = "blue") +
theme_minimal() +
labs(title = "Relacion entre costo y distancia", x = "Distancia (km)", y = "Costo de carga (USD)")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 66 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 66 rows containing missing values or values outside the scale range
## (`geom_point()`).
# Costo por usuario
total_cost_by_user <- data %>%
group_by(`User ID`) %>%
summarise(total_cost = sum(`Charging_Cost(USD)`, na.rm = TRUE))
print(total_cost_by_user)
## # A tibble: 1,320 × 2
## `User ID` total_cost
## <chr> <dbl>
## 1 User_1 13.1
## 2 User_10 21.3
## 3 User_100 28.3
## 4 User_1000 20.0
## 5 User_1001 26.5
## 6 User_1002 8.86
## 7 User_1003 26.6
## 8 User_1004 13.0
## 9 User_1005 17.7
## 10 User_1006 8.16
## # ℹ 1,310 more rows
# Distncia promedio segun vehiculo
avg_distance <- data %>%
group_by(`Vehicle Model`) %>%
summarise(avg_distance_traveled = mean(`Distance Driven (since last charge) (km)`, na.rm = TRUE))
print(avg_distance)
## # A tibble: 5 × 2
## `Vehicle Model` avg_distance_traveled
## <chr> <dbl>
## 1 BMW i3 147.
## 2 Chevy Bolt 157.
## 3 Hyundai Kona 161.
## 4 Nissan Leaf 146.
## 5 Tesla Model 3 157.
# grafica
ggplot(avg_distance, aes(x = `Vehicle Model`, y = avg_distance_traveled)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Distancia promedio por modelo de vehiculo", x = "Modelo de vehiculo", y = "Distancia promedio (km)")
# Crear la columna de eficiencia de carga
data <- data %>%
mutate(charging_efficiency = `Energy_Consumed_(kWh)` / `Charging_Duration(hours)`)
# Verificar la relación entre temperatura y eficiencia de carga con un gráfico
ggplot(data, aes(x = `Temperature (°C)`, y = charging_efficiency)) +
geom_point() +
geom_smooth(method = "lm", color = "blue") +
theme_minimal() +
labs(
title = "relacion entre temperatura y eficiencia de carga",
x = "Temperature (°C)",
y = "Eficiencia de carga (kWh/hora)"
)
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 66 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 66 rows containing missing values or values outside the scale range
## (`geom_point()`).
# Relación entre el estado de carga inicial y el costo de carga
ggplot(data, aes(x = `State of Charge (Start %)`, y = `Charging_Cost(USD)`)) +
geom_point(alpha = 0.5) + # Gráfico de dispersión
geom_smooth(method = "lm", color = "green") + # Línea de regresión
theme_minimal() +
labs(
title = "Relacion entre el estado de carga inicial y el costo de carga",
x = "Estado de carga (% inicial)",
y = "Costo de carga (USD)"
)
## `geom_smooth()` using formula = 'y ~ x'
# Calcular la tasa de carga promedio por modelo de vehículo y tipo de cargador
avg_charging_rate <- data %>%
group_by(`Vehicle Model`, `Charger Type`) %>%
summarise(avg_charging_rate = mean(`Charging_Rate_(kW)`, na.rm = TRUE))
## `summarise()` has grouped output by 'Vehicle Model'. You can override using the
## `.groups` argument.
# Mostrar los resultados
print(avg_charging_rate)
## # A tibble: 15 × 3
## # Groups: Vehicle Model [5]
## `Vehicle Model` `Charger Type` avg_charging_rate
## <chr> <chr> <dbl>
## 1 BMW i3 DC Fast Charger 25.6
## 2 BMW i3 Level 1 26.5
## 3 BMW i3 Level 2 27.4
## 4 Chevy Bolt DC Fast Charger 22.5
## 5 Chevy Bolt Level 1 26.7
## 6 Chevy Bolt Level 2 25.5
## 7 Hyundai Kona DC Fast Charger 26.7
## 8 Hyundai Kona Level 1 26.5
## 9 Hyundai Kona Level 2 25.9
## 10 Nissan Leaf DC Fast Charger 27.6
## 11 Nissan Leaf Level 1 26.2
## 12 Nissan Leaf Level 2 26.0
## 13 Tesla Model 3 DC Fast Charger 25.1
## 14 Tesla Model 3 Level 1 24.5
## 15 Tesla Model 3 Level 2 26.6
# Crear un gráfico de barras para visualizar la información
ggplot(avg_charging_rate, aes(x = `Vehicle Model`, y = avg_charging_rate, fill = `Charger Type`)) +
geom_bar(stat = "identity", position = "dodge") +
theme_minimal() +
labs(
title = "Promedio de cargar segun tipo de cargador y modelo de vehiculo",
x = "Vehicle Model",
y = "Promedio de carga (kW)",
fill = "Tipode cargador"
)
#Porcentaje de sesiones de carga por tipo de usuario
user_type_percentage <- data %>%
group_by(`User Type`) %>%
summarise(Sessions = n()) %>%
mutate(Percentage = Sessions / sum(Sessions) * 100)
# Gráfico de pastel para los porcentajes
ggplot(user_type_percentage, aes(x = "", y = Percentage, fill = `User Type`)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
labs(title = "Porcentaje de Sesiones de Carga por Tipo de Usuario",
fill = "Tipo de Usuario") +
theme_void()
# Estado de carga promedio al inicio y final por modelo de vehículo
soc_summary <- data %>%
group_by(`Vehicle Model`) %>%
summarise(Avg_SOC_Start = mean(`State of Charge (Start %)`, na.rm = TRUE),
Avg_SOC_End = mean(`State of Charge (End %)`, na.rm = TRUE))
# Mostrar resultados
print(soc_summary)
## # A tibble: 5 × 3
## `Vehicle Model` Avg_SOC_Start Avg_SOC_End
## <chr> <dbl> <dbl>
## 1 BMW i3 49.8 75.3
## 2 Chevy Bolt 49.4 74.0
## 3 Hyundai Kona 50.5 75.4
## 4 Nissan Leaf 48.1 76.1
## 5 Tesla Model 3 47.8 74.9
# Pregunta 10: Impacto de la capacidad de la batería en la duración de carga
ggplot(data, aes(x = `Battery Capacity (kWh)`, y = `Charging_Duration(hours)`)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", color = "blue") +
labs(title = "Capacidad de Batería vs Duración de Carga",
x = "Capacidad de Batería (kWh)",
y = "Duración de Carga (horas)") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
#Eficiencia de carga por segmentos de temperatura y SOC
# Crear columnas de eficiencia y segmentos
data <- data %>%
mutate(Efficiency_kWh_hour = `Energy_Consumed_(kWh)` / `Charging_Duration(hours)`,
Temperature_Segment = cut(`Temperature (°C)`,
breaks = c(-Inf, 0, 15, 30, Inf),
labels = c("Below 0°C", "0-15°C", "15-30°C", "Above 30°C")),
SOC_Segment = cut(`State of Charge (Start %)`,
breaks = c(0, 25, 50, 75, 100),
labels = c("0-25%", "25-50%", "50-75%", "75-100%")))
# Calcular eficiencia promedio por segmento
efficiency_segments <- data %>%
group_by(Temperature_Segment, SOC_Segment) %>%
summarise(Avg_Efficiency = mean(Efficiency_kWh_hour, na.rm = TRUE))
## `summarise()` has grouped output by 'Temperature_Segment'. You can override
## using the `.groups` argument.
# Gráfico de barras
ggplot(efficiency_segments, aes(x = SOC_Segment, y = Avg_Efficiency, fill = Temperature_Segment)) +
geom_bar(stat = "identity", position = "dodge", color = "black") +
labs(title = "Eficiencia de Carga por Segmentos de Temperatura y SOC",
x = "Segmento de Estado de Carga Inicial",
y = "Eficiencia (kWh/h)",
fill = "Segmento de Temperatura") +
theme_minimal()