# cargando librerias y configurando phyton
library(reticulate)
## Warning: package 'reticulate' was built under R version 4.5.1
use_python("C:/Users/sebas/AppData/Local/R/cache/R/reticulate/uv/cache/archive-v0/KTxE2_xKA4FdAEopmHAdA/Scripts/python.exe",
required = TRUE)
py_config()
## python: C:/Users/sebas/AppData/Local/R/cache/R/reticulate/uv/cache/archive-v0/KTxE2_xKA4FdAEopmHAdA/Scripts/python.exe
## libpython: C:/Users/sebas/AppData/Local/R/cache/R/reticulate/uv/python/cpython-3.11.13-windows-x86_64-none/python311.dll
## pythonhome: C:/Users/sebas/AppData/Local/R/cache/R/reticulate/uv/cache/archive-v0/KTxE2_xKA4FdAEopmHAdA
## virtualenv: C:/Users/sebas/AppData/Local/R/cache/R/reticulate/uv/cache/archive-v0/KTxE2_xKA4FdAEopmHAdA/Scripts/activate_this.py
## version: 3.11.13 (main, Jul 11 2025, 22:36:59) [MSC v.1944 64 bit (AMD64)]
## Architecture: 64bit
## numpy: C:/Users/sebas/AppData/Local/R/cache/R/reticulate/uv/cache/archive-v0/KTxE2_xKA4FdAEopmHAdA/Lib/site-packages/numpy
## numpy_version: 2.3.3
##
## NOTE: Python version was forced by use_python() function
Parte A. Diferencias entre un vector en R y una lista en Python
append()
, remove()
, sort()
.Parte B. Diferencia entre data.frame en R y DataFrame en pandas (Python)
[filas, columnas]
y acceso con
$columna
..loc[]
(por
etiquetas) y .iloc[]
(por índices). También acceso con
df["col"]
o df.col
.numeros <- c(10, 25, 30, 15, 40)
nombres <- c("Ana", "Bruno", "Carlos", "Diana", "Elena")
edades <- c(22, 25, 23, 24, 22)
class(numeros)
## [1] "numeric"
estudiantes <- data.frame(nombre=nombres, edad=edades, notas=numeros, stringsAsFactors=FALSE)
estudiantes
## nombre edad notas
## 1 Ana 22 10
## 2 Bruno 25 25
## 3 Carlos 23 30
## 4 Diana 24 15
## 5 Elena 22 40
estudiantes[3, "nombre"]
## [1] "Carlos"
import pandas as pd
datos = {
'producto': ['Laptop', 'Mouse', 'Teclado', 'Monitor', 'Auriculares'],
'precio': [1200, 25, 75, 300, 150],
'stock': [10, 50, 30, 15, 25]
}
df = pd.DataFrame(datos)
df
## producto precio stock
## 0 Laptop 1200 10
## 1 Mouse 25 50
## 2 Teclado 75 30
## 3 Monitor 300 15
## 4 Auriculares 150 25
df[df["precio"] > 100]
## producto precio stock
## 0 Laptop 1200 10
## 3 Monitor 300 15
## 4 Auriculares 150 25
df["precio"].mean()
## np.float64(350.0)
df["categoria"] = ["Computadora", "Accesorio", "Accesorio", "Computadora", "Accesorio"]
df
## producto precio stock categoria
## 0 Laptop 1200 10 Computadora
## 1 Mouse 25 50 Accesorio
## 2 Teclado 75 30 Accesorio
## 3 Monitor 300 15 Computadora
## 4 Auriculares 150 25 Accesorio
categorizar_notas <- function(notas) {
categorias <- character(length(notas))
for (i in seq_along(notas)) {
n <- notas[i]
categorias[i] <- if (n >= 18 && n <= 20) "Excelente" else if (n >= 15 && n < 18) "Bueno" else if (n >= 11 && n < 15) "Regular" else if (n >= 0 && n < 11) "Deficiente" else "Nota invalida"
}
categorias
}
categorizar_notas(c(19,12,16,8,20,14))
## [1] "Excelente" "Regular" "Bueno" "Deficiente" "Excelente"
## [6] "Regular"
inventario = {'manzanas':50,'naranjas':30,'plátanos':0,'uvas':20}
for producto,cantidad in inventario.items():
print(f"{producto}: {cantidad}")
## manzanas: 50
## naranjas: 30
## plátanos: 0
## uvas: 20
for producto,cantidad in inventario.items():
if cantidad == 0:
print(producto,"ESTA AGOTADO")
elif cantidad < 25:
print(producto,"bajo stock",cantidad)
else:
print(producto,"stock ok",cantidad)
## manzanas stock ok 50
## naranjas stock ok 30
## plátanos ESTA AGOTADO
## uvas bajo stock 20
[p for p,c in inventario.items() if c <= 25]
## ['plátanos', 'uvas']
estadisticas_basicas <- function(v) list(media=mean(v), mediana=median(v), minimo=min(v), maximo=max(v))
estadisticas_basicas(c(10,20,30,40,50))
## $media
## [1] 30
##
## $mediana
## [1] 30
##
## $minimo
## [1] 10
##
## $maximo
## [1] 50
import statistics
def estadisticas_basicas_py(lst):
return {"media":statistics.mean(lst),"mediana":statistics.median(lst),"minimo":min(lst),"maximo":max(lst)}
estadisticas_basicas_py([10,20,30,40,50])
## {'media': 30, 'mediana': 30, 'minimo': 10, 'maximo': 50}
En R:
- install.packages("dplyr")
instala el paquete.
- library(dplyr)
lo carga.
En Python:
- pip install pandas
instala la librería.
- import pandas as pd
la importa.
# Ejemplo en R (comentado si no tienes dplyr instalado)
# library(dplyr)
# estudiantes %>% filter(promedio > 15)
# Ejemplo en Python
import pandas as pd
# df = pd.read_csv("estudiantes.csv")
ruta_csv <- "estudiantes.csv"
if (file.exists(ruta_csv)) {
estudiantes <- read.csv(ruta_csv, stringsAsFactors = FALSE)
message("Archivo estudiantes.csv cargado desde: ", normalizePath(ruta_csv))
} else {
message("Archivo 'estudiantes.csv' NO encontrado en ", getwd(), ". Se creará un dataset de ejemplo.")
estudiantes <- data.frame(
nombre = c("Ana","Bruno","Carlos","Diana","Elena"),
edad = c(22,25,23,24,22),
carrera = c("Economia","Ingenieria","Derecho","Medicina","Psicologia"),
promedio = c(16.5,14.2,17.8,13.0,15.6),
stringsAsFactors = FALSE
)
write.csv(estudiantes, "estudiantes_ejemplo_generado.csv", row.names = FALSE)
}
## Archivo 'estudiantes.csv' NO encontrado en C:/Users/sebas/OneDrive/Pictures/Desktop/seb/niversidad/prograest. Se creará un dataset de ejemplo.
knitr::kable(head(estudiantes))
nombre | edad | carrera | promedio |
---|---|---|---|
Ana | 22 | Economia | 16.5 |
Bruno | 25 | Ingenieria | 14.2 |
Carlos | 23 | Derecho | 17.8 |
Diana | 24 | Medicina | 13.0 |
Elena | 22 | Psicologia | 15.6 |
if ("promedio" %in% colnames(estudiantes)) {
aggregate(promedio ~ carrera, data = estudiantes, FUN = mean)
} else {
message("La tabla 'estudiantes' no tiene columna 'promedio'")
}
## carrera promedio
## 1 Derecho 17.8
## 2 Economia 16.5
## 3 Ingenieria 14.2
## 4 Medicina 13.0
## 5 Psicologia 15.6
estudiantes = pd.DataFrame({
"nombre":["Ana","Bruno","Carlos","Diana","Elena"],
"edad":[22,25,23,24,22],
"carrera":["Economia","Ingenieria","Derecho","Medicina","Psicologia"],
"promedio":[16.5,14.2,17.8,13.0,15.6]
})
estudiantes.groupby("carrera")["promedio"].mean().reset_index()
## carrera promedio
## 0 Derecho 17.8
## 1 Economia 16.5
## 2 Ingenieria 14.2
## 3 Medicina 13.0
## 4 Psicologia 15.6
datos_peru = {'departamento': ["Lima","Arequipa","La Libertad","Piura","Junín"],
'poblacion_2020': [10628470,1382730,1905301,2047954,1246038]}
dfp = pd.DataFrame(datos_peru)
total = dfp["poblacion_2020"].sum()
dfp["porcentaje"] = (dfp["poblacion_2020"]/total)*100
dfp["porcentaje"] = dfp["porcentaje"].round(2)
dfp
## departamento poblacion_2020 porcentaje
## 0 Lima 10628470 61.76
## 1 Arequipa 1382730 8.03
## 2 La Libertad 1905301 11.07
## 3 Piura 2047954 11.90
## 4 Junín 1246038 7.24
mas = dfp.loc[dfp["poblacion_2020"].idxmax(),"departamento"]
menos = dfp.loc[dfp["poblacion_2020"].idxmin(),"departamento"]
mas, menos
## ('Lima', 'Junín')
def categoria(p):
if p > 2000000: return "Alta densidad"
elif p >= 1000000: return "Media densidad"
else: return "Baja densidad"
dfp["categoria_densidad"] = dfp["poblacion_2020"].apply(categoria)
dfp
## departamento poblacion_2020 porcentaje categoria_densidad
## 0 Lima 10628470 61.76 Alta densidad
## 1 Arequipa 1382730 8.03 Media densidad
## 2 La Libertad 1905301 11.07 Media densidad
## 3 Piura 2047954 11.90 Alta densidad
## 4 Junín 1246038 7.24 Media densidad
Ventajas de R:
1. Ecosistema estadístico muy completo (ggplot2, dplyr).
2. Sintaxis clara para análisis y visualización.
Ventajas de Python:
1. Ecosistema de machine learning amplio (scikit-learn, TensorFlow,
PyTorch).
2. Lenguaje general y flexible, fácil de usar en producción.